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!)'的语句进行确认即可。
进入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
首先是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/中去吧
vi /usr/local/smokeping/etc/config 在*** Presentation ***中,添加一行 charset = gb2312
//==========================================
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名称
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") { ………………} 之间的内容注释掉。