用Spork和Template::Toolkit生成slides胶片展示

01 Jun 2012 Posted in  perl

在不少技术集会上,大家都不再采用ppt而是使用pdf,甚至浏览器,编辑器来显示内容。利用js和css完成slide效果已经越来越花哨。另一个用vim的流派也让人很是惊叹~
那不会css的童鞋怎么办呢?这里有个笨办法。用Spork工具生成html页——反正slide一般内容不多,html代码重复一点也不浪费啥事儿~用template技术刚刚好。 Spork是一个在Sporx基础上构成的工具,可以直接cpan安装,不过默认情况下没有plugin。所以比较好的办法是上git找个带plugin的代码clone。这样页面样式好看点。
比方我用的这个就是Spork作者用的:Spork-pm 继续阅读……


【Logstash系列】使用原版Ruby1.8运行logstash的客户端程序

31 May 2012 Posted in  logstash

在一般情况下,我们实验logstash都是直接用官网上下载的jar包,然后java运行即可。但如果在大规模场景下,这样其实并不是运维的最佳实践: 继续阅读……


用perl和lua在nginx中验证url

25 May 2012 Posted in  nginx

和三年前的博客一样,还是时间加密钥加路径的加密方式。不过这次改用nginx,这样不用重新缓存后面的squid文件了。 先用ngx_lua做: 继续阅读……


【puppet系列】网页展示puppet的客户端报告

22 May 2012 Posted in  devops

上篇说到怎样使用ENC脚本控制puppet的客户端配置,这篇说如何监控和展示客户端运行状态报告。 继续阅读……


【puppet系列】puppet使用ENC定义节点

18 May 2012 Posted in  devops

今天研究puppet dashboard。主要有ENC和reports两个功能。其中ENC功能相当扯淡,因为你在web上点击添加的class/node/group,是没有任何依赖性检查(比如node命名是否符合fqdn,class是否存在)的,随便咋填绝无报错和拒绝!而且也没有提供类似report的导入工具,一旦启用就要完全重新手工输入所有配置……所以无论是从导入角度还是管理角度,自己实现一个靠谱点的ENC都是有必要的。 继续阅读……


【puppet系列】puppet安装/Facter插件和puppet模板编写

10 May 2012 Posted in  devops

使用puppet管理集群配置是个很靠谱的做法。跟其他同类产品相比,第一他的DSL语法很丰富够灵活,第二围绕他的生态圈活跃,资料比较多。 继续阅读……


通过lua统计nginx内部变量数据

08 May 2012 Posted in  nginx

统计nginx的请求数据,一般有几个办法,一个是logrotate,通过access.log计算,这个很详细,但是实时性差一些;一个是Tengine提供的pipe,这个实时性更好,但是管道如果出现堵塞,麻烦就多了~这两种办法,归根结底都是把日志记录在本地(pipe方式如果要长期保留依然要记磁盘)然后由脚本完成计算。今天这里说另一种方法:在nginx内部,随着每次请求完成一些基础的数据统计,然后输出到存储里供长期调用。
代码如下: 继续阅读……


Linux系统调优读书笔记

30 Apr 2012 Posted in  linux

今天在图书馆看书,摘抄一些有意思的细节。 继续阅读……


51CTO博客自动发布脚本

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

最近跟@画圈圈的星星 聊天,说到nagios在大规模集群运用中一个比较严重的瓶颈:修改配置需要重启进程。
听起来似乎不是什么问题,我个人之前对nagios的追求,也都放在怎么样提供一个及时高效的监控和数据展示上面—-这两个问题在 mod_gearmanpnp4nagios 的协助下已经很给力了。 继续阅读……


PostgreSQL中国用户会DBA2000培训计划北京第二课笔记

18 Mar 2012 Posted in  database

运行维护

vacuum命令

pgsql是multi-version concurrency control的,update和delete的操作并不会真正的修改原版本的内容,而只是做一个标记,最后需要用vacuum命令回收失效版本的位置。
vacuum的主要作用: 继续阅读……


PostgreSQL中国用户会DBA2000培训计划北京第一课笔记

17 Mar 2012 Posted in  database

PostgreSQL及中国用户会简介

主讲人 李元佳 galy 继续阅读……


加强了解nginx的几个问题

10 Mar 2012 Posted in  nginx

被问到一些关于nginx或者说nginx运维相关的问题,记录下来几个值得思考的。这里面有些是自己曾经想到过但是浅浅的了解下就不放在心上的,有些是根本没想过这会成为一个”有意思”的问题的…… 继续阅读……


perl函数返回值引起的误会

04 Mar 2012 Posted in  perl

在微博上偶然看到有位@南唐古韵童鞋发了一条关于perl的: 继续阅读……


ZenLoadBalancer试用(一)

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到底是怎么做的…… 继续阅读……


从wordpress博客迁移到github记录

14 Feb 2012 Posted in  perl

因为原先托管wordpress博客的阿里云主机被通管局要求备案,加上通管局早令夕改的浪费我来回的快递费,于是决定搬迁到国外,github page的免费托管就此进入我的视界。 继续阅读……


dotcloud试用

13 Feb 2012 Posted in  cloud

dotcloud是日本的一个PAAS厂商。一年多前因为plack作者的加入推出了对perl的支持。我这几个月没事做,今天想起来试试看。用起来确实蛮舒服的。(注:大部分内容是网上已经有了的,我这只是记录一下自己的步骤) 继续阅读……


OMD系列(四)mod_gearman配置与运行

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分布式监控程序的数据,这里就不说了) 继续阅读……


OMD系列(三)shinken的discovery配置与运行

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版,所以要重新安装: 继续阅读……


OMD系列(二)基础配置和目录介绍

20 Dec 2011 Posted in  monitor

话接上篇,在su和omd start之后,可以看到挂载的一个目录。其/omd是/opt/omd的软连接。目录结构如下: 继续阅读……


OMD系列(一)简介与安装

19 Dec 2011 Posted in  monitor

OMD,全称Open Monitoring Distribution,是一个围绕Nagios core构建的分布式开源监控集。在nagios基础上融合了NRPE、NSCA、check_mk、mod_gearman、pnp4nagios、nagvis、rrdcached等插件,以完成高性能的、可视化的,分权限管理的监控系统。 (我是在看mod_gearman的安装介绍时看到的,感觉这种一体式的安装很爽) 项目主页是http://omdistro.org,提供了rh、debian、suse和src各种安装模式。 比如在centos5上面,只需要简单的操作即可: 继续阅读……


Chart::OFC试用

19 Dec 2011 Posted in  perl

这几天ppt看的比较多,一样一样来玩。今天先说OFC,之前有试过amcharts和fusioncharts。amcharts最全最漂亮(尤其是有scroll和map),可惜图上都自动标上了amcharts.com的字样;fusioncharts的free版本,也蛮好用的,虽然scroll怪怪的居然靠的是点击控制。比较相同的一点就是,这两都只提供了php、python等的模块,如果是perl写的网页,那只能通过提供xml/json数据给js控制的办法。稍微一点点遗憾…… 这次在cpan上终于看到一个chart控制的模块,叫Chart::OFC。这个OFC的项目地址如下: http://teethgrinder.co.uk/open-flash-chart/ 其实用法上没什么特殊,无非是省略一点点xml代码,通过OO的方式自动生成而已。让我觉得蛮好玩的是官网上作者的声明。因为他曾经在维护公司一个付费的flash chart项目时,给甲方发信要求修改bug,等了一个月没反应。于是自己现学as语言开始自己搞= =!然后念念不忘的提示说:要重视客户的反馈。。。。。。哈哈 这个项目目前用as3改写,所以新版本叫OFC2了,不过作者自己也说不太稳定,建议继续用OFC1.9.7,所以先不说Chart::OFC2,继续用Chart::OFC好了: 继续阅读……


Dancer::Plugin::SimpleCRUD模块学习

15 Dec 2011 Posted in  dancer

Dancer圣临历中介绍了一个新插件Dancer::Plugin::SimpleCRUD。可以很快的生成对数据库表的create/read/update/delete。大概阅读了一下代码。主要就是使用HTML::FromDatabase模块生成read的页面,用CGI::FormBuilder模块生成create/update/delete的页面,用Dancer::Plugin::Database::Handle模块操作数据库。因为是Simple,所以html代码都是固定的,不甚美观。但是思路可以学习,通过这两个模块,可以自己结合Dancer的template系统做CRUD了。 先来说HTML::FromDatabase模块,这个只涉及select,所以特别简单: 继续阅读……


nginx_perl试用

12 Dec 2011 Posted in  nginx

因为空闲时间比较多,所以在CPAN上乱翻,看到了nginx_perl这个项目(原名Nginx::Engine),现在托管在github.com上。地址见: https://github.com/zzzcpan/nginx-perl 继续阅读……