Dancer::Plugin::Adapter 模块介绍

22 Dec 2012 Posted in  dancer

Dancer 活跃的社区和强大又方便的插件开发导致出现了太多好玩的插件,有位新同学在刚上手的这两周内就已经往 CPAN 提交了四个插件了。 继续阅读……


用 Amcharts 和 ElasticSearch 做日志分析

22 Dec 2012 Posted in  logstash

之前有一篇从 ElasticSearch 官网摘下来的博客《【翻译】用ElasticSearch和Protovis实现数据可视化》。不过一来 Protovis 已经过时,二来 不管是 Protovis 的进化品 D3 还是 Highchart 什么的,我觉得在多图方面都还不如 amcharts 好用。所以在最后依然选择了老牌的 amcharts 完成。 继续阅读……


学习 Dancer::Plugin::Auth::Extensible 模块

21 Dec 2012 Posted in  dancer

首先介绍一下 Dancer::Plugin::Auth::Extensible 模块。这是一个认证验证的框架,之前 Dancer 里这方面的框架是 RBAC ,不过 RBAC 是实现的 auth 对象,然后提供 ->asa->can->roles 等方法。在使用的时候,需要自己在每个 route 里写 if 或者 switch 代码,显得比较繁琐。而 Extensible 模块提供了另一个(或者说是两个)思路。同时借此深入了解 Dancer::PluginDancer::Hook 的用法,外加熟悉 perl 的一些不常见的对象使用。收获良多,不可不记。 继续阅读……


Dancer 框架使用 Text::XSlate 模版的注意事项

19 Dec 2012 Posted in  dancer

Dancer 框架自带有一个 Simple 模版,不过推荐使用 Template 模块作为替代品。不过从性能上来说,TT2 比之前博客里陆续介绍过的 HTML::TemplateText::MicroTemplate 都要差。而这方面最好的,就是 Text::XSlate 模块了。今天尝试将一个 Dancer 应用迁移到 Text::XSlate 上。踩进两个坑,特此记录。 继续阅读……


perl发起HTTP请求时如何设置Host头

16 Dec 2012 Posted in  perl

之所以写这么个内容,是今天突然发现之前有个脚本的效果完全不对。这个脚本是用 Furl 模块发 HTTP 请求。看 POD 的说明,以为这样写是生效的: 继续阅读……


不小心踩进ElasticSearch.pm模块的坑里了

11 Dec 2012 Posted in  logstash

在今天以前,我一直认为perl的ElasticSearch.pm是除了原生java库以外封装最好的。不过今天踩进一个硕大的坑里,多亏 dancer-user 邮件列表里外国友人的帮助,才算爬了出来…… 继续阅读……


用gnuplot绘制直方图

10 Dec 2012 Posted in  monitor

越来越喜欢用 gnuplot 画图了,因为有时候发现自己实在是不会用 Excel…… 继续阅读……


把docx文档转换成markdown格式发布

01 Dec 2012 Posted in 

有些Word文档想搬到博客上来,而博客用的是markdown的格式。最简单的办法是在Word里转成html格式另存为,因为markdown和html是兼容的。不过word直接另存为的html里面带有“海量”的无聊样式,实在不方便之后我们再用vim的工具编辑。所以还是想办法整整。 继续阅读……


用 Tatsumaki 框架写 elasticsearch 界面

22 Nov 2012 Posted in  logstash

Tatsumaki是Plack作者的一个小框架,亮点是很好的利用了psgi.streaming的接口可以async的完成响应。不过因为缺少周边支持,所以除了几个webchat的example,似乎没看到什么应用。笔者之前纯为练手,却用tatsumaki写了个sync响应的小demo,算是展示一下用tatsuamki做普通web应用的基础步骤吧: 继续阅读……


用gnuplot绘制多图

22 Nov 2012 Posted in  monitor

以前已经提过多次gnuplot的简便快捷了。不过大多是最基本的单图上画条线之类的。这次碰到需求,稍微help了一下在一个图上画多个区域。主要需要注意的就是set size的定位点到底从什么角度算,说实话蛮麻烦的。 继续阅读……


syslog实时报警"说出来"

19 Nov 2012 Posted in  monitor

syslog应该是大家最常用的,也基本可以说是最重要的服务器监控信息来源了。 继续阅读……


【翻译】用ElasticSearch和Protovis实现数据可视化

18 Nov 2012 Posted in  logstash

搜索引擎最重要的目的,嗯,不出意料就是搜索。你传给它一个请求,然后它依照相关性返回你一串匹配的结果。我们可以根据自己的内容创造各种请求结构,试验各种不同的分析器,搜索引擎都会努力尝试提供最好的结果。 继续阅读……


【翻译】Coro模块文档

18 Nov 2012 Posted in  perl

名称

Coro —— perl唯一真正的线程 继续阅读……


Chrome的APP简单用法

09 Nov 2012 Posted in  web

学习一下简单的chrome app写法。首先,chrome的ext和web app和packaged app就要分清楚。简单说,ext就是可以出现在地址栏右侧的,app是可以出现在任务栏右侧的。而web app其实就是用json描述了一个url地址,packaged app则是最接近普通桌面程序的,需要完整的带有html/css/js等内容。但同时,因为packaged app可以在关闭chrome浏览器后运行,所以有些浏览器上的API它也用不了。 继续阅读……


【Logstash系列】Outputs::ElasticsearchHTTP自动获取随机node

30 Oct 2012 Posted in  logstash

今天在ES群中和medcl请教了一下index的性能问题。基本上在bulk的基础上,还有几点是可以做的。当然medcl说的是正常的全文索引的场景: 继续阅读……


用systemtap调试文件描述符限制

26 Oct 2012 Posted in  linux

在运行一些非root用户进程的时候,我们都习惯要在前面加上一个ulimit -HSn 65535的命令。而且我们还知道关于文件描述符的限制,不止这一个地方,还有limits.conf,sysctl -w fs.file-max等等。但是到底这些是什么个关系呢?而且,如果是一个已经在运行的程序,有没有可能在更改他的文件描述符限制呢? 继续阅读……


【Logstash系列】ElasticSearch的几点使用事项

21 Oct 2012 Posted in  logstash

之前已经写过一些ES的使用,也翻译了一篇官网上关于ES存储日志的建议日志。今天稍微总结一下近期以来实践出来的方案。 继续阅读……


用Juggernaut实时推送syslog分析结果

17 Oct 2012 Posted in  web

大家一般都会用rsyslog或者syslog-ng之类的收集系统日志。不过收集之后的处理就各种各样了。这里提供一个简单的处理,按日期保存成文件,然后定时分析新增内容,通过websocket推送到页面报警。这对于像磁盘错误等信息比较有用。因为等nagios之类的监控反应出来,故障可能就已经到你措手不及的地步了。 继续阅读……


Perl5里的gather/take

02 Oct 2012 Posted in  perl

九月末的YAPC::Asia上,Larry Wall展示了一下怎么把一个perl5上很标准的排序脚本改造成perl6脚本。主要是条件语句不再用()了,子函数传参方式,对象化操作等等。唯独有个命令是之前未见过的:gather/take。用这个可以减少临时变量的使用。 继续阅读……


用javascript操作新版本amcharts

26 Sep 2012 Posted in  web

新版本的amcharts用js和html5改写。不再简单的用settings.xml而是写成js的object了。好在例子依然详细。下面贴一段从数据库里取值并绘制成多栏图式的代码: 继续阅读……


【Logstash系列】数据格式之json-event

21 Sep 2012 Posted in  logstash

之前的各种示例中,都没有提到logstash的输入输出格式。看起来就好像logstash比Message::Passing少了decoder/encoder一样。其实logstash也有类似的设定的,这就是format。有三种选择:plain/json/json_event。默认情况下是plain。也就是我们之前的通用做法,传文本给logstash,由logstash转换成json。 继续阅读……


【Message::Passing系列】Regexp::Log模板匹配变量

16 Sep 2012 Posted in  logstash

上面调用的Regexp::Log::Nginx是base Regexp::Log的实例,CPAN上已经提供了好些server的log regex,见http://search.cpan.org/search?query=Regexp%3A%3Alog&mode=all继续阅读……


【Message::Passing系列】过滤器实例

16 Sep 2012 Posted in  logstash

Message::Passing是Suretec公司为自己的VoIP业务开发的logstash山寨版。这几个月更新还是比较快的。比之前我刚关注它时改变很大。比如Message::Passing::Output::ElasticSearch已经出来了,还有专门的Message::Passing::Filter::ToLogstash,连命令行方式Message::Passing::Role::Script都采用了MooX::Options构建,相当的OO了。 继续阅读……


【Message::Passing系列】客户端收集脚本

16 Sep 2012 Posted in  logstash

最后编写一段日志收集的agent: 继续阅读……


【Message::Passing系列】ElasticSearch的bulk_index速度测试

16 Sep 2012 Posted in  logstash

连续尝试了logstash的elasticsearch/elasticsearch_http/elasticsearch_river三个putput模块,发现其index/bulk/river三种插入方式的实际运行效果速度居然没有差异。而使用perl脚本测试,单例下index不到300msg/sec,bulk接近2500msg/sec,几乎翻了10倍。 继续阅读……