https://blog.newtouch.com/setup-config-smokeping/
安装需要注意的是selinux需要关闭
安装遇到问题显示没有权限访问smokeping,但是访问apache是正常的
解决办法:修改smokeping文件隶属于apache,且权限修改为755
然后重启smokeping和apache服务
如进不去xxx.xxx.xxx.xxx的 apache界面,需要把iptables关掉,使用命令iptables -F临时关闭
简介
是 RRDtool 的作者 TobiOetiker 的作品,主要是监视网络性能,特点是画的图非常亮,网络丢包和延迟用颜色和阴影来表示。
这里值得注意的是,smokeping取值取的是中位数,而阴影部分则是其他取值的绘图,可以持续跟踪你的网络延迟,主要功能如下:· 最佳的延迟可视化图表。
· 交互式图形浏览。
· 多种延迟测量插件。
· 主/从系统用于分布式测量。
· 可灵活配置的警报系统。
· 实时延迟图表与一些有趣的图表。
技术特点
SmokePing 是用Perl 写的,采用 fping 用于ping测试,用 echoping 监视 www 服务器性能,监视 dns 查询性能,监视 ssh 性能等,底层也是 RRDtool 做支持。
基础安装
网上的安装配置说明杂乱,坑很多,从无数个坑中爬起后,果断编写此文,需要说明的是以下安装配置说明都是基于centos7.2操作系统。
包更新和时间同步
如果环境中已配置了统一的时间同步服务,可跳过此设置。
yum -y install ntpdate
ntpdate times.aliyun.com
安装依赖包
yum groupinstall "Compatibility libraries" "Base" "Development tools" -y
yum -y install cpan perl perl-FCGI perl-CGI perl-Digest-HMAC perl-Net-Telnet perl-Net-OpenSSH perl-Net-SNMPperl-LDAP perl-Net-DNS perl-IO-Pty-Easy perl-Test-Simple perl-Sys-Syslog perl-libwww-perlperl-IO-Socket-SSL perl-Socket6 perl-CGI-SpeedyCGI perl-FCGI perl-Time-HiResperl-ExtUtils-MakeMaker rrdtool rrdtool-perl curl fping httpd httpd-devel gccmake wget libxml2-devel libpng-devel glib pango pango-devel freetypefreetype-devel fontconfig cairo cairo-devel libart_lgpl libart_lgpl-devel mod_fcgidscreen
Copy
安装fping
安装fping,源代码可以从下载,下载地址
tar -zxvf fping-3.16.tar.gz -C /usr/local/src
cd /usr/local/src/fping-3.16
./configure
make && make install
Copy
安装Echoping
网上下载
tar -zxvf echoping-6.0.2.tar.gz -C /usr/local/
cd /usr/local/echoping-6.0.2
yum install -y popt-devel openssl openssl-devel
./configure --prefix=/usr/local/echoping --with-ssl --without-libidn
make && make install
Copy
安装SmokePing
下载SmokePing源代码
tar -zxvf smokeping-2.6.11.tar.gz -C /usr/local/src
cd /usr/local/src/smokeping-2.6.11
export PERL5LIB=/usr/local/smokeping/thirdparty/lib/perl5/
./setup/build-perl-modules.sh /usr/local/smokeping/thirdparty
./configure --prefix=/usr/local/smokeping
gmake install
Copy
如果./configure过程中提示找不到某些perl扩展,如下所示
checking checking for perl module'Config::Grammar'... Can't locate Config/Grammar.pm in @INC
(@INC contains:/usr/local/smokeping/thirdparty/lib/perl5 /usr/local/lib64/perl5
/usr/local/share/perl5/usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5/usr/share/perl5 .) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
Copy
请使用以下命令安装对应模块:
perl -MCPAN -e 'install Config::Grammar'
perl -MCPAN -e 'install "LWP::Simple"'
perl -MCPAN -e 'install "Net::SNMP"'
perl -MCPAN -e 'install "Net::LDAP"'
perl -MCPAN -e 'install IO::Pty'
Copy
注意:有时候需要重复安装几次才能装上模块。
注意要选择国内的的模块源,不然速度很慢。创建相关目录和日志文件
cd /usr/local/smokeping
mkdir cache data var
touch /var/log/smokeping.log
chown apache:apache cache/ data/ var/ /var/log
Copy
因为这里的web服务使用的是httpd,所以相关文件的属主属组均为apache:
/usr/local/smokeping/cache/ 存放缓存文件;/usr/local/smokeping/data/ 存放SmokePing的RRD数据文件;/usr/local/smokeping/var/log/ 存放SmokePing的日志文件;由于SmokePing通过Web的fcgi程序运行,所以建议如果需要查看运行错误日志,大都直接记录在httpd服务的日志中,使用以下命令查看:tail /var/log/httpd/error_log
Copy
参数基本配置
创建相关配置文件
cp /usr/local/smokeping/htdocs/smokeping.fcgi.dist /usr/local/smokeping/htdocs/smokeping.fcgi
cp /usr/local/smokeping/etc/config.dist /usr/local/smokeping/etc/config
Copy
修改配置文件
sed -i 's#cgiurl = http://some.url/smokeping.cgi#cgiurl = http://可访问本机的IP/smokeping#g' /usr/local/smokeping/etc/config
sed -i 's#step = 300#step = 60#g' /usr/local/smokeping/etc/config
Copy
此设置的含义为每60秒ping20次。
安装字体并支持中文
yum -y install wqy-zenhei-fonts
vim /usr/local/smokeping/lib/Smokeping/Graphs.pm
Copy
修改文件中,增加一行字体配置部分('--font', "TITLE:20:WenQuanYi Zen Hei Mono",):
...
if ($mode =~ /[anc]/){
my $val = 0;
for my $host (@hosts){
my ($graphret,$xs,$ys) = RRDs::graph
("dummy",
'--start', $tasks[0][1],
'--end', $tasks[0][2],
'--font', "TITLE:20:WenQuanYi Zen Hei Mono",
"DEF:maxping=$cfg->{General}{datadir}${host}.rrd:median:AVERAGE",
'PRINT:maxping:MAX:%le' );
my $ERROR = RRDs::error();
return "RRDtool did not understand your input: $ERROR." if $ERROR;
$val = $graphret->[0] if $val < $graphret->[0];
}
$val = 1e-6 if $val =~ /nan/i;
$max = { $tasks[0][1] => $val * 1.5 };
}
...
Copy
修改字符集,增加一行(charset= utf-8)
vim /usr/local/smokeping/etc/config
Copy
...
***Presentation ***
charset= utf-8
template = /usr/local/smokeping/etc/basepage.html.dist
...
Copy
增加登录验证
htpasswd -c /usr/local/smokeping/htdocs/htpasswd smokeping
chmod 600 /usr/local/smokeping/etc/smokeping_secrets.dist
Copy
增加SmokePing的web界面
vim /etc/httpd/conf/httpd.conf
Copy
增加下面的web站点配置:
...
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>
...
Copy
添加监控对象
vim /usr/local/smokeping/etc/config
Copy
增加入web页面的菜单
*** Targets ***
...
++ Localhost
menu = Localhost
title = Localhost
alerts = someloss
#slaves = boomer slave2
host = 本机外网地址
Copy
添加监控节点
vim /usr/local/smokeping/etc/config
Copy
监控节点样例如下,将x.x.x.x替换为实际的IP地址,注意+是第一层,++是第二层,+++ 是第三层:
smokeping会根据配置文件中配置监控节点的内容,在/usr/local/smokeping/data目录下生成对应的moniter文件夹,其下包含website子文件夹。+ IDC
menu = IDC网络监控
title = 通往各IDC网络监控
++ IDC-zp
menu = 周浦机房
title = 周浦机房网络监控列表
host = /IDC/IDC-zp/IDC-zp-1-dianxin /IDC/IDC-zp/IDC-zp-2-BGP
+++ IDC-zp-1-dianxin
menu = 上海一区电信联通网络
title = 上海一区电信联通网络
alerts = someloss
host = x.x.x.x
+++ IDC-zp-2-BGP
menu = 华东一区网络
title = 华东一区网络
alerts = someloss
host = x.x.x.x
++ IDC-fx
menu = 斐讯机房
title = 斐讯机房网络监控列表
host = /IDC/IDC-fx/IDC-fx-1-dianxin /IDC/IDC-fx/IDC-fx-1-liantong /IDC/IDC-fx/IDC-fx-2-dianxin /IDC/IDC-fx/IDC-fx-2-liantong /IDC/IDC-fx/IDC-fx-3-liantong
+++ IDC-fx-1-dianxin
menu = 华东二区电信网络
title = 华东二区电信网络
alerts = someloss
host = x.x.x.x
+++ IDC-fx-1-liantong
menu = 华东二区联通网络
title = 华东二区联通网络
alerts = someloss
host = x.x.x.x
+++ IDC-fx-2-dianxin
menu = 华东三区电信网络
title = 华东三区电信网络
alerts = someloss
host = x.x.x.x
+++ IDC-fx-2-liantong
menu = 华东三区联通网络
title = 华东三区联通网络
alerts = someloss
host = x.x.x.x
+++ IDC-fx-3-liantong
menu = 华东四区联通网络
title = 华东四区联通网络
alerts = someloss
host = x.x.x.x
++ IDC-cq
menu = 重庆机房
title = 重庆机房网络监控列表
host = /IDC/IDC-cq/IDC-cq-1-dianxin
+++ IDC-cq-1-dianxin
menu = 西南二区电信网络
title = 西南二区电信网络
alerts = someloss
host = x.x.x.x
++ IDC-gy
menu = 贵阳机房
title = 贵阳机房网络监控列表
host = /IDC/IDC-gy/IDC-gy-1-liantong
+++ IDC-gy-1-liantong
menu = 西南一区联通网络
title = 西南一区联通网络
alerts = someloss
host = x.x.x.x
+ Other
menu = 三大网络监控
title = 监控统计
++ dianxin
menu = 电信网络监控
title = 电信网络监控列表
host = /Other/dianxin/dianxin-bj
+++ dianxin-bj
menu = 北京电信(202.96.199.133)
title = 北京电信(202.96.199.133)
alerts = someloss
host = 202.96.199.133
Copy
注意:每次修改配置文件后需要重启smokeping进程
/usr/local/smokeping/bin/smokeping --restart
Copy
ERROR: /usr/local/smokeping/bin/../etc/config, line 110: ERROR: FPing 'binary' does not point to an executable
vim /usr/local/smokeping/etc/config
#第110更改fping的目录为
binary = /usr/local/sbin/fping
或
/usr/local/smokeping/bin/smokeping --reload
Copy
或
pkill smokeping
/usr/local/smokeping/bin/smokeping
Copy
smokeping会根据配置文件中配置监控节点的内容,在/usr/local/smokeping/data目录下生成对应的monitor文件夹,其下包含website子文件夹。
yum -y install tree
/usr/local/smokeping/data/
IDC
IDC-cq
IDC-cq-1-dianxin.rrd
IDC-cq-1.rrd
IDC-fx
IDC-fx-1-dianxin.rrd
IDC-fx-1-liantong.rrd
IDC-fx-2-dianxin.rrd
IDC-fx-2-liantong.rrd
IDC-fx-3-liantong.rrd
IDC-gy
IDC-gy-1-liantong.rrd
IDC-zp
IDC-zp-1-dianxin.rrd
IDC-zp-2-BGP.rrd
Other
dianxin
dianxin-bj.rrd
__sortercache
data.FPing.storable
Test
James.rrd
Localhost.rrd
Copy
修改邮件报警相关配置
vim /usr/local/smokeping/etc/config
Copy
修改邮件告警地址
*** Alerts ***
to = 接收告警邮件的Email地址
from = 发送告警邮件的Email地址
Copy
启动服务并验证
systemctl start httpd
/usr/local/smokeping/bin/smokeping
Copy
Master/Slave分布式模式配置
在使用smokeping过程中,很容易发现,如果从单个节点去探测网络性能,并不能充分检测到整个网络的一个状态。smokeping提供了基于多节点的分布式模式,可以从多个节点去探测到网络的状态,这样我们才能全面客观的监控真个网络。
smokeping的分布式为主从模式,M/S模式配置起来很简单,slave的配置基本与master的配置相同,只是slave不需要config文件,而是在启动过程中请求master上面的config文件,这样只需要维护master上面的config文件即可。smokeping分布式的检测方式为被动方式,由slave节点在启动时从master上获取config文件,然后进行探测,探测后的数据在通过cgi提交给master。slave可为多个,M/S直接通信认证是通过--shared-secret=filename来和master进行密码认证。slave 1 slave 2 slave 3
| | |
+-------+ | +--------+
| | |
v v v
+---------------+
| master |
+---------------+
Copy
安装Slave服务器的SmokePing环境
安装方式完全等同于上面的
Master/Slave通讯认证配置
smokeping主从验证通过Master和Slave的/usr/local/smokeping/etc/smokeping_secrets文件进行的,但是Master和Slave的验证文件书写方式是有所不同。
Master服务器验证文件
cp /usr/local/smokeping/etc/smokeping_secrets.dist /usr/local/smokeping/etc/smokeping_secrets
chown apache:apache /usr/local/smokeping/etc/smokeping_secrets
Copy
注意:/usr/local/smokeping/etc/smokeping_secrets 文件属性必须是600,而且所属用户和用户组必须和httpd的用户和用户组一致
vim /usr/local/smokeping/etc/smokeping_secrets
Copy
SlaveName:Password
Copy
Slave服务器验证文件
cp /usr/local/smokeping/etc/smokeping_secrets.dist /usr/local/smokeping/etc/smokeping_secrets
vim /usr/local/smokeping/etc/smokeping_secrets
Copy
下面是正文格式,需要与master服务器上的/usr/local/smokeping/etc/smokeping_secrets文件中,以SlaveName:后面的密码一致
Password
Copy
注意:/usr/local/smokeping/etc/smokeping_secrets 文件属性必须是600
Master服务器分布式模式配置
修改Master上面的config文件
vim /usr/local/smokeping/etc/config
Copy
如果有多个SlaveName,可以依次增加
*** Slaves ***
#master验证密码文件
secrets=/usr/local/smokeping/etc/smokeping_secrets
#要和smokeping_secrets保持一致,slave启动时的--slave-name后面跟着的也是这个名字
+ SlaveName
display_name=图表中显示的服务器名称
#页面图表中显示的颜色
color=0000ff
Copy
启动并验证分布式环境
注意:首先启动master服务器的SmokePing服务,再启动Slave服务器的SmokePing服务
/usr/local/smokeping/bin/smokeping --master-url=http://master的httpd的验证用户名:httpd的验证用户密码@master的外网IP/smokeping --cache-dir=/usr/local/smokeping/cache/ --shared-secret=/usr/local/smokeping/etc/smokeping_secrets --slave-name=SlaveName --logfile=/var/log/smokeping_slave.log
Copy