Elasticsearch 同一索引不同类型下同名字段的映射冲突实例

03 Apr 2015 Posted in  logstash

这个标题肯定绕晕很多人吧。具体说明一下场景就明白了:Nginx 和 Apache 的访问日志,因为都属于网站访问,所以写入到同一个索引的不同类型下,比方 logstash-accesslog-2015.04.03/nginxlogstash-accesslog-2015.04.03/apache。既然都是访问日志,肯定很多字段的内容含义是雷同的,比如 clientip, domain, urlpath 等等。其中 nginx 有一个变量叫 $request_time,apache 有一个变量叫 %T,乍看上去也是同义的,我就统一命名为 “requestTime” 了。这就是”同一索引(logstash-accesslog-YYYY.MM.DD)下不同类型(nginx,apache)的同名字段(requestTime)”。 继续阅读……


spark streaming 接收 kafka 数据示例

14 Mar 2015 Posted in  monitor

上个月曾经试过了用 spark streaming 读取 logstash 启动的 TCP Server 的数据。不过如果你有多台 logstash 的时候,这种方式就比较难办了 —— 即使你给 logstash 集群申请一个 VIP,也很难确定说转发完全符合。所以一般来说,更多的选择是采用 kafka 等队列方式由 spark streaming 去作为订阅者获取数据。 继续阅读……


Kibana 3 源码解析

14 Mar 2015 Posted in  logstash

本文之前已经拆分成章节发布在我的 《Kibana 权威指南》电子书上。欢迎移步观看全书其他章节。 继续阅读……


用 Kibana4 实现 PHP 慢日志函数堆栈分析

06 Mar 2015 Posted in  logstash

标题说是 PHP 的慢日志,其实所有函数堆栈的调试日志都可以做,比如 Java 的调试日志等等。要用 Kibana ,首先得把日志数据解析并输入到 Elasticsearch 里。所以,本文分为几个部分:多行合并,堆栈解析,Nested Aggs 处理,Kibana4 的可视化效果。 继续阅读……






spark streaming 的 transform 操作示例

14 Feb 2015 Posted in  monitor

前两篇,一篇说在 spark 里用 SQL 方便,一篇说 updatestateByKey 可以保留状态做推算。那么怎么综合起来呢?目前看到的 spark streaming 和 spark SQL 的示例全都是在 output 阶段的 foreachRDD 里才调用 SQL。实际在 output 之前,也是可以对 DStream 里的 RDD 做复杂的转换操作的,这就是 transform 方法。 继续阅读……


spark streaming 的 state 操作示例

14 Feb 2015 Posted in  monitor

前一篇学习演示了 spark streaming 的基础运用。下一步进入稍微难一点的,利用 checkpoint 来保留上一个窗口的状态,这样可以做到移动窗口的更新统计。 继续阅读……


spark streaming 和 spark sql 结合示例

13 Feb 2015 Posted in  monitor

之前在博客上演示过如果在 spark 里读取 elasticsearch 中的数据。自然往下一步想,是不是可以把一些原先需要定期请求 elasticsearch 的监控内容挪到 spark 里完成?这次就是探讨一下 spark streaming 环境上如何快速统计各维度的数据。期望目标是,可以实现对流数据的异常模式过滤。平常只需要简单调整模式即可。 继续阅读……


rsyslog 的 TCP 转发性能测试

12 Feb 2015 Posted in  performance

做一个日志手机系统,一般有两个思路。一个是提供一个多语言 SDK 包,然后开发者只需要找到对应的 SDK 加载即可;一个是采用最通用的日志传输协议,让开发者采用现成的协议实现。在通用协议里,最常见的,就是 syslog 协议。不过 syslog 过去采用 UDP 的印象太过深入人心,rsyslog 虽然宣称在测试用达到了每秒上百万的性能,也没多少人相信。那么,到底用 syslog 协议做跨网络传输,靠不靠谱?自己用压测,来证明一下! 继续阅读……


Python 批量写入 Elasticsearch 脚本

11 Feb 2015 Posted in  logstash

Elasticsearch 官方和社区提供了各种各样的客户端库,在之前的博客中,我陆陆续续提到和演示过 Perl 的,Javascript 的,Ruby 的。上周写了一版 Python 的,考虑到好像很难找到现成的示例,如何用 python 批量写数据进 Elasticsearch,今天一并贴上来。 继续阅读……


LogStash::Outputs::ElaticSearch 使用 http 协议时的内存泄露问题

10 Feb 2015 Posted in  logstash

Logstash 早年有三种不同的插件写数据到 Elasticsearch 中,分别采用 node,http 和 river 方式。从 1.4 版本以后,在重构的 LogStash::Outputs::ElasticSearch 插件中,通过 protocol 参数,完成了对多种方式的整合。其中,node 和 transport 方式,都是调用 Java 库的 API,而 http 方式,则调用的 REST API。 继续阅读……


JRuby 调用 maxmind-java 测试

22 Jan 2015 Posted in  logstash

GeoIP 是一个非常有用的信息,也是使用 ELKstack 时一般都会加上的过滤器插件。不过 geoip 插件的性能,有些时候却会成为整个系统的瓶颈。另一个问题,则是 GeoIP 数据文件的准确度,在国内比较头疼。即使你有一个自己处理出来的准确度较高的 IP 库,GeoIP 也没有提供现成的修改数据文件内容的工具。这个时候,MaxMind 公司的 GeoIP2 就进入我的视线了。 继续阅读……


扩展 Zabbix Web 页面功能

21 Jan 2015 Posted in  monitor

zabbix 是目前非常流行的一个开源监控系统。虽然核心代码是 C 的,却通过 PHP 的 web 端提供了非常方便的界面和 RPC 接口。可以看到很多讲如何通过 RPC 接口自动化 zabbix 操作的文章。不过,如果你想做的事情正好没有现成的接口或者界面,怎么办呢?这时候就感谢 zabbix 的后端是用的 MySQL 数据库了,这意味着我们可以很方便的扩展 Zabbix 页面和接口的功能。 继续阅读……


给 Kibana3 添加脚本化字段支持

06 Jan 2015 Posted in  logstash

Kibana4 中确实有不少让人眼前一亮的新特性,但是整体框架和使用思路上的重构实在让人较难上手。所以,把一些有需要的特性,port 回目前更稳定的 Kibana3 就有必要了。好在去年在自己 fork 中已经做了很多铺垫,包括一些基础库的版本更新。这些特性基本都只需要几行代码的变动就可以实现。 继续阅读……


2014 年度个人总结

26 Dec 2014 Posted in 

又到一年底,总结个人业绩和得失的时候了。于我个人而言,2014 年真是精彩纷呈。 继续阅读……



Kibana 中几个不同的 filtering

08 Dec 2014 Posted in  logstash

用过 kibana 的都知道,kibana 的图表上,可以直接点击某个值,就能自动添加这个过滤条件到 filtering 里,然后整个 dashboard 上所有的图表都会刷新成在这个过滤条件下的新状态。但是如果你要想自己手动添加 filtering 的时候,就会发现,自己添加的,写法好像跟自动生成的长得不太一样。 继续阅读……


利用脚本灵活定制 Elasticsearch 中的聚合效果

27 Nov 2014 Posted in  logstash

这几天阅读 Splunk 书,发现 Splunk 作为一个不需要提前结构化数据的处理工具,在自动发现的 “interesting fields” 以外,也提供了在页面通过正则临时产生新字段的能力。类似下面这样: 继续阅读……


利用动态仪表板实现kibana单图表导出功能

23 Nov 2014 Posted in  logstash

昨天和朋友聊天,说监控报表的话题,他们认为 kibana 的仪表板形式,还是偏重技术人员做监控的 screen 思路,对 erp 之类的报表不是很友好。要想跟其他系统结合,或者说嵌入到其他系统中,就必须得有单个图表的导出,或者 URL 引用方式。当时我直觉上的反应,就是这个没问题,可以通过 javascript 动态仪表板这个高级功能完成。回来试了一下,比我想的稍微复杂一点点,还是可以很轻松完成的。 继续阅读……


用 phantomjs 截图

20 Nov 2014 Posted in 

昨儿给 kibana 加上了 table 面板数据导出成 CSV 的功能。朋友们就问了,那其他面板的图表怎么导出保存呢?其实直接截图就好了嘛…… 继续阅读……


在 kibana 里实现去重计数

19 Nov 2014 Posted in  logstash

如何在 elk 里统计或者展示去重计数,是一个持续很久的需求了。几乎每个月都会有新手提问题说:“我怎么在 kibana 里统计网站 UV 啊?”可惜这个问题的回答总是:做不到…… 继续阅读……