连续尝试了logstash的elasticsearch/elasticsearch_http/elasticsearch_river三个putput模块,发现其index/bulk/river三种插入方式的实际运行效果速度居然没有差异。而使用perl脚本测试,单例下index不到300msg/sec,bulk接近2500msg/sec,几乎翻了10倍。 继续阅读……
16 Sep 2012 Posted in logstash
连续尝试了logstash的elasticsearch/elasticsearch_http/elasticsearch_river三个putput模块,发现其index/bulk/river三种插入方式的实际运行效果速度居然没有差异。而使用perl脚本测试,单例下index不到300msg/sec,bulk接近2500msg/sec,几乎翻了10倍。 继续阅读……
26 Aug 2012 Posted in logstash
如果你使用elasticsearch来存储你的日志,本文给你提供一些做法和建议。 继续阅读……
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”。 继续阅读……
20 Aug 2012 Posted in testing
之前有一个AnyEvent和Fork写的http压测工具,评论里有大神教导说用Coro控制并发更有效更方便。于是改写了下面的版本。从被压测的nginx server上,可以看到ESTABLISHED的数量确实大大增加,“”并发”两个字算是做到了。 继续阅读……
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/里复制。 继续阅读……
30 Jul 2012 Posted in dancer
公司内部工具统一使用passport认证登录,于是写这么一个小plugin,用来给dancer做的网站使用统一认证。 passport的原理很简单,将原先的页面url带入session转到passport的login,然后由passport通过user/password或者kerberos确认是否正确,并返回一个ticket参数,然后拿这个ticket再到passport的verify上校验一次username,正确的话写入session即可。代码如下: 继续阅读……
07 Jul 2012 Posted in perl
当你需要给一个集群的某项服务做简单的排他性管理的时候,强力推荐Veripool公司的一系列模块:IPC::Locker、Schedule::Load。 继续阅读……
02 Jul 2012 Posted in perl
很简单的一个实例,就是开一个端口接受url请求,然后向squid提交这个url的刷新。 继续阅读……
29 Jun 2012 Posted in perl
14 Jun 2012 Posted in perl
STF项目,全称”Stepover Toehold Facelock“,原因是项目发起人喜欢这个动作,我勒个去……当然作者也给它找了个靠谱一点的解释,叫STorage Farm。 继续阅读……
13 Jun 2012 Posted in logstash
之前提到,用RabbitMQ作为消息队列。但是这个东西实在太过高精尖,不懂erlang不会调优的情况下,很容易挂掉——基本上我这里试验结果跑不了半小时日志传输就断了。所以改用简单易行的redis来干这个活。 继续阅读……
08 Jun 2012 Posted in CDN
08 Jun 2012 Posted in monitor
trafficserver提供了几种很不错的性能监控方式。首先是一个模仿cisco的shell工具./bin/traffic_shell——这个工具可以set变量,也可以show变量,另一个是类似squidclient的./bin/traffic_line工具——这个工具同样可以set和show变量,不过这里变量更接近源代码函数名的样子,相当于调用API了。此外还有Perl和Web的其他方式…… 继续阅读……
01 Jun 2012 Posted in logstash
上上篇讲到怎样用MRI的ruby在客户端收集日志。今天主要注意服务器端,考虑grok、elastic、web这几个功能在JRuby上才好。所以服务器端可以再开一个JRuby的进程。 继续阅读……
01 Jun 2012 Posted in perl
31 May 2012 Posted in logstash
在一般情况下,我们实验logstash都是直接用官网上下载的jar包,然后java运行即可。但如果在大规模场景下,这样其实并不是运维的最佳实践: 继续阅读……
25 May 2012 Posted in nginx
和三年前的博客一样,还是时间加密钥加路径的加密方式。不过这次改用nginx,这样不用重新缓存后面的squid文件了。 先用ngx_lua做: 继续阅读……
22 May 2012 Posted in devops
上篇说到怎样使用ENC脚本控制puppet的客户端配置,这篇说如何监控和展示客户端运行状态报告。 继续阅读……
18 May 2012 Posted in devops
今天研究puppet dashboard。主要有ENC和reports两个功能。其中ENC功能相当扯淡,因为你在web上点击添加的class/node/group,是没有任何依赖性检查(比如node命名是否符合fqdn,class是否存在)的,随便咋填绝无报错和拒绝!而且也没有提供类似report的导入工具,一旦启用就要完全重新手工输入所有配置……所以无论是从导入角度还是管理角度,自己实现一个靠谱点的ENC都是有必要的。 继续阅读……
10 May 2012 Posted in devops
使用puppet管理集群配置是个很靠谱的做法。跟其他同类产品相比,第一他的DSL语法很丰富够灵活,第二围绕他的生态圈活跃,资料比较多。 继续阅读……
08 May 2012 Posted in nginx
统计nginx的请求数据,一般有几个办法,一个是logrotate,通过access.log计算,这个很详细,但是实时性差一些;一个是Tengine提供的pipe,这个实时性更好,但是管道如果出现堵塞,麻烦就多了~这两种办法,归根结底都是把日志记录在本地(pipe方式如果要长期保留依然要记磁盘)然后由脚本完成计算。今天这里说另一种方法:在nginx内部,随着每次请求完成一些基础的数据统计,然后输出到存储里供长期调用。
代码如下:
继续阅读……