山寨一个 Splunk 的 source 上下文查看功能

29 Aug 2014 Posted in  logstash

跟很多朋友在聊 elk stack 的时候,都会不知不觉的开始跟 Splunk 做对比。最常见的两个抱怨就是:Splunk 的搜索构建语法 比 Kibana 方便,以及 Splunk 搜索出来的消息可以通过点击 Source 按钮查看其原始日志中的前后几条日志。 继续阅读……


用 ES 的 RangeFacets 接口实现一个查看区间占比的 Kibana 面板

18 Aug 2014 Posted in  logstash

公司用 kibana 的同事提出一个需求,希望查看响应时间在不同区间内占比的饼图。第一想法是用 1.3.0 新加的 percentile rank aggregation 接口。不过仔细想想,其实并不合适 —— 这个接口目的是计算固定的 [0 TO $value] 的比例。不同的区间反而还得自己做减法来计算。稍微查了一下,更适合的做法是专门的 range aggregation。考虑到 kibana 内大多数还是用 facet 接口,这里也沿用:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-facets-range-facet.html继续阅读……


Kibana 动态仪表板的使用

28 Jul 2014 Posted in  logstash

半年前,Kibana3.4 版刚出来的时候,曾经在官方博客上描述了一个新功能,当时我的翻译见:【翻译】Kibana3 里程碑 4继续阅读……


在 MacBook 上使用 PDL 绘图

27 Jul 2014 Posted in  perl

之前在 Linux 服务器上使用 PDL,主要是一些矩阵函数,这次准备在个人电脑上使用 PDL,尤其是本身的绘图功能,其一目的就是导出 zabbix 中存储的监控数据,通过 PDL 绘图观察其季节性分布情况。 继续阅读……


Rex::Test::Spec 模块

08 Jul 2014 Posted in  perl

上篇说了 serverspec 工具,我一直对 Rspec 的语法蛮有好感的,于是昨晚花了点时间模仿这个给 Rex 写了个类似的工具,叫 Rex::Test::Spec,源代码地址见:https://github.com/chenryn/Rex--Test--Spec继续阅读……


Serverspec 工具介绍

13 Jun 2014 Posted in  devops

去年曾经写过一篇文章里提到做 puppet 的测试,用的是 rspec-puppet 工具。不过这个工具的作用只是能确保在 Puppet Master 上你撰写的 .pp 文件可以按照你的预期正常编译完毕,并不代表真实的节点就是按照这个状态维护的。所以今天介绍另一个工具,Serverspec,它拥有和 rspec-puppet 类似的语法(都是 Rspec 衍生品),同时又是真的 SSH 到远程主机上去做测试!官网见:http://serverspec.org继续阅读……


用 Redis 做分布式 DNS/HTTP 检测汇总系统

13 Jun 2014 Posted in  perl

一年前搞的一套小脚本,今天翻博客发现没发过,现在发上来好了。主要背景是这样:考虑到有 DNS 和 HTTP 劫持需要监控,但是很多 DNS 服务器对非本区域本运营商的来源请求是拒绝做出响应的,所以得把监控点分散到各地去。其实做这个事情用 nagios 的分布式就足够了,不过如果想做即时触发的紧急任务,就算在 nagios 页面上点击立刻执行,到返回全部结果也得有一阵子。所以选择了自己写一套分布式的异步系统。 继续阅读……


Rex 简明手册

12 Jun 2014 Posted in  devops

Rex 是 Perl 编写的基于 SSH 链接的集群配置管理系统,语法上类似 Puppet DSL。官网中文版见 http://rex.perl-china.com 。本文仅为本人在部门 Wiki 上编写的简介性文档。 继续阅读……


PerlDancer 框架笔记

12 Jun 2014 Posted in  perl

Dancer 是 Perl 的 web 开发框架,在 metacpan 上有 100 多个 like。其语法结构都起源自 Ruby 的 sinatra 框架,sinatra 曾经在自己官网上悬挂“perldancer is good”标语以示对 perldancer 的支持。Dancer 官网见: http://perldancer.org/ 本文系本人在部门 Wiki 上稍微写的几行介绍性质的笔记。 继续阅读……


Perl 编程的个人惯例

12 Jun 2014 Posted in  perl

Perl 代码规范可以参考著名的《Perl 最佳实践》一书。当然,PBP 上的规定比较严格,实际生活中绝对多数 Perl 程序都无法通过以 PBP 规范编写的 Perl::Critic 模块的校验。本文仅为本人在部门 Wiki 上以部分常见用法作为示例的介绍性文档。 继续阅读……


用 LEK 组合处理 Nginx 访问日志

11 Jun 2014 Posted in  logstash

Tengine 支持通过 syslog 方式发送日志(现在 Nginx 官方也支持了),所以可以通过 syslog 发送访问日志到 logstash 平台上,这种做法相对来说对线上服务器影响最小。最近折腾这件事情,一路碰到几个难点,把解决和优化思路记录一下。 继续阅读……


配合 avbot 的 HTTP 接口做自动应答的 Perl 脚本

08 Jun 2014 Posted in  perl

前两天博客里介绍了 avbot,其中提到 avbot 提供了 HTTP 接口可以收发信息。那么,我们就可以自己写脚本来实现比原先的 .qqbot help 更详细的自动应答啦。今晚有空就写了几行 Perl ,实现了一个简单的扩展: 继续阅读……


用 Perl5 改写 skyline 异常检测算法

04 Jun 2014 Posted in  monitor

一直以来都知道 Perl5 里也有类似 numpy 的库叫 PDL,但是因为上手资料比较少,官网文档比较烂,就没认真看过。这次因为要了解 skyline 里用到的 9 种异常检测算法的具体原理,正好一一对照重写一下,当做是学习 PDL 了。 继续阅读……


用 avbot 机器人记录 QQ 群聊天记录

04 Jun 2014 Posted in  devops

这是一件蛮有趣的事情。我因为做 logstash 的 QQ 群管理员,碰到了一个幸福的烦恼:群里有不少高水平且乐于分享的朋友时常给人解答问题,而且一来一回的能牵扯出来不少让人眼前一亮的实践,但是 QQ 聊天记录不像邮件列表和 IRC 那样可以很方便的长期保存共享给后来人学习查找!这简直是国内参与开源技术最头疼的一件事情了,知识没法复用,偏偏越是需要这些知识的人,越是喜欢通过 QQ 来寻求帮助!前两天偶然想到,其实可以通过机器人潜水进来获取聊天记录,然后发布出来!询问了一下 @比尔盖子V 童鞋,他推荐给我 avbot 项目。#妈蛋这名字怎能不吐槽# 继续阅读……


直接从 elasticsearch 获取数据进入 skyline 异常检测

04 Jun 2014 Posted in  monitor

这几天搭建 elasticsearch 集群做日志分析,终于有机会可以实际跑一下 skyline 的效果。不过比较麻烦的事情是,skyline 是一个比较完备的系统而不是插件,要求我们把数据通过 msgpack 发过去存到 redis 里。这是个很没有道理的做法,早在去年刚看到这个项目的时候我就在博客里写下了愿景是应该用 elasticsearch 替换掉 redis。等了这么久没等到,干脆就自己动手实现。修改后,skyline 其余的程序完全可以直接扔掉,只留下这一个脚本定时运行就够了: 继续阅读……


巧用 Puppet 的 stdlib 库

28 May 2014 Posted in  devops

这几天上线机器给 Elasticsearch 集群扩容,开始撰写 Puppet 的 elasticsearch 类来规范化管理。这里碰到一个小问题,相信在很多大容量集群的机器上都会有。那就是每台机器上都挂载有十几二十块磁盘,怎么用 Puppet 给快速方便的创建各磁盘上的工作目录呢? 继续阅读……


XS 初体验

20 May 2014 Posted in  perl

今天翻 ganglia 源代码发现两年前加上了 perl_module支持,不过跟 python_module 相比,descriptors 里的 call_back 不是真的写作回调函数而是写作和实际函数同名的字符串,这点让我觉得很别扭和奇怪,于是想到去看看 gmond 里内嵌的 perl 解释程序是怎么做这步的。顺带就第一次动手写了一点 XS 代码,这里一并发上来,留作存档。 继续阅读……


给 Kibana 实现百分比统计图表

17 May 2014 Posted in  logstash

kibana 图表类型中有个 stats 类型,返回对应请求的某指定数值字段的数学统计值,包括最大值、最小值、平均值、方差和标准差(当前通过 logstash-1.4.1 分发的 kibana 版本还只支持单列显示,前天,即 5 月 15 日刚更新了 Kibana 3.1 版,支持多列同时显示)。这个 stats 图表是利用 Elasticsearch 的 facets 功能来实现的。而在 Elasticsearch 1.0 版本以后,新出现了一个更细致的功能叫 aggregation,按照官方文档所说,会慢慢的彻底替代掉 facets。具体到 1.1 版本的时候, aggregation 里多了一项 percentile,可以具体返回某指定数值字段的区间分布情况。这对日志分析可是大有帮助。对这项功能,Elasticsearch 官方也很得意的专门在博客上写了一篇报道:Averages can be misleading: try a percentile继续阅读……


用 Graphite 存储 Nagios 数据

10 May 2014 Posted in  monitor

我们都知道 nagios 上可以用 pnp4nagios 来转换 perfdata 成 rrd 图。不过 graphite 以其扩展性及更好的 HTTP 接口目前越来越受欢迎,加上最近刚出来的 grafana 项目(从 LEK 的 Kibana 转化来的),更是让 graphite 的可视化效果也上了一个台阶。 继续阅读……


在 Perl6 脚本中并发执行 ssh 命令

04 May 2014 Posted in  perl

前几天翻 Perl6 模块清单,发现没有用作 SSH 的。虽说 Perl6 里可以很方便的用 NativeCall 包装 C/C++ 库,但是 libssh2 本身就不支持我的 kerberos5 认证环境,所以还是只能通过调用系统命令的方式来完成。 继续阅读……


Perl6 的 YAML::Dumper 模块

24 Apr 2014 Posted in  perl

这两天决定试一把 Perl6,因为扶凯兄已经把还没有正式发行 Rakudo Star 包的 MoarVM 编译打包好了,所以可以跳过这步直接进入模块安装。当然,源码编译本身也没有太大难度,只不过从 github 下源码本身耗时间比较久而已。 继续阅读……


TCP Fast Open 测试(2)

21 Apr 2014 Posted in  linux

接上篇。 继续阅读……


TCP Fast Open 测试(1)

16 Apr 2014 Posted in  linux

首先,这是一个未完成的测试。 继续阅读……


Larry Wall 来中国参加 OSTC 和 PerlChina Workshop

07 Apr 2014 Posted in  perl

见到教主真身真的很让人兴奋。在 OSTC 会场外的茶座抓住机会完成了签名跟合影。 继续阅读……


腾讯云技术沙龙笔记

30 Mar 2014 Posted in  cloud

昨天去车库咖啡听了 InfoQ 办的腾讯云图技术沙龙,今天又听了 CSDN 办的开源技术大会上腾讯云的宣讲(没错,就是那个发明了”内部开源”概念的意思),总的来说,幸亏去了昨天的! 继续阅读……