之前提到,用RabbitMQ作为消息队列。但是这个东西实在太过高精尖,不懂erlang不会调优的情况下,很容易挂掉——基本上我这里试验结果跑不了半小时日志传输就断了。所以改用简单易行的redis来干这个活。 继续阅读……
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内部,随着每次请求完成一些基础的数据统计,然后输出到存储里供长期调用。
代码如下:
继续阅读……
21 Apr 2012 Posted in perl
#!/bin/env perl
use warnings;
use strict;
use File::Util;
use YAML::Syck;
use Perl6::Say;
use XMLRPC::Lite;
use Data::Dumper;
my $f = File::Util->new;
my @blogs = grep {/\.markdown$/} $f->list_dir('../_posts', '--recurse');
foreach (@blogs) {
my $yaml = LoadFile($_);
my $title = $yaml->{'title'};
my $text = $f->load_file("$_");
upload($title, $text);
};
sub upload {
my ($title, $text) = @_;
my $username = 'username';
my $password = 'password';
my $blogid = '123456';
my $proxyurl = 'http://blogname.blog.51cto.com/xmlrpc.php';
my $res = XMLRPC::Lite->proxy($proxyurl)->call('metaWeblog.newPost', $blogid, $username, $password, { title => "$title", description => "$text", categories => ['【创作类型:原创】','IT管理', ]}, 1)->result;
say "newPost id -- " . $res if $res;
};
目前还有几个问题: 继续阅读……
18 Apr 2012 Posted in perl
很久没更新,没用技术,今天稍微geek一下下。给老婆搜索她行业百强公司的具体地点,看看如果换单位的话是否方便出行~代码如下: 继续阅读……
16 Apr 2012 Posted in monitor
18 Mar 2012 Posted in database
pgsql是multi-version concurrency control的,update和delete的操作并不会真正的修改原版本的内容,而只是做一个标记,最后需要用vacuum命令回收失效版本的位置。
vacuum的主要作用:
继续阅读……
17 Mar 2012 Posted in database
主讲人 李元佳 galy 继续阅读……
10 Mar 2012 Posted in nginx
被问到一些关于nginx或者说nginx运维相关的问题,记录下来几个值得思考的。这里面有些是自己曾经想到过但是浅浅的了解下就不放在心上的,有些是根本没想过这会成为一个”有意思”的问题的…… 继续阅读……
29 Feb 2012 Posted in
在微博上看到一款叫做Zen LoadBalancer的负载均衡软件更新新闻。于是决定下载来看看,其官网地址是:http://www.zenloadbalancer.com/web/。具体的说,是基于Debian构建的TCP/UDP负载均衡,通过perl的CGI页面完成对负载均衡的管理和监控,包括cluster功能(类似keepalived双机)。对后端real server的监控通过的是nagios-plugins里提供的check_http/check_smtp/check_ftp等一系列脚本完成的。监控通过SNMP完成,展示图像是rrd和GD::Graph。唯一没法知道的就是做负载均衡核心功能的pen这个东东,因为提供的是iso镜像,安装完后就直接有二进制文件在了,不知道这个pen到底是怎么做的…… 继续阅读……
14 Feb 2012 Posted in perl
因为原先托管wordpress博客的阿里云主机被通管局要求备案,加上通管局早令夕改的浪费我来回的快递费,于是决定搬迁到国外,github page的免费托管就此进入我的视界。 继续阅读……
13 Feb 2012 Posted in cloud
dotcloud是日本的一个PAAS厂商。一年多前因为plack作者的加入推出了对perl的支持。我这几个月没事做,今天想起来试试看。用起来确实蛮舒服的。(注:大部分内容是网上已经有了的,我这只是记录一下自己的步骤) 继续阅读……
27 Dec 2011 Posted in monitor
上一篇提到了shinken,这是一个完全重写过的nagios-like系统,如果想尽可能的在原有nagios知识基础上进行高性能的分布式扩展,那么可以使用mod_gearman模块。这个模块可以从github.com上直接获取使用,地址是: https://github.com/sni/mod_gearman 当然,我们这里依然是直接采用了OMD分发的方式,事实上github上也是建议直接采用omd部署,包括升级也可以直接omd update~~(因为从源代码编译的话,在nagios3.2.2版本之前还需要打个patch才能支持eventhandler,既然都得重编译,直接搞新的得了) 在github的“How it works”和“Common Scenarios”两章节里,详细的用图例说明了mod_gearman的工作原理和各种配置情形。我这里就不重复贴了。大概的说,就是可以把nagios配置检测项中的hosts/services/eventhandlers/hostgroups/servicegroups都单独成队列,然后启动多个worker有针对性的完成队列里的任务,最后也是用单独的result队列回收检测结果。 嗯,从原理上来讲,hosts/services/eventhandlers的队列,属于load balance范围,而hostgroups/servicegroups的队列,属于distribute范围。 (mod_gearman还有send_gearman程序用来load balance接收NSCA分布式监控程序的数据,这里就不说了) 继续阅读……
20 Dec 2011 Posted in monitor
上篇说到OMD的可以通过omd config选择core,有nagios和shinken两个选项。shinken是一个完全重写的监控系统,但是在外部接口上,又是nagios-like的,甚至可以单纯的只用shinken的WebUI给nagios使。所以OMD作为nagios周边的项目,也就把shinken加入到core选项里了。 不过经过试验发现,虽然omd的rpm是针对centos5.5的,代码中调用的有些命令版本却比较高,比如nmap命令使用了–traceroute选项,查ChangeLog发现是4.76版才加上的,而centos5上面的还是4.11版,所以要重新安装: 继续阅读……