https://blog.newtouch.com/setup-config-smokeping/html
安裝須要注意的是selinux須要關閉linux
安裝遇到問題顯示沒有權限訪問smokeping,可是訪問apache是正常的web
解決辦法:修改smokeping文件隸屬於apache,且權限修改成755apache
如進不去xxx.xxx.xxx.xxx的 apache界面,須要把iptables關掉,使用命令iptables -F臨時關閉centos
簡介緩存
SmokePing 是 RRDtool 的做者 TobiOetiker 的做品,主要是監視網絡性能,特色是畫的圖很是亮,網絡丟包和延遲用顏色和陰影來表示。
這裏值得注意的是,smokeping取值取的是中位數,而陰影部分則是其餘取值的繪圖,能夠持續跟蹤你的網絡延遲,主要功能以下:服務器
· 最佳的延遲可視化圖表。網絡
· 交互式圖形瀏覽。ssh
· 多種延遲測量插件。
· 主/從系統用於分佈式測量。
· 可靈活配置的警報系統。
· 實時延遲圖表與一些有趣的圖表。
技術特色
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,源代碼能夠從官方站點下載,下載地址https://fping.org/dist/fping-3.16.tar.gz
tar -zxvf fping-3.16.tar.gz -C /usr/local/src
cd /usr/local/src/fping-3.16
./configure
make && make install
Copy
安裝Echoping
網上下載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
Copy
安裝SmokePing
下載SmokePing源代碼 http://oss.oetiker.ch/smokeping/pub/smokeping-2.6.11.tar.gz
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