Kibana4 服务器端插件开发

27 Jan 2016 Posted in  logstash

我在 ELK Stack 中文指南的 visualize 解析一节介绍了如何给 Kibana4 开发浏览器端的可视化插件。Kibana4 跟 Kibana3 比,最大的一个变化是有了独立的 node.js 服务器端。那么同样的,也就有了服务器端的 Kibana4 插件。最明显的一个场景:我们可以在 node.js 里跑定时器做 Elasticsearch 的告警逻辑了! 继续阅读……


2015 年度个人总结

27 Dec 2015 Posted in 

又一年过去了。2015 年在博客上发表文章的时间大幅度减少,全年只写了 23 篇博客,其实还有一小半是翻译。但是个人总结还是要写的,写在博客上,因为别的平台肯定不适合发这个…… 继续阅读……


Rsyslog 的 mmnormalize 模块用法

25 Nov 2015 Posted in  rsyslog

mmnormalize 是 Rsyslog 内置的一种数据解析的方案,甚至有自己的官网:http://www.liblognorm.com可以阅读相关用法细节。它既不像 Rsyslog 的 rainerscript 那样采用 ERE 类型的简单正则,也不像 Logstash的 Grok 那样采用 PCRE 类型的复杂正则(一度通过添加 regex parser 引入过 PCRE,后来又删了),而是自己设计了一套方式,其最核心的匹配语法就是 %char-to: 这种“向后匹配直到*为止”。下面是一段解析 nginx 访问日志的 mmnormalize 配置,相信大家第一眼看上去都会晕: 继续阅读……


SIREn 插件试用

29 Oct 2015 Posted in  elasticsearch

SIREn 是一个基于 Lucene 做的,专门针对 nested object 数据做优化的方案。其官网地址:http://siren.solutions。SIREn 自己并不提供完整的软件,而是以 Solr 或者 Elasticsearch 插件的形式存在。在 SIREn 官网首页写着,自己是 trush schemaless,high performance nested query。而我之前已经写博客说过,Elasticsearch 的 schemaless 是有限制的,同一个 index 下,field 的 mapping 是必须唯一一致的。否则,或者写入失败,或者搜索异常。 继续阅读……


ESCC 参会笔记

25 Oct 2015 Posted in  elasticsearch

2015 年 10 月 25 日,ESCC 2015 上海站召开,感谢携程的大力支持,让我得以参与,参会笔记如下: 继续阅读……


ESCC 参会笔记

20 Oct 2015 Posted in  elasticsearch

10 月 17 号举办了第四届 ESCC(ElasticSearch China Conference) 北京站。作为个人习惯,稍作记录。 继续阅读……


rsyslog 中 if 条件判断的限制

24 Sep 2015 Posted in  logstash

Rsyslog 从 v6 以后,实现了全新的 rainerscript 语法,数据处理灵活度大大提高。我最近一直在把 logstash 的解析配置迁移到 rsyslog 中完成。结果今天碰到一个非常好玩的地方。由此也说明了,一切 DSL,都不要想当然的觉得它会有跟编程语言完全一样的行为。 继续阅读……



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 中已经做了很多铺垫,包括一些基础库的版本更新。这些特性基本都只需要几行代码的变动就可以实现。 继续阅读……