使用smokeping監測網絡

分享一下我老師大神的人工智能教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow

               

本文可自由轉載,但請遵循“署名-非商業用途-保持一致”創作共用協議。永久鏈接:JoeCen's 小貓窩
-----------------------------


一、介紹

smokepingrrdtool的作者Tobi Oetiker的作品,所以它在圖形顯示方面有很大優勢,也是一個很有特點的opensource工具:

多種探測方式,包括fping、echoping、dig、curl等;
易用可擴展的插件;
master/slave的工作方式,可以在多個節點收集同一個監測點的數據;
很有特色的alert設置,不只是簡單的設置一個閥值;

smokeping

smokeping當前的版本是2.4.2,本文也是基於這個版本。

二、安裝

下載頁面:http://oss.oetiker.ch/smokeping/pub/

1、準備工作:

smokeping是一個用perl寫的程序,所以不需要安裝。但是他需要使用一些工具以及perl的module,比如rrdtool、fping、echoping等,這些都需要預先安裝好。

如果是用debian的話,直接用apt來安裝就可以了:

aptitude install rrdtool apache2 fping echoping libapache2-mod-speedycgi libwww-perl libsocket6-perl libnet-telnet-perl libnet-dns-perl libnet-ldap-perl libio-socket-ssl-perl libauthen-radius-perl libcgi-perl librrds-perl librrdp-perl

如果是其他linux的發行版,可以使用CPAN來安裝perl的module。

smokeping啓動的時候,也會自己去檢查需要用到的程序是否能找到。

2、設置:
在smokeping的子目錄中會發現很多“*.dist”命名的文件,這些文件使用的時候請將其改名爲“*“並進行配置。

bin/smokeping
主程序,運行在後臺。
在這個文件裏面我們需要修改前面兩個lib和後面config文件的path。
兩個lib分別是smokeping的lib和rrdtool的lib。

我的smokeping安裝在/usr/local/目錄中,所以我的設置是:

use lib qw(/usr/lib/perl5/);
use lib qw(/usr/local/smokeping/lib);

Smokeping::main("/usr/local/smokeping/etc/config");

htdocs/smokeping.cgi
顯示頁面、圖像和作爲slave傳輸數據的接口,設置方法與"bin/smokeping"類似。
但是第一行的speedy的路徑可能需要修改,否則瀏覽器中只會看到一個白色的頁面。

htdocs/cropper/*
用來作頁面圖像放大縮小的工具。

etc/config
主配置文件,非常重要。
它使用的是perl的Config::Grammar模塊。
更詳細的配置請點擊這裏

在section:

*** General ***

裏面我主要配置幾個path:

imgcache = /home/temp/smokeping/cache
imgurl   = https://smokeping/smokepingcache
datadir  = /home/temp/smokeping/data
piddir  = /home/temp/smokeping/var
cgiurl   = https://smokeping/smokeping/smokeping.cgi (我使用了ssl)

要在頁面中顯示中文的話,在section:

*** Presentation ***

中,加入:

charset = gb2312

不過rrdtool圖像中還是顯示不了中文。

etc/basepage.html
顯示頁面的主框架。裏面之需要配置"htdocs/cropper/"的位置即可。

3、配置apache:

<Directory /usr/local/smokeping/htdocs/>
  AllowOverride None
  AddHandler cgi-script cgi
  Options ExecCGI
</Directory>

Alias /smokeping/ "/usr/local/smokeping/htdocs/"
Alias /smokepingcache/ "/home/temp/smokeping/cache/"

三、普通使用
1、開始使用
smokeping的配置文件"etc/config"使用Config::Grammar形式的config文件,以"+"作爲層的開始符號。
比如:

+layer1
menu = layer1
title = layer1

++site1
menu = layer2
title = layer2

+++myhost1
menu = layer3
title = layer3
host = myhost.com

+++myhost2
menu = layer4
title = layer4
host = yourhost.com
...

其中myhost1、myhost2屬於site1,而site1則屬於layer1。 另外子層的"menu"、"title"並不是必需的。

配置好以後,可以啓動smokeping了:

./bin/smokeping

如果有錯誤的話可以debug一下:

./bin/smokeping --debug

2、multi-graph功能

也就是在一張圖裏面畫上多個監測點的數值,很簡單:

+++ Multi
menu = Multi
title = My Multi
host = /layer1/site1/myhost1 /layer1/site1/myhost2

其它都一樣,不同的是在"host"中指定要放在一起的host(要之前有設置的host)的路徑就可以了。

四、smoketrace
作者在2.4版本中加入的新功能,個人覺得用處不太大。
這裏有詳細的安裝方法,如果你也是將"htdocs"目錄作爲cgi的目錄的話,什麼都不用改,只需要將"htdocs/tr.cgi.dist"文件改名爲"tr.cgi",並配置裏面的lib路徑即可。

最後在section:

*** Targets ***

中加入:

menuextra = <a target='_blank' href='tr.html{HOST}' class='{CLASS}' /
onclick="window.open(this.href,this.target, /
'width=800,height=500,toolbar=no,location=no,
status=no,scrollbars=no'); /
return false;">*</a>

即可看到頁面左邊的的每一個host的後面都多了個"*"號,點這個"*"號就會彈出trace的頁面。
這個trace比較像"MTR"的trace結果,爲什麼說它沒有什麼用呢?因爲它返回結果比較慢,而且只能使用"master"的機器來進行trace。

五、master/slave模式
下面說說master、slave模式,詳細請看這裏

[slave 1]     [slave 2]      [slave 3]
        |             |              |
        +-------+     |     +--------+
                |     |     |
                v     v     v
              +---------------+
              |    master     |
              +---------------+

從圖上可以看到,slave主機會自己去檢查監測點的情況(loss and rtt),並將數值提交給master主機(通過smokeping.cgi)。
值得注意的是,slave並不需要config文件,每次slave提交完數據以後,會詢問master它自己的配置文件是否有修改,如果有修改的話slave會進行更新。

配置方法我就簡單說說好了:
設置slave信息:

*** Slaves ***
 secrets=/usr/local/smokeping/etc/slavesecrets.conf

 +slave1
 display_name=bjcnc
 location=China
 color=ff0000

要注意的是"slave1"這個名字需要設置爲slave主機的hostname,並且寫在"slavesecrets.con"文件裏面,如:

slave1:12345

如果不想用slave主機的hostname,那麼在slave主機啓動smokeping服務的時候需要使用"--slave-name"來指定自己的名字。

*** Targets ***
 slaves = slave1 slave2
 ...
 +dest1
 slaves =
 ...
 +dest2
 slaves = slave1
 ...
 +dest3
 ...

在section

*** Targets ***

中指定那個host需要使用哪個slave幫忙進行檢測。下層會繼承上層的配置,如果下層不像繼承的話,可以配置"slaves ="來避免使用slave。

設置好以後,master的服務器重啓一下:

./bin/smokeping --restart

啓動slave:

./bin/smokeping --master-url=http://smokeping/smokeping.cgi /
 --cache-dir=/var/tmp/smokeping/ /
 --shared-secret=/usr/local/smokeping/secret.txt /
 --slave-name=slave1

其中secret.txt記載着在master的slavesecrets.conf文件裏面對應的slave的密碼(只有密碼,沒有slave名稱)。
slavesecrets.conf和secret.txt文件的文件權限都要是"600"的。

master/slave模式中,master和slave的圖片都會顯示在同一個頁面中,如果不希望顯示master的圖片,可以使用

nomasterpoll=yes

參數。
另外要注意的一點是,master上面啓動"smokeping"進程和apache進程的用戶必須要一致。因爲rrd文件是由"smokeping"進程創建的,而數據的update卻是由"smokeping.cgi"進行的,也就是apache用戶。如果不一致的話會出現rrd文件無法被更新的情況,這個情況即使在slave主機上面進行debug也是看不出來的。具體的現象是在頁面上面看到master的圖像出現數據,但是slave的圖像一直是空白的,數據顯示是"nan"。

六、alert設定
smokeping的alert設置有點複雜,但是卻很好用,考慮得很周全。
它默認可以使用郵件進行alert,也可以直接調用外部程序進行IM的報警,也就是說你只需要寫一個簡單的腳本,就可以實現smokeping的MSN 、 gtalk 、飛信等IM、短信報警了。

例子:

*** Alerts ***
to = |/usr/local/smokeping/bin/alert.sh
from = joe@somehost

"to" 選項,默認是要填入一個email地址的,但是只要在"="後面加上"|",後面再跟你自定義的腳本的路徑,就可以調用自己的腳本進行alert了。
腳本會讀入5或者6個參數:name-of-alert, target, loss-pattern, rtt-pattern, hostname,[raise]。
自己選擇使用哪些參數alert即可。

+someloss
type = loss
# in percent
pattern = >0%,*12*,>0%,*12*,>0%
comment = loss 3 times  in a row

+rttbad
type = rtt
# in milliseconds
pattern = ==S,>50,>50
comment = route

 +rttdetect
 type = rtt
 # in milliseconds
 pattern = <10,<10,<10,<10,<10,<100,>100,>100,>100
 comment = routing messed up again ?

alert的類型我們主要使用"loss"和"rtt"兩種(當然還有更多更復雜的類型)。上面的兩個alert設置的意思是:
someloss:
如果在12次檢查中出現了3次丟包的情況(不論丟多少個包),就進行alert;

rttbad:
如果連續出現兩次50毫秒以上的延時,就進行alert;

rrtdetect:
之前5次檢查延時都少於10毫秒,前6次檢查延時都少於100毫秒,第7次開始連續3次檢查延時都大於100毫秒的話,就進行alert。

從上面可以看出,smokeping的alert做得很全面和仔細,並非像其他工具一樣,就使用一個閥值來進行預警的。

最後在你希望進行alert的target裏面加上:

alerts = rttbad,someloss

即可。
和"slaves"一樣,也是向上繼承的,避免繼承的方法也是"alerts =",做一個空的alerts。

參考:
SmokePing Documentation http://oss.oetiker.ch/smokeping/doc/index.en.html

           

分享一下我老師大神的人工智能教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow

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