【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倍。 继续阅读……


(R)?ex介绍

06 Sep 2012 Posted in  devops

按说这文章好像轮不到我写。几个线上运用着的哥们都不出手,我勉强记录一些官网上没写example但实际应该蛮常用的功能吧: 继续阅读……


【翻译】用ElasticSearch存储日志

26 Aug 2012 Posted in  logstash

介绍

如果你使用elasticsearch来存储你的日志,本文给你提供一些做法和建议。 继续阅读……


用systemtap定位nginx1.2在header解析时的报错

23 Aug 2012 Posted in  monitor

一个url请求,在经过代理层访问应用层后,会报502错误。检查发现应用层是Nginx0.7.64+Resin3的结构,代理层是Nginx1.2。直接访问Nginx0.7.64是没问题的,访问Nginx1.2就会返回”upstream sent invalid header while reading response header from upstream”。 继续阅读……


Coro::Semaphore和async_pool示例

20 Aug 2012 Posted in  testing

之前有一个AnyEvent和Fork写的http压测工具,评论里有大神教导说用Coro控制并发更有效更方便。于是改写了下面的版本。从被压测的nginx server上,可以看到ESTABLISHED的数量确实大大增加,“”并发”两个字算是做到了。 继续阅读……


一个Plack::Middleware的实例

30 Jul 2012 Posted in  dancer

做一个文件上传的网页,想稍微华丽一点,显示进度条出来。在Apache和Catalyst下都有现成的模块,不过Dancer上还没有。看了一下代码,Dancer::Request里没有像Catalyst那样暴露prepare_body_chunk方法。所以需要在plack上利用psgi.input来做。尽量重用现有代码,所以progress.css和progress.js都直接从Catalyst/Plugin/UploadProgress/example/Upload/root/static/里复制。 继续阅读……


一个Dancer::Plugin的实例

30 Jul 2012 Posted in  dancer

公司内部工具统一使用passport认证登录,于是写这么一个小plugin,用来给dancer做的网站使用统一认证。 passport的原理很简单,将原先的页面url带入session转到passport的login,然后由passport通过user/password或者kerberos确认是否正确,并返回一个ticket参数,然后拿这个ticket再到passport的verify上校验一次username,正确的话写入session即可。代码如下: 继续阅读……


用AnyEvent和ForkManager写一个http协议的压测工具

19 Jul 2012 Posted in  testing

话不多说,先上第一版的代码: 继续阅读……


IPC::Locker模块介绍

07 Jul 2012 Posted in  perl

当你需要给一个集群的某项服务做简单的排他性管理的时候,强力推荐Veripool公司的一系列模块:IPC::Locker、Schedule::Load。 继续阅读……


AnyEvent::HTTPD和AnyEvent::HTTP使用实例

02 Jul 2012 Posted in  perl

很简单的一个实例,就是开一个端口接受url请求,然后向squid提交这个url的刷新。 继续阅读……


【翻译】Coro::Intro文档

29 Jun 2012 Posted in  perl


STF介绍

14 Jun 2012 Posted in  perl

STF项目,全称”Stepover Toehold Facelock“,原因是项目发起人喜欢这个动作,我勒个去……当然作者也给它找了个靠谱一点的解释,叫STorage Farm。 继续阅读……


【Logstash系列】使用Redis并自定义Grok匹配

13 Jun 2012 Posted in  logstash

之前提到,用RabbitMQ作为消息队列。但是这个东西实在太过高精尖,不懂erlang不会调优的情况下,很容易挂掉——基本上我这里试验结果跑不了半小时日志传输就断了。所以改用简单易行的redis来干这个活。 继续阅读……


MogileFS安装

10 Jun 2012 Posted in  perl

纯属凑数的更新,写写安装过程而已。没有调优,没有测评,嗯…… 继续阅读……


淘宝TrafficServer的SSD分支测试与介绍

08 Jun 2012 Posted in  CDN

同事介绍说淘宝有关于trafficserver的一个分支支持SSD的。下来试试。下载地址 继续阅读……


用ganglia监控trafficserver

08 Jun 2012 Posted in  monitor

trafficserver提供了几种很不错的性能监控方式。首先是一个模仿cisco的shell工具./bin/traffic_shell——这个工具可以set变量,也可以show变量,另一个是类似squidclient的./bin/traffic_line工具——这个工具同样可以set和show变量,不过这里变量更接近源代码函数名的样子,相当于调用API了。此外还有Perl和Web的其他方式…… 继续阅读……


【Logstash系列】用rabbitmq和elasticsearch搭建分布式日志收集存储系统

01 Jun 2012 Posted in  logstash

上上篇讲到怎样用MRI的ruby在客户端收集日志。今天主要注意服务器端,考虑grok、elastic、web这几个功能在JRuby上才好。所以服务器端可以再开一个JRuby的进程。 继续阅读……