网络链路质量监控smokeping
作者:邓聪聪
1.安装smokeping,需要下载三个软件
wget http://www.fping.org/dist/fping-3.10.tar.gz wget https://fossies.org/linux/misc/old/echoping-6.0.2.tar.gz wget http://oss.oetiker.ch/smokeping/pub/smokeping-2.6.9.tar.gz
2.安装smokeping的依赖包,已经apache服务
yum install perl perl-Sys-Syslog podofo perl-Net-Telnet perl-Net-DNS perl-LDAP perl-libwww-perl perl-IO-Socket-SSL perl-Socket6 perl-Time-HiRes perl-ExtUtils-MakeMaker rrdtool rrdtool-perl curl httpd httpd-devel gcc make wget libxml2-devel libpng-devel glib pango pango-devel freetype freetype-devel fontconfig cairo cairo-devel libart_lgpl libart_lgpl-devel popt popt-devel libidn libidn-devel mod_fcgid bind-utils -y
3.解压文件编译安装
tar xf fping-3.10.tar.gz cd fping-3.10 ./configure make && make install tar xf echoping-6.0.2.tar.gz cd echoping-6.0.2 ./configure make && make install tar xf smokeping-2.6.9.tar.gz cd smokeping-2.6.9 ./setup/build-perl-modules.sh /usr/local/smokeping/thirdparty ./configure --prefix=/usr/local/smokeping /usr/bin/gmake install
4.配置smokeping
cd /usr/local/smokeping/ mkdir cache data var touch /var/log/smokeping.log chown apache:apache cache data var chown apache:apache /var/log/smokeping.log chmod 600 /usr/local/smokeping/etc/smokeping_secrets.dist cd /usr/local/smokeping/htdocs mv smokeping.fcgi.dist smokeping.fcgi cd /usr/local/smokeping/etc mv config.dist config
5.编辑配置文件
主要修改如下内容: #cgiurl = http://some.url/smokeping.cgi cgiurl = http://访问所需要的IP/smokeping.cgi *** Database *** #step = 300 step = 60 #此处建议改为 60 , 一分钟采集一次数据 pings = 20
6.apache使用虚拟主机的子文件配置
<VirtualHost *:81>
ServerName 192.168.10.236
DocumentRoot /usr/local/smokeping/htdocs
ErrorLog logs/smokeping_error.log
CustomLog logs/smokeping_access.log common
Alias /smokeping "/usr/local/smokeping/htdocs/smokeping.fcgi"
Alias /cache "/usr/local/smokeping/cache"
Alias /cropper "/usr/local/smokeping/htdocs/cropper"
<Directory /usr/local/smokeping>
AllowOverride None
AddHandler cgi-script cgi fcgi
Options ExecCGI
Order allow,deny
Allow from all
AuthName "Smokeping Access" #认证控制
AuthType Basic
AuthUserFile /usr/local/smokeping/htdocs/htpasswd
Require valid-user
DirectoryIndex smokeping.fcgi
</Directory>
</VirtualHost>
#认证控制部分是为了安全和保密
cd /usr/local/smokeping/htdocs
htpasswd -c /usr/local/smokeping/htdocs/htpasswd admin #然后根据提示数据密码
完成之后修改验证密码文件权限
chmod 600 /usr/local/smokeping/etc/smokeping_secrets.dist
7.重启http服务和smokeping
#重启httpd,和smokeping服务
systemctl restart httpd
/usr/local/smokeping/bin/smokeping --logfile=/var/log/smokeping.log
8.启动脚本
#!/bin/bash # # Description: Smokeping init.d script # Get function from functions library . /etc/init.d/functions # Start the service Smokeping function start() { echo -n "Starting Smokeping: " /usr/local/smokeping/bin/smokeping >/dev/null 2>&1 ### Create the lock file ### touch /var/lock/subsys/smokeping success $"Smokeping startup" echo } # Restart the service Smokeping function stop() { echo -n "Stopping Smokeping: " kill -9 `ps ax |grep "/usr/local/smokeping/bin/smokeping" | grep -v grep | awk '{ print $1 }'` >/dev/null 2> &1 ### Now, delete the lock file ### rm -f /var/lock/subsys/smokeping success $"Smokeping shutdown" echo } #Show status about Smokeping function status() { NUM="`ps -ef|grep smokeping|grep -v grep|wc -l`" if [ "$NUM" == "0" ];then echo "Smokeping is not run" else echo "Smokeping is running" fi } ### main logic ### case "$1" in start) start ;; stop) stop ;; status) status ;; restart|reload) stop start ;; *) echo $"Usage: $0 {start|stop|restart|reload|status}" exit 1 esac exit 0