SmokePing2.7.2版本安装过程记录
看起来很高端的项目。我感觉用Nginx比用Apache快多了。演示地址:https://ping.fly2x.cn
系统版本CentOS 7.2.
11-02更新:
更新fping版本号为最新。
参考链接
下面的过程抄袭自:
https://blog.newtouch.com/setup-config-smokeping/#%E5%8F%82%E6%95%B0%E5%9F%BA%E6%9C%AC%E9%85%8D%E7%BD%AE
这里有2.6.11版本的安装过程。在2.7.1版本中,有些地方有变动。
有变化的地方
- 新增安装CoreListyum install perl-Module-CoreList
gmake install变更为make install还是用gmake install吧- cache目录改到了htdocs目录下面
- Apache虚拟主机配置文件
- Nginx配置
具体过程
1. 安装时间同步服务
yum -y install ntpdate
ntpdate times.aliyun.com
2. 安装依赖
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 rrdtool perl-rrdtool perl-tests perl-Mozilla-CA
3. 安装fping
cd /home
wget https://fping.org/dist/fping-4.1.tar.gz
tar -zxvf fping-4.1.tar.gz -C /usr/local/src
cd /usr/local/src/fping-4.1
./configure
make && make install
4. 安装Echoping
cd /home
wget https://fossies.org/linux/misc/old/echoping-6.0.2.tar.gz
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
5. 安装SmokePing
1. 安装Perl模块
yum install perl-Module-Metadata perl-Perl-OSType perl-Module-Build perl-HTTP-Cookies perl-HTTP-Daemon perl-HTTP-Negotiate perl-Module-CoreList -y
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'
如果有什么模块找不到,安装失败的,先yum search perl-模块名称
,再yum install 安装包名称
.
2. 安装Smokeping本体
cd /home
wget https://oss.oetiker.ch/smokeping/pub/smokeping-2.7.2.tar.gz
tar -zxvf smokeping-2.7.2.tar.gz -C /usr/local/src
cd /usr/local/src/smokeping-2.7.2
export PERL5LIB=/usr/local/smokeping/thirdparty/lib/perl5/
./configure --prefix=/usr/local/smokeping
/usr/bin/gmake install
3. 创建相关目录和日志文件
cd /usr/local/smokeping
mkdir htdocs/cache data var
touch /var/log/smokeping.log
chown apache:apache htdocs/cache data/ var/ /var/log
/usr/local/smokeping/htdocs/cache/
存放缓存文件;/usr/local/smokeping/data/
存放SmokePing的RRD数据文件;/usr/local/smokeping/var/log/
存放SmokePing的日志文件;tail /var/log/httpd/error_log
Apache错误日志
4. 参数配置
1. 生成配置文件
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
2. 修改配置文件
*** General ***
owner = Peter Random
contact = [email protected]
mailhost = my.mail.host
sendmail = /usr/sbin/sendmail
# NOTE: do not put the Image Cache below cgi-bin
# since all files under cgi-bin will be executed ... this is not
# good for images.
imgcache = /usr/local/smokeping/htdocs/cache #修改cache目录位置
imgurl = cache
datadir = /usr/local/smokeping/data
piddir = /usr/local/smokeping/var
cgiurl = http://此处修改为服务器ip或者域名/smokeping.cgi
smokemail = /usr/local/smokeping/etc/smokemail.dist
tmail = /usr/local/smokeping/etc/tmail.dist
# specify this to get syslog logging
syslogfacility = local0
# each probe is now run in its own process
# disable this to revert to the old behaviour
# concurrentprobes = no
*** Alerts ***
to = [email protected]
from = [email protected]
+someloss
type = loss
# in percent
pattern = >0%,*12*,>0%,*12*,>0%
comment = loss 3 times in a row
*** Database ***
step = 300 #轮询周期,单位秒
pings = 20 # 每个周期ping多少次
*** Presentation ***
charset= utf-8 #新增一行,将网页编码指定为UTF-8
#中间省略,没啥好看的
*** Targets ***
probe = FPing
menu = Top
@include targets #新建一个文件来存放要ping的主机
5. 安装中文字体
yum -y install wqy-zenhei-fonts
vim /usr/local/smokeping/lib/Smokeping/Graphs.pm
修改文件中,增加一行字体配置部分('--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 };
}
修改字符集,增加一行(charset= utf-8)
vim /usr/local/smokeping/etc/config
6. 增加登陆验证
用户名:smokeping
密码:自行设置
htpasswd -c /usr/local/smokeping/htdocs/htpasswd smokeping
chmod 600 /usr/local/smokeping/etc/smokeping_secrets.dist
7. 修复Web页面一个小Bug
监控点列表超出页面后,并没有滚动条可以滚动。此处修复。vim /usr/local/smokeping/htdocs/css/smokeping-screen.css
在32行以后.sidebar里面新增一个属性overflow:scroll
。
.sidebar {
background: #4c4c4c;
position: fixed;
top: 0;
left: 0;
width: 250px;
height: 100%;
color: #ccc;
overflow:scroll;
}
8. 增加监控对象
原教程里面是直接编辑/usr/local/smokeping/etc/config。
我这里把这个监控目标配置文件独立了出来,编辑这个文件。vim /usr/local/smokeping/etc/targets
此处的配置文件用户生成Web页面的菜单,以及监控目标。格式如下:
+ 一级目录,用于url显示,只能用英文
menu = 目录显示的名称,可以用中文
title = 点开目录后,右边显示的标题
++ 二级目录,用于url显示,只能用英文
menu = 二级目录显示的名称,可以用中文
title = 二级目录显示的名称,可以用中文
host = 要监控的目标的ip或者域名
# 只有一级菜单
+ Aliyun
menu = 阿里云
title = 阿里云dns
host = 223.5.5.5
# 二级菜单
+ Euro
menu = 欧洲
title = 欧洲节点
++ Italy
menu = 意大利
title = 意大利节点
host = www.domain.com
++ Britain
menu = 英国
title = 英国xx机房
host = 5.5.5.5
# 三级菜单
+ IDC
menu = IDC LookingGlass
title = 主机商的测试IP
++ Vultr
+++ Vultr-los
menu = 洛杉矶
title = Vultr 洛杉矶
host = losangels.vultr.com
+++ Vultr-tokyo
menu = 东京
title = Vultr 东京
host = tokyo.lg.vultr.com
++ DigitalOcean
+++ Do-london
menu = 伦敦
title = DO 伦敦
host = london.lg.digitalocean.com
+++ Do-tokyo
menu = 东京
title = DO东京
host = tokyo.lg.digitalocean.com
# 将已有的节点重新分类
+ AllTokyo
menu = 所有东京机房的主机
host = IDC\Vultr-tokoy IDC\Do-tokyo
配置在Web页面中的作用
6.Web服务器配置
1. Apache
为SmokePing新增一个Apache虚拟主机配置vim /etc/httpd/conf.d/smokeping.conf
<VirtualHost *:80>
ServerName ip或者域名
Alias /cache "/usr/local/smokeping/htdocs/cache/"
Alias / "/usr/local/smokeping/htdocs/"
<Directory "/usr/local/smokeping/htdocs/">
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>
<Directory "/usr/local/smokeping/htdocs/cache/">
AllowOverride None
Options All
AllowOverride All
Order allow,deny
Allow from all
AuthName "Smokeping"
AuthType Basic
AuthUserFile /usr/local/smokeping/htdocs/htpasswd
Require valid-user
</Directory>
</VirtualHost>
重启Apache服务器service httpd restart
。
设置cache目录权限chmod 755 -R /usr/local/smokeping/htdocs/cache
。
给cache目录增加权限管理文件.htaccess。vim /usr/local/smokeping/htdocs/cache/.htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy all
</Files>
2. Nginx
Nginx配置
抄袭自:http://www.361way.com/nginx-smokeping/5096.html
还是以上面安装smokeping的位置为例:/usr/local/smokeping
1. 安装spawn-fcgi, EPEL源里面有此软件
yum -y install spawn-fcgi
2. 创建一个spawn运行smokeping cgi的脚本
cd /usr/local/smokeping
touch smokeping-fastcgi
chmod +x smokeping-fastcgi
nano smokeping-fastcgi
输入以下内容
#!/bin/sh
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9007 -P /var/run/smokeping-fastcgi.pid -u nginx -f /usr/local/smokeping/htdocs/smokeping.fcgi
3. 运行该脚本
[root@cloud smokeping]# ./smokeping-nginx-cgi
spawn-fcgi: child spawned successfully: PID: 31352
重启smokeping后,也要重启这个脚本。
首先查看脚本的pid,结束它,然后再运行。
[root@localhost data]# netstat -anop | grep 9007
tcp 0 0 127.0.0.1:9007 0.0.0.0:* LISTEN 9781/perl off (0.00/0/0)
[root@localhost data]# kill 9781
4. 为Nginx添加配置文件。此处为yum安装nginx的配置。使用各种一件包的请自行修改include后面的路径。
server {
listen 80;
server_name smokeping.example.cn;
location / {
root /usr/local/smokeping/htdocs/;
index smokeping.fcgi;
}
location ~ .*\.fcgi$ {
root /usr/local/smokeping/htdocs/;
fastcgi_pass 127.0.0.1:9007;
include /etc/nginx/conf/fastcgi_params;
}
}
5. 检查Nginx配置,并重载配置文件。
nginx -t
nginx -s reload
7. 多个机器ping(Slave 服务器)
1. 配置主服务器 master
在主服务器的配置文件里面找到slave相关配置。
编辑配置文件/usr/local/smokeping/etc/config
.
*** Slaves ***
secrets=/opt/smokeping/etc/smokeping_secrets.dist
+ myslave1
display_name=美国电信
color=ff0000
+ myslave2
display_name=法国电信
color=10663A
然后编辑slave密码文件/opt/smokeping/etc/smokeping_secrets.dist。
每行一条,格式为"slave的名称:slave的密码"。名称和配置文件里面的名称一致。
myslave1:slave1spassword
myslave2:slave2spassword
在要监控的菜单项目下面添加slave=slave的名称,可以在一二三级菜单添加,代表监控此菜单以下的所有项目。
+ Other
menu = ChinaNet & ChinaUnicom & ChinaMobile
title = Test smokeping
slaves=myslave1
++ dianxin
menu = 电信网络监控
title = 电信网络监控列表
slaves=myslave1
host = /Other/dianxin/dianxin-bj /Other/dianxin/dianxin-hlj /Other/dianxin/dianxin-tj /Other/dianxin/dianxin-sc /Other/dianxin/dianxin-sh /Other/dianxin/dianxin-gz
+++ dianxin-bj
menu = 北京电信
title = 北京电信
slaves=myslave2
alerts = someloss
host = 202.96.199.133
2. 配置从服务器slave
按照上面提示安装好smokeping后,先在一个文件里面填写上面设定的密码。
比如/usr/local/smokeping/etc/secrets.txt。
然后运行以下命令:
bin/smokeping --master-url=http://ping.fly2x.cn/smokeping.fcgi --slave-name="myslave1" --cache-dir=/usr/local/smokeping/data/ --shared-secret=/usr/local/smokeping/etc/secrets.txt
如果有问题则运行,查看是否有错误。
bin/smokeping --master-url=http://ping.fly2x.cn/smokeping.fcgi --slave-name="myslave1" --cache-dir=/usr/local/smokeping/data/ --shared-secret=/usr/local/smokeping/etc/secrets.txt --debug
8. Q&A
1. Q:FPing: Executing /usr/sbin/fping ... failed at FPing.pm line 146.
A: 尝试运行一下屏幕提示的命令,如果提示fping不存在,则需要创建一个软链接(快捷方式)。例如用which fping
查看fping实际地址是/usr/local/sbin/fping
,创建一个软链接ln -s /usr/local/sbin/fping /usr/sbin/fping
。ln
命令第二个参数是文件的地址,第三个参数是要创建的软链接的地址。
2. Q:warning I don't know the slave xxx
A: master的配置文件没有写对应slave的配置,写入即可。配置文件/usr/local/smokeping/etc/config.
3. Q:No secret found for slave xxx
A: master的密码文件没有对应的slave,写入即可。密码文件/opt/smokeping/etc/smokeping_secrets.dist.
4. Q: master says 502, 500, 5xx~之类的错误
A: 如果是nginx的话,重启smokeping程序后还要重启cgi脚本。
5. Q: WARNING Master said 413 Request Entity Too Large
A: 在Nginx配置文件server里面添加client_max_body_size 50m
;
6. Q: Slave端正常,但是不显示slave的数据;新增监控点不显示数据;
A: 将/usr/local/smokeping/data目录,以及子目录和文件的所有者改为nginx或者www,具体那个取决于你的nginx或者apache的用户。
chown -R /usr/local/smokeping/data nginx:nginx
或
chown -R /usr/local/smokeping/data www:www
7. Q: ERROR: the shared secret file (/usr/local/smokeping/etc/secrets.txt) is world-readable or writable at /usr/local/smokeping/lib/Smokeping.pm line 4237.
A: Slave的密码文件权限不正确,修改一下。
chmod 600 /usr/local/smokeping/etc/secrets.txt
8. Q: WARNING Master said 501 Protocol scheme 'https' is not supported (LWP::Protocol::https not installed)
A: 安装Perl的https模块。
yum install perl-LWP-Protocol-https
9.Q: Server said WARNING: No targets found for slave 'us'
Sent data to Server. Server said WARNING: No targets found for slave 'us'
ERROR: we did not get config from the master. Maybe we are not configured as a slave for any of the targets on the master ?
A:没有给Slave配置要ping的目标。
- 11-02更新:
- 参考链接
- 具体过程
- 1. 安装时间同步服务
- 2. 安装依赖
- 3. 安装fping
- 4. 安装Echoping
- 5. 安装SmokePing
- 6.Web服务器配置
- 7. 多个机器ping(Slave 服务器)
- 8. Q&A
- 1. Q:FPing: Executing /usr/sbin/fping ... failed at FPing.pm line 146.
- 2. Q:warning I don't know the slave xxx
- 3. Q:No secret found for slave xxx
- 4. Q: master says 502, 500, 5xx~之类的错误
- 5. Q: WARNING Master said 413 Request Entity Too Large
- 6. Q: Slave端正常,但是不显示slave的数据;新增监控点不显示数据;
- 7. Q: ERROR: the shared secret file (/usr/local/smokeping/etc/secrets.txt) is world-readable or writable at /usr/local/smokeping/lib/Smokeping.pm line 4237.
- 8. Q: WARNING Master said 501 Protocol scheme 'https' is not supported (LWP::Protocol::https not installed)
- 9.Q: Server said WARNING: No targets found for slave 'us'
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
hi Evan,
thanks for your quick response. I have another error when trying to connect the slave server to the master server
[root@smokeping-id-slave bin]# /opt/smokeping/bin/smokeping --master-url=http://master-server-ip-address/smokeping/smokeping.fcgi --cache-dir=/opt/smokeping/data/ --shared-secret=/opt/smokeping/secret.txt --debug
WARNING: Data from smokeping-id-slave was signed with 5901d340e58601c0a5f12c7bfa594210 which does not match our expectation
Sent data to Server. Server said WARNING: Data from smokeping-id-slave was signed with 5901d340e58601c0a5f12c7bfa594210 which does not match our expectation
ERROR: we did not get config from the master. Maybe we are not configured as a slave for any of the targets on the master ?
Have you tried to add '--slave-name="slave1"'in your command line?
hi, I need your help. I got an error on my slave server below:
WARNING Master said 500 No Host option provided
ERROR: we did not get config from the master. Maybe we are not configured as a slave for any of the targets on the master ?
this is my config from the master server:
Slaves
secrets=/opt/smokeping/etc/smokeping_secrets.dist
+slave1
display_name=slave server
location=Indo
color=00ff00
Targets
probe = FPing
menu = Top
Here you will learn all about the latency of our network. server1title = Network Latency Grapher
remark = Welcome to the SmokePing website of ... Company. \
menu = windows_server
title = windows Pings
slaves = slave1
++ PC1
menu = PC1
title = attendance server
host = 1.2.3.4
I use Centos 7 for master and slave
I already restart the smokeping service and httpd service
You may either add a plus sign before "server1" or add “slaves = slave1” below "++PC1".
你slave启动的时候,指定的master-url是用http还是https ?
我的用https,会报错WARNING Master said 501 Protocol scheme 'https' is not supported (LWP::Protocol::https not installed)
安装https,yum install perl-LWP-Protocol-https
fastcgi没搞定,打开web还是出现502错误
点原文去看吧,感觉自己说得不清不楚的