如何使用SmokePing来监控网络质量

smokeping 是一款开源的网络质量监控的工具。因为之前的那套挂了,所以重新搭了一遍。花了近一周,踩坑无数,将过程记录下来。

不得不吐槽 Linux 杂乱无章的依赖关系,装 Smokeping 最便捷的是 FreeBSD,仅需要一条命令便能完成全部安装。但由于后面的配置太不方便,还是用了用的人最多的 CentOS。

##FreeBSD

1
pkg_add -r smokeping

##CentOS

###准备
先装好系统,我选的是 CentOS 6.6 64 位版本,CentOS 7 出的时间还不长,各种包东拼西凑装起来还是挺麻烦的。
然后配 IP 地址。

1
vi  /etc/sysconfig/network-scripts/ifcfg-ethx

然后把 SELinux 禁用:

1
2
vi /etc/selinux/config
SELINUX = disabled

###安装源
官方、网易等虽然稳定快速,但是很多东西都没有。于是装个东西比较全的源:

1
2
rpm -Uvh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm -Uvh http://apt.sw.be/redhat/el6/en/i386/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.i686.rpm

根据自己的版本安装,5/7 的自己把 el 后的数字改掉。

###安装依赖

1
yum -y install perl perl-Net-Telnet perl-Net-DNS perl-LDAP perl-libwww-perl perl-RadiusPerl perl-IO-Socket-SSL perl-Socket6 perl-CGI-SpeedyCGI perl-FCGI perl-CGI-SpeedCGI perl-Time-HiRes perl-ExtUtils-MakeMaker perl-RRD-Simple rrdtool rrdtool-perl curl fping echoping  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 mod_fastcgi

只要服务器不大姨妈还是很快的。

###安装smokeping

1
2
3
4
5
6
7
wget http://oss.oetiker.ch/smokeping/pub/smokeping-2.6.11.tar.gz
tar zxvf smokeping-2.6.11.tar.gz
cd smokeping-2.6.11
./configure --prefix=/usr/local/smokeping
./setup/build-perl-modules.sh /usr/local/smokeping/thirdparty
./configure --prefix=/usr/local/smokeping
/usr/bin/gmake install

注意下载下来的压缩包是安装文件,不要改名后直接扔目录,会有冲突。
其中 ./setup/build-perl-modules.sh /usr/local/smokeping/thirdparty 这一条是个大坑,会从 cpan.org 下载文件安装,但是 cpan.org 国内并不稳定,建议使用网易的镜像,教程在这,但我按教程来没效果,你也可以爬梯子或者多试两遍。

###配置 Smokeping

####创建 cache、data、var 数据目录

1
2
cd /usr/local/smokeping
mkdir cache data var

####创建日志

1
touch /var/log/smokeping.log

####授权

1
2
chown apache:apache cache data var
chown apache:apache /var/log/smokeping.log

####修改配置文件

1
2
3
4
5
6
7
8
9
cd /usr/local/smokeping/htdocs/
mv smokeping.fcgi.dist smokeping.fcgi
cd /usr/local/smokeping/etc
mv config.dist config
vim config
cgiurl = http://some.url/smokeping.cgi
...
step = 300
ping = 5

将 some.url 改成你的 IP 或者是域名。
这里 step、ping 意思是每 300 秒时间,ping 5 次。
配完保存给密码文件权限:

1
chmod 600 /usr/local/smokeping/etc/smokeping_secrets.dist

####修改 Apache 配置

#####无密码

1
2
3
4
5
6
7
8
9
10
11
12
vim /etc/httpd/conf/httpd.conf
Alias /cache "/usr/local/smokeping/cache/"
Alias /cropper "/usr/local/smokeping/htdocs/cropper/"
Alias /smokeping "/usr/local/smokeping/htdocs/smokeping.fcgi"
<Directory "/usr/local/smokeping">
AllowOverride None
Options All
AddHandler cgi-script .fcgi .cgi
Order allow,deny
Allow from all
DirectoryIndex smokeping.fcgi
</Directory>

#####设密码
如果要让登录 Smokeping 时需要验证用户,则 Apache 添加内容为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
vim /etc/httpd/conf/httpd.conf
Alias /cache "/usr/local/smokeping/cache/"
Alias /cropper "/usr/local/smokeping/htdocs/cropper/"
Alias /smokeping "/usr/local/smokeping/htdocs/smokeping.fcgi"
<Directory "/usr/local/smokeping">
AllowOverride None
Options All
AddHandler cgi-script .fcgi .cgi
AllowOverride AuthConfig
Order allow,deny
Allow from all
AuthName "Smokeping"
AuthType Basic
AuthUserFile /usr/local/smokeping/htdocs/htpasswd
Require valid-user
DirectoryIndex smokeping.fcgi
</Directory>

然后命令行输入,点回车,会要你输密码:

1
htpasswd -c /usr/local/smokeping/htdocs/htpasswd admin

####自动启动 Smokeping、Apache 服务

1
2
echo "/usr/local/smokeping/bin/smokeping --logfile=/var/log/smokeping.log 2>&1 &" >> /etc/rc.local
chkconfig httpd on

####添加监控列表

1
vim /usr/local/smokeping/etc/config

####Apache 开端口

1
2
iptables -I INPUT -p TCP --dport 80 -j ACCEPT
/etc/init.d/iptables save

重启设备后进入 http://127.0.0.1/smokeping 应该就能看到图表了

####树状目录权限报错
如果点击列表看不到图,提示什么权限不足,要按照报错新建对应目录,然后给权限

1
2
mkdir /usr/local/smokeping/data/IDC //IDC 根据实际情况修改
chmod 655 /usr/local/smokeping/data/IDC


几乎照搬 dl528888 的博文教程,通过自己实际操作进行梳理,再加上他未说明和遗漏的内容合成一篇。