64位 CentOS 5.6 中Smokeping的安装、支持中文、Master/Slave

需要的包有:
  1. CGI-SpeedyCGI-2.22.tar.gz                      2f80df78874e3efa80f180923c4967a1
  2. echoping-6.0.2.tar.gz                          991478532b56ab3b6f46ea9fa332626f
  3. fping.tar.gz                                   d5e8be59e307cef76bc479e1684df705
  4. 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

首先进行基本工具的编译安装
  1. tar -zxvf fping.tar.gz   
  2. cd fping-2.4b2_to/  
  3. ./configure   
  4. make  
  5. make install  
  6. cd ..  
  7.   
  8. tar -zxvf CGI-SpeedyCGI-2.22.tar.gz   
  9. cd CGI-SpeedyCGI-2.22  
  10. perl Makefile.PL  
  11. make  
  12. make install  
  13. cd ..  
  14.   
  15. tar -zxvf echoping-6.0.2.tar.gz   
  16. cd echoping-6.0.2  
  17. ./configure   
  18. make  
  19. make install  
  20. cd ..  
  21.   
  22. tar -zxvf smokeping-2.6.8.tar.gz   
  23. cd smokeping-2.6.8  
  24. ./setup/build-perl-modules.sh /usr/local/smokeping/thirdparty  
  25. cp -rf /usr/local/rrdtool/lib/perl/5.8.8/x86_64-linux-thread-multi /usr/lib64/perl5/5.8.8/  
  26. ./configure --prefix=/usr/local/smokeping  
  27. LC_ALL=  
  28. /usr/bin/gmake install  



如果配置smokeping时出现某个perl组件是Failed的,尝试安装之,并用类似于perl -MRRDs -le 'print q(ok!)'的语句进行确认即可。


  1. perl -MCPAN -e 'install Time::HiRes'   
  2. 可以使用类似上面的语句自动升级模块  

//============安装完了==============

然后来进行配置和修改工作,其实没啥特别的……

  1. 进入bin目录,修改smokeping文件和smokeping_cgi文件  
  2. 第八行:         use lib qw(); # PERL5LIB  
  3. 修改为:         use lib qw(/usr/local/rrdtool/lib/perl);  


  1. 进入htdocs目录  
  2. mv smokeping.fcgi.dist smokeping.fcgi  


  1. 进入etc目录  
  2. cp config.dist config  
  3. vim config  
  4. 修改binary = /usr/local/sbin/fping  


  1. Targets里可以添加如下内容作测试,其他Targets,删掉吧...  
  2. +localhost  
  3. menu = localhost  
  4. title = localhost  
  5. ++localhost  
  6. menu = localhost  
  7. title = localhost  
  8. host = localhost  


  1. mkdir /usr/local/smokeping/data /usr/local/smokeping/var /usr/local/smokeping/cache  


  1. 创建smokeping的log文件,以及修改目录的权限,重要!!  
  2. touch /var/log/smokeping.log  
  3. chown web.web /var/log/smokeping.log  
  4. chown web.web /usr/local/smokeping -R  
  5. chmod u+x /usr /usr/local/smokeping -R  


  1. vi /usr/local/nginx/conf/nginx.conf  
  2. 这是我们以前装的nginx,在cgi之前添加一节配置:  
  3. location ~ .*\.fcgi$ {  
  4.         root  /usr/local/smokeping/htdocs/;  
  5.         gzip off;  
  6.         fastcgi_pass  unix:/tmp/cgiwrap-dispatch.sock;  
  7.         fastcgi_index smokeping.fcgi;  
  8.         include fcgi.conf;  
  9.     }  


然后就可以启动看看效果了

  1. 启动smokeping  
  2. perl /usr/local/smokeping/bin/smokeping --logfile=/var/log/smokeping.log  
不过图是英文的...SmokePing原生不支持中文,这个比较头疼,用下面的方法尝试修改下


首先是rrdtool显示中文的问题

要注意,从rrdtool 1.4.3以后,貌似就不支持用“--font TITLE:8:simsun.ttc" 这种方式了

  1. rrdtool 1.4.5 出图支持中文方法:  
  2.   
  3. 在rrdtool源代码已经解压好的路径中  
  4. sed -i 's/setlocale(LC_NUMERIC, "C")/setlocale(LC_ALL, "zh_CN.gb2312")/g' src/rrd_graph.c  
  5.   
  6. 就是将setlocale(LC_NUMERIC, "C"),改成setlocale(LC_ALL, "zh_CN.gb2312")  
  7.   
  8. make  
  9.   
  10. mv ./src/rrdtool /usr/local/rrdtool/bin/rrdtool   
  11.   
  12. 然后将windows中C:\WINDOWS\Fonts\simsun.ttc复制到/usr/share/fonts/chinese/TrueType/目录中,rrdtool即可支持中文  
  13.   
  14. cp C:\WINDOWS\Fonts\simsun.ttc C:\  
  15. 然后用你自己的方法,传到/usr/share/fonts/chinese/TrueType/中去吧  




现在rrdtool画出来的图可以支持中文了,但Smokeping本身还需要配置一下


[plain]  view plain copy

  1. vi /usr/local/smokeping/etc/config  
  2. 在*** Presentation ***中,添加一行 charset = gb2312  
这样,就既可以显示中文树状目录,又可以让rrdtool画出来的图显示中文了

//==========================================

tips:

  1. 如果你要探测的机房过多,可能需要修改如下内容:  
  2.   
  3. vi lib/Smokeping.pm 第1559行 注释该行  
  4. 不然的话,当访问smokeping.fcgi?target=_charts时,nginx会提示502 bad gate,错误日志中会有“upstream closed prematurely FastCGI stdout while reading response header from upstream”,具体原因不明,猜测是stderr输出内容太多?  
  5. 1559 #                        warn "Warning: Dropping $chart/$path from sortercache\n";  

  1. 如果不希望显示"median RTT from 你的主机名",可以设置“display_name = 你想显示的内容”,例如“display_name = 我的服务器”  

  1. 调试:  
  2. 如果有问题,可以--debug模式启动,能看到报错,一般由于perl模块不全导致  
  3. perl -MCPAN -e 'install Time::HiRes'   
  4. 可以使用类似上面的语句自动升级模块  

//==========================================


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


[plain]  view plain copy

  1. *** Slaves ***  
  2. secrets=/usr/local/smokeping/etc/smokeping_secrets.dist  
  3. +你的Slave名称  
  4. display_name=你的Slave名称  
  5. color=0000ff  
  6.   
  7. 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") { ………………} 之间的内容注释掉。


你可能感兴趣的:(linux,smokeping)