需要的包有:
- CGI-SpeedyCGI-2.22.tar.gz 2f80df78874e3efa80f180923c4967a1
- echoping-6.0.2.tar.gz 991478532b56ab3b6f46ea9fa332626f
- fping.tar.gz d5e8be59e307cef76bc479e1684df705
- smokeping-2.6.8.tar.gz 14a968daab2d17a27d41600077e3e967
前置条件:
rrdtool:http://blog.csdn.net/liv2005/article/details/7180438
nginx:http://blog.csdn.net/liv2005/article/details/7181508
首先进行基本工具的编译安装
- tar -zxvf fping.tar.gz
- cd fping-2.4b2_to/
- ./configure
- make
- make install
- cd ..
-
- tar -zxvf CGI-SpeedyCGI-2.22.tar.gz
- cd CGI-SpeedyCGI-2.22
- perl Makefile.PL
- make
- make install
- cd ..
-
- tar -zxvf echoping-6.0.2.tar.gz
- cd echoping-6.0.2
- ./configure
- make
- make install
- cd ..
-
- tar -zxvf smokeping-2.6.8.tar.gz
- cd smokeping-2.6.8
- ./setup/build-perl-modules.sh /usr/local/smokeping/thirdparty
- cp -rf /usr/local/rrdtool/lib/perl/5.8.8/x86_64-linux-thread-multi /usr/lib64/perl5/5.8.8/
- ./configure --prefix=/usr/local/smokeping
- LC_ALL=
- /usr/bin/gmake install
如果配置smokeping时出现某个perl组件是Failed的,尝试安装之,并用类似于perl -MRRDs -le 'print q(ok!)'的语句进行确认即可。
- perl -MCPAN -e 'install Time::HiRes'
- 可以使用类似上面的语句自动升级模块
//============安装完了==============
然后来进行配置和修改工作,其实没啥特别的……
- 进入bin目录,修改smokeping文件和smokeping_cgi文件
- 第八行: use lib qw(); # PERL5LIB
- 修改为: use lib qw(/usr/local/rrdtool/lib/perl);
- 进入htdocs目录
- mv smokeping.fcgi.dist smokeping.fcgi
- 进入etc目录
- cp config.dist config
- vim config
- 修改binary = /usr/local/sbin/fping
- Targets里可以添加如下内容作测试,其他Targets,删掉吧...
- +localhost
- menu = localhost
- title = localhost
- ++localhost
- menu = localhost
- title = localhost
- host = localhost
- mkdir /usr/local/smokeping/data /usr/local/smokeping/var /usr/local/smokeping/cache
- 创建smokeping的log文件,以及修改目录的权限,重要!!
- touch /var/log/smokeping.log
- chown web.web /var/log/smokeping.log
- chown web.web /usr/local/smokeping -R
- chmod u+x /usr /usr/local/smokeping -R
- vi /usr/local/nginx/conf/nginx.conf
- 这是我们以前装的nginx,在cgi之前添加一节配置:
- location ~ .*\.fcgi$ {
- root /usr/local/smokeping/htdocs/;
- gzip off;
- fastcgi_pass unix:/tmp/cgiwrap-dispatch.sock;
- fastcgi_index smokeping.fcgi;
- include fcgi.conf;
- }
然后就可以启动看看效果了
- 启动smokeping
- perl /usr/local/smokeping/bin/smokeping --logfile=/var/log/smokeping.log
不过图是英文的...SmokePing原生不支持中文,这个比较头疼,用下面的方法尝试修改下
首先是rrdtool显示中文的问题
要注意,从rrdtool 1.4.3以后,貌似就不支持用“--font TITLE:8:simsun.ttc" 这种方式了
- rrdtool 1.4.5 出图支持中文方法:
-
- 在rrdtool源代码已经解压好的路径中
- sed -i 's/setlocale(LC_NUMERIC, "C")/setlocale(LC_ALL, "zh_CN.gb2312")/g' src/rrd_graph.c
-
- 就是将setlocale(LC_NUMERIC, "C"),改成setlocale(LC_ALL, "zh_CN.gb2312")
-
- make
-
- mv ./src/rrdtool /usr/local/rrdtool/bin/rrdtool
-
- 然后将windows中C:\WINDOWS\Fonts\simsun.ttc复制到/usr/share/fonts/chinese/TrueType/目录中,rrdtool即可支持中文
-
- cp C:\WINDOWS\Fonts\simsun.ttc C:\
- 然后用你自己的方法,传到/usr/share/fonts/chinese/TrueType/中去吧
现在rrdtool画出来的图可以支持中文了,但Smokeping本身还需要配置一下
- vi /usr/local/smokeping/etc/config
- 在*** Presentation ***中,添加一行 charset = gb2312
这样,就既可以显示中文树状目录,又可以让rrdtool画出来的图显示中文了
//==========================================
tips:
- 如果你要探测的机房过多,可能需要修改如下内容:
-
- vi lib/Smokeping.pm 第1559行 注释该行
- 不然的话,当访问smokeping.fcgi?target=_charts时,nginx会提示502 bad gate,错误日志中会有“upstream closed prematurely FastCGI stdout while reading response header from upstream”,具体原因不明,猜测是stderr输出内容太多?
- 1559 # warn "Warning: Dropping $chart/$path from sortercache\n";
- 如果不希望显示"median RTT from 你的主机名",可以设置“display_name = 你想显示的内容”,例如“display_name = 我的服务器”
- 调试:
- 如果有问题,可以--debug模式启动,能看到报错,一般由于perl模块不全导致
- perl -MCPAN -e 'install Time::HiRes'
- 可以使用类似上面的语句自动升级模块
//==========================================
Master / Slave
这绝对是Smokeping很NB的一个设定...
1.在Slave上,不需要装nginx或是apache之类的东西哦....只需要按照我们文章开始的部分里写的那些安装过程就可以了(但要编译rrdtool,然后装rrdtool-perl的组件,这个很烦...)
2.在Slave上,不需要进行什么配置哦!只需要在Slave的/usr/local/smokeping/etc下建立一个文件:slave_secret.txt,里面写一行内容:“你的Slave密码”。
3.在Slave上,执行: chown web.web /usr/local/smokeping -R; chmod u+x /usr /usr/local/smokeping -R;chmod 600 /usr/local/smokeping/etc/slave_secret.txt
4.在Master上,etc/smokeping_secrets.dist 文件中写入如下内容:“你的Slave名称:你的Slave密码”。
5.在Master上,修改etc/config
- *** Slaves ***
- secrets=/usr/local/smokeping/etc/smokeping_secrets.dist
- +你的Slave名称
- display_name=你的Slave名称
- color=0000ff
-
- slaves = 你的Slave名称
6.在Master上执行:chmod 600 /usr/local/smokeping/etc/smokeping_secrets.dist
7.在Slave上启动smokeping进程:/usr/local/smokeping/bin/smokeping --master-url=http://你Master的地址/smokeping/smokeping.fcgi --cache-dir=/usr/local/smokeping/cache/ --shared-secret=/usr/local/smokeping/etc/slave_secret.txt
结束,正常情况下,你等一会就可以在Master的data目录里发现有一些新建的rrd文件了,那就是来自Slave的数据
注意:另外要注意的一点是,master上面启动"smokeping"进程和nginx进程的用户必须要一致。因为rrd文件是由"smokeping"进程创建的,而数据的update却是由"smokeping.fcgi"进行的,也就是nginx用户。如果不一致的话会出现rrd文件无法被更新的情 况,这个情况即使在slave主机上面进行debug也是看不出来的。具体的现象是在页面上面看到master的图像出现数据,但是slave的图像一直是空白的,数据显示是"nan"。
如果在启动smokeping的时候,遇到有关LC_ALL的提示,可以将lib/Smokeping.pm 中 if (setlocale(LC_NUMERIC,"") ne "C") { ………………} 之间的内容注释掉。