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 啊?”可惜这个问题的回答总是:做不到…… 继续阅读……



用 perl6-bench 做 perl6 性能对比

28 Oct 2014 Posted in  perl

Perl6 成员上周在奥地利大会上做了一次大聚集,写了不少博客讲过去几个月的优化以及未来几个月的优化。但是我发现似乎从8月以来就一直没有正式的 perl6-bench 的图表报告了。于是想:干脆自己跑一把吧。 继续阅读……


ESCC 参会笔记

27 Oct 2014 Posted in  elasticsearch

10 月 25 号举办了 ESCC(ElasticSearch China Conference)。作为个人习惯,稍作记录。 继续阅读……


在终端命令行上调试 grok 表达式

19 Oct 2014 Posted in  logstash

用 logstash 的人都知道在 http://grokdebug.herokuapp.com 上面调试 grok 正则表达式。现在问题来了:翻墙技术哪家强? 页面中用到了来自 google 域名的 js 文件,所以访问经常性失败。所以,在终端上通过命令行方式快速调试成了必需品。 继续阅读……


Rsyslog 性能数据 impstats 直接写入 Elasticsearch

19 Oct 2014 Posted in  logstash

Rsyslog 的性能数据,可以通过自带的 impstats 插件输出。但是在用的比较复杂的场景下,每次输出都会有好几十个 action 的各种状态,肉眼观察变得比较困难,这时候,我们可以直接输出给 Elasticsearch ,然后利用 Kibana 做快速搜索和分析。 继续阅读……


LogStash::Inputs::Syslog 性能测试与优化

18 Oct 2014 Posted in  logstash

最近因为项目需要,必须想办法提高 logstash indexer 接收 rsyslog 转发数据的性能。首先,就是要了解 logstash 到底能收多快? 继续阅读……


在 JRuby 上用 netty 模拟 eventmachine

17 Oct 2014 Posted in  ruby

上一篇说到在 JRuby 上利用 netty 库实现事件驱动。事实上,为了让 Ruby 程序员更习惯,foxbat 模块是把 netty 库封装成 eventmachine 的接口来提供给用户使用的。所以,我们可以把程序写得更通用一些: 继续阅读……