smokeping

https://blog.newtouch.com/setup-config-smokeping/

安裝需要注意的是selinux需要關閉

安裝遇到問題顯示沒有權限訪問smokeping,但是訪問apache是正常的

解決辦法:修改smokeping文件隸屬於apache,且權限修改爲755

wpsB6AD.tmp然後重啓smokeping和apache服務

如進不去xxx.xxx.xxx.xxx的 apache界面,需要把iptables關掉,使用命令iptables -F臨時關閉

簡介

SmokePing 是 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,源代碼可以從官方站點下載,下載地址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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章