Mojolicious 应用的自定义子命令

01 Oct 2014 Posted in  perl

Mojolicious 框架开发应用的时候,可以跟 RoR 一样通过一系列子命令简化很多复杂操作。最简单的来说,就是快速生成整个 web 项目目录:mojo generate youapp。更多子命令见:http://cpan.php-oa.com/perldoc/Mojolicious/Commands 继续阅读……


在 logstash 里使用其他 RubyGems 模块

24 Sep 2014 Posted in  logstash

在开发和使用一些 logstash 自定义插件的时候,几乎不可避免会导入其他 RubyGems 模块 —— 因为都用不上模块的小型处理,直接写在 filters/ruby 插件配置里就够了 —— 这时候,运行 logstash 命令可能会发现一个问题:这个 gem 模块一直是 “no found” 状态。 继续阅读……


Kibana 认证鉴权方案

23 Sep 2014 Posted in  logstash

Kibana 作为一个纯 JS 项目,一直都没有提供完整的权限控制方面的功能。只是附带了一个 nginx.conf 做基本的 Basic Auth。社区另外有在 nodejs 上实现的方案,则使用了 CAS 方式做认证。 继续阅读……


用 Spark 处理数据导入 Elasticsearch

04 Sep 2014 Posted in  logstash

Logstash 说了这么多。其实运用 Kibana 和 Elasticsearch 不一定需要 logstash,其他各种工具导入的数据都可以。今天就演示一个特别的~用 Spark 来处理导入数据。 继续阅读……


山寨一个 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 下源码本身耗时间比较久而已。 继续阅读……