86510391 2013-07-23
一:
需求:
最近工作中需要监测各个节点到IDC各节点的网络情况,来真实的反映出各网络节点的质量。我们采用的smokeping开源软件来完成这项工作。用Smokeping追查零星的网络问题是我最喜欢的诊断工具之一。
产品介绍:
Smokeping是对IDC网络质量,稳定性等最好的检测工具,包括常规的 ping,dig,echoping,curl等,可以监视www服务器性能,监视dns查询性能,监视ssh性能等。Smokeping是rrdtool的作者Tobi Oetiker的作品,所以底层也是 rrdtool 做支持,在图形显示方面有很大优势。特点是主从分布式部署,master/slave方式工作情况下可以在多个节点收集同一个监测点的数据,实现自定义报警功能。
二:
安装:
Smokeping是一个用perl写的程序,所以不需要安装。但是他需要使用一些工具以及perl的module,比如rrdtool、fping、echoping等,这些都需要预先安装好。(NGINX装完之后的基本配置这里就不贴了).
Smokeping master/slave方式原理请参阅:http://oss.oetiker.ch/smokeping/doc/smokeping_master_slave.en.htmlslave 主从配置的时候slave端不需要config文件,每次slave提交完数据以后,会询问master端的配置文件是否有修改,如果有修改的话slave会进行更新。虽然slave安装完之后不需要配置,但是需要以salve方式启动,下面安装过程中会有详细介绍,以下我们先来做master端的安装配置过程。
相关阅读:
1:系统是Debian,编辑sources.list,配置apt
root@debian:~# vi /etc/apt/sources.list
deb http://ftp.debian.org/debian/ squeeze main non-free contrib
deb http://ftp.debian.org/debian/ squeeze-proposed-updates main non-free contrib
deb http://ftp.us.debian.org/debian/ squeeze main non-free contrib
deb http://ftp.us.debian.org/debian/ squeeze-proposed-updates main non-free contrib
root@debian:~# apt-get update
update完之后安装所需要的软件:
root@debian:~# aptitude install nginx rrdtool fping echoping libapache2-mod-speedycgi libwww-perl libsocket6-perl libnet-telnet-perl libnet-dns-perl libnet-ldap-perl libio-socket-ssl-perl libauthen-radius-perl libcgi-perl librrds-perl librrdp-perl spawn-fcgi smokeping libfcgi-perl libfcgi-procmanager-perl
2:安装完成,编辑/usr/share/smokeping/cgi-bin/smokeping.fcgi
root@debian:~# vi /usr/share/smokeping/cgi-bin/smokeping.fcgi
#!/usr/bin/perl -w
# -*-perl-*-
use FCGI;
use FCGI::ProcManager;
use lib qw(/usr/share/smokeping/lib);
use CGI::Carp qw(fatalsToBrowser);
use Smokeping 2.003006;
my $proc_manager = FCGI::ProcManager->new( {n_processes => 5} );
my $request = FCGI::Request();
$proc_manager->pm_manage();
while($request->Accept() >= 0) {
$proc_manager->pm_pre_dispatch();
Smokeping::cgi("/etc/smokeping/config");
$proc_manager->pm_post_dispatch();
exit(0);
}
3:编辑/usr/bin/smokeping-fastcgi
root@debian:~# vi /usr/bin/smokeping-fastcgi
#!/bin/sh
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9007 \
-P /var/run/smokeping-fastcgi.pid -u www-data \
-f /usr/share/smokeping/cgi-bin/smokeping.fcgi
4:编辑/etc/init.d/smokeping-fastcgi
root@debian:~# vi /etc/init.d/smokeping-fastcgi
#!/bin/bash
FCGI_SCRIPT=/usr/bin/smokeping-fastcgi
FASTCGI_USER=www-data
PIDFILE=/var/run/smokeping-fastcgi.pid
RETVAL=0
case "$1" in
start)
$FCGI_SCRIPT
RETVAL=$?
;;
stop)
PID=`cat $PIDFILE`
kill -9 $PID $(pgrep -P $PID)
RETVAL=$?
;;
restart)
PID=`cat $PIDFILE`
kill -9 $PID $(pgrep -P $PID)
$FCGI_SCRIPT
RETVAL=$?
;;
*)
echo "Usage: smokeping-fastcgi {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
5:注意权限:
Smokeping目录所属组,所属主和nginx必须是同一个用户!
/usr/share/smokeping/cgi-bin/smokeping.fcgi /usr/bin/smokeping-fastcgi /etc/init.d/smokeping-fastcgi 注意可执行权限!
6:启用并启动init的脚本:
123 update-rc.d smokeping-fastcgi defaults
update-rc.d smokeping-fastcgi enable
service smokeping-fastcgi start
7:Nginx.conf的相应配置:(NGINX如果没配置好,Smokeping页面出不了图,注意路径配置)
server
{
listen 80;
server_name 10.0.0.1;
location / {
root /usr/share/smokeping/www;
index index.html index.htm index.php index.cgi;
}
location ~ .*\.fcgi$ {
root /usr/share/smokeping/www/;
fastcgi_pass 127.0.0.1:9007;(这里端口注意!)
include /etc/nginx/fastcgi_params;
}
}
8:启动smokeping
root@debian:~# /etc/init.d/smokeping start
访问页面http://10.0.0.1:80/smokeping.fcgi
成功访问到(没做任何配置)