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


首先进行基本工具的编译安装

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!)'的语句进行确认即可。

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


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

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


进入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") { ………………} 之间的内容注释掉。


你可能感兴趣的:(nginx,windows,centos,cgi,perl,fonts)