ubuntu下smokeping安裝配置


0.參考文件

http://wenku.baidu.com/view/950fbb0a79563c1ec5da71b1

http://aaaxiang000.blog.163.com/blog/static/20634912201188696910/

http://my.oschina.net/lxcong/blog/150617#OSC_h1_20

1.為ubuntu設置固定ip地址

參考文獻:http://hi.baidu.com/futuremeng/item/ce1604ee467d0b0f570f1d30

在安裝好ubuntu以后,系統默認是使用DHCP自動獲取ip地址。對ubuntu的ip地址修改都在/etc/network/interfaces這個文件下面。

在ubuntu下運行如下命令:

#sudo vim /etc/network/interfaces 

使用vim來進行編輯,我們可以看到默認配置如下圖所示:

上述的最后兩條命令就表示是使用DHPC自動獲取ip方式。

auto eth0
iface eth0 inet dhcp

現在我們要為其設置靜態ip地址,設置方式如下,

運行#sudo vim /etc/network/interfaces。修改文件如下:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
#iface eth0 inet dhcp

iface eth0 inet static
address 10.138.16.245
netmask 255.255.255.240
gateway 10.138.16.254

最后使用下面的命令使網絡設置生效:

sudo /etc/init.d/networking restart

 2.安裝smokeping  

首先在ubuntu下運行如下命令,安裝預備程序對於所有選項都選擇Y,表示安裝

sudo 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

--------------------------------------------------------------------------

PS:2014-2-27

1.今天發現aptitude命令在ubuntu當中是有問題的,查了一下發現好像是ubuntu有bug,建議不要使用apttitude,直接使用apt-get這個命令。

2.還有一個就是上面的這些依賴包可能有問題,我又參考了Install and configure Smokeping on Ubuntu 12.04 LTS 這篇博客,在另外一台機器上面安裝了smokeping,它所使用的依賴包如下:

sudo apt-get install smokeping curl libauthen-radius-perl libnet-ldap-perl libnet-dns-perl libio-socket-ssl-perl libnet-telnet-perl libsocket6-perl libio-socket-inet6-perl apache2

3.還有我在bitnami的機器上面安裝smokeping失敗,總是無法打開,后來查了一下發現是因為bitnami中使用的是apache2.4,而smokeping更加兼容apche2.2版本。或者也有可能bitnami當中對apache做了修改,而smokeping在這個基礎上安裝不兼容,anyway,smokeping不能在bitnami上面部署。

---------------------------------------------------------------------------------------

然后在運行smokeping安裝命令

sudo apt-get install smokeping

最后使用在瀏覽器上面輸入:http://[IP]/cgi-bin/smokeping.cgi進行訪問,如果輸入這個地址以后出現sendmail錯誤的,還需要安裝sendmail,命令如下:

sudo apt-get install sendmail

3.中文支持

3.1中文文字

如果Targets 文件中出現中文,需要修改Presentation 文件,

#sudo vim /etc/smokeping/config.d/Presentation

設定  charset  = UTF8 。在設定完畢以后,我們再次打開Targets文件,如果文件出現亂碼, 需要全部重新編輯才可以,也就是說再一次以utf-8的格式輸入一次中文。重啟smokeping ,刷新界面,中文就不會出現亂碼了。如下圖所示:

ps:2014-2-27

其實也可以不用重新輸入一遍,我們可以將Target文件拷貝出來,在我們的windows操作系統上面用notepad++打開,然后執行以下步驟

  1. ctrl+a全選所有問題
  2. ctrl+x剪切所有內容
  3. notepad++中選中“格式->以UTF-8無BOM格式編碼”
  4. ctrl+v將內容粘貼回來。
  5. 保存,並將Target文件拷貝會/etc/smokeping/config.d/Targets目錄下。
  6. 如果使用secureCRT打開,還需要修改其編碼方式,參考:securecrt中文亂碼以及ubuntu設置locale

3.2圖片的中文支持

如果想要圖rrd圖片也支持中文,那么就需要中文字體包了,

sudo apt-get install ttf-wqy-zenhei

如果你跟我一樣是處於離線環境,可以下載一個文泉驛字體安裝包再安裝。具體安裝方法參考我另外一篇博客:ubuntu單獨安裝字體包。我也將字體安裝包以及依賴包放到百度雲盤上面了,下載地址:http://pan.baidu.com/s/1hqsUORi

然后修改smokeping的Graphs.pm這個文件,如果找不到的話可以通過find命令查到

enadmin@BJCGNMON01:/etc/smokeping/config.d$ sudo find / -name Graphs.pm
[sudo] password for enadmin: 
/home/enadmin/Graphs.pm
/usr/share/perl5/Smokeping/Graphs.pm

通過查找命令我們知道需要修改“/usr/share/perl5/Smokeping/Graphs.pm”這個文件,我們找到RRDs::graph,然后在里面插入如下語句:

'--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 "<div>RRDtool did not understand your input: $ERROR.</div>" if $ERROR;
            $val = $graphret->[0] if $val < $graphret->[0];
        }
        $val = 1e-6 if $val =~ /nan/i;
        $max = { $tasks[0][1] => $val * 1.5 };
    }

 

如果你Smokeping的安裝路徑不是上述安裝路徑,你可以在ubuntu下搜索Graphs.pm這個文件,在查到路徑以后在去編輯文件。

sudo find / -name Graphs.pm

4.添加smokeping節點

在ubuntu執行以下命令來編輯配置文件:

sudo vim /etc/smokeping/config.d/Targets

按照樣例我們添加節點的ip地址

+ Gansu //注意,這里加號后面的必須是英文,不能是中文
menu = 甘肅
title = 甘肅

++ Daliang //同樣,這里‘++’后面的必須是英文,+和++后面的內容是不會被現實的,只是起一個命名的作用。
menu =大梁
title =大梁:10.138.1.11
host = 10.138.1.11
alerts = someloss

在添加完畢以后重啟smokeping,執行以下mingling:

#sudo /etc/init.d/smokeping restart

ps:添加三級目錄

前面的配置是二級目錄,其實smokeping是可以配置三級目錄的,如下所示:

+ yiji
menu = 一級
title = 一級

++ erji
menu = 二級
title = 二級

+++ sanji
menu = sanji
title =sanji:10.138.16.54
host = 10.138.16.54
alerts = someloss

 

5.郵件告警配置:

5.1概述

smokeping默認使用郵件進行alert,也可以直接調用外部程序進行IM的報警,也就是說你只需要寫一個簡單的shell腳本,就可以實現smokeping的MSN 、 gtalk 、飛信等IM、短信報警了。如果要配置smokeping的告警功能,我們需要修改/etc/smokeping/config.d/Alerts這個配置文件,我的配置文件如下:

*** Alerts ***
to = |/etc/smokeping/alert.sh
from = aaa@126.com

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

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


# This rule checks for 3 periods (3 * 5min default) where
# the rtt is >70ms
+rttdetect
type = rtt
# in milli seconds
pattern = >70,>70,>70
edgetrigger = yes
comment = On backup circuit maybe?

5.1.1配置觸發腳本

"to" 選項,默認是要填入一個email地址的,但是只要在"="后面加上"|",后面再跟你自定義的腳本路徑,就可以調用自己的腳本進行alert了。

比如我們這里的/etc/smokeping/alert.sh就是我自己定義的告警腳本。這個腳本會讀入5個[或者6個]參數:name-of-alert, target, loss-pattern, rtt-pattern, hostname,[raise],自己選擇要使用的參數即可,我的alert.sh腳本內容如下所示,之所以打印出所有的參數,是為了看看每個參數都是些什么內容。

#!/bin/sh
echo "$2 got smokeping $1 from Monitor Server, The $2 IP is: $5........name-of-alert:$1, target:$2, loss-pattern:$3, rtt-pattern:$4, hostname:$5,[raise]:$6" |mutt -s "smokeping alert $2" xwdreamer@126.com

5.1.2設置發件人郵箱

"from"選項中填入我們的發件人郵箱地址。

5.1.3設置告警出發類型

smokeping的告警分為條件觸發和邊界觸發,所謂條件觸發就是只要滿足條件就會觸發,比如我們ping不通一個站點,那么smokeping就一直發告警,直到能夠ping通為止;還有一種是邊界觸發,所謂邊界觸發就是只在狀態發生改變的時候發出告警。這樣斷開的時候發一封郵件,恢復的時候再發一封郵件。我們這里就是要使用邊界觸發,所以設置“edgetrigger” = yes。

alert的類型我們主要使用"loss"和"rtt"兩種(當然還有更多更復雜的類型)。上面的alert類型當中,我只用了someloss這個類型,具體解釋是只要在12次測試當中,如果出現3次丟包,並且丟包率達到90%,那么就告警。下面我再給出一些其他規則的告警觸發條件解釋: 

#如果在12次檢查中出現了3次丟包的情況(不論丟多少個包),就進行alert;
+someloss
type = loss
# in percent
pattern = >0%,*12*,>0%,*12*,>0%
comment = loss 3 times  in a row

#如果連續出現兩次50毫秒以上的延時,就進行alert;
+rttbad
type = rtt
# in milliseconds
pattern = ==S,>50,>50
comment = route

#之前5次檢查延時都少於10毫秒,前6次檢查延時都少於100毫秒,第7次開始連續3次檢查延時都大於100毫秒的話,就進行alert。
+rttdetect
type = rtt
# in milliseconds
pattern = <10,<10,<10,<10,<10,<100,>100,>100,>100
comment = routing messed up again ?

5.2smokeping與msmtp的集成

smokeping默認的郵件告警是使用sendmail來實現的,如果想直接通過smpt發送郵件需要修改源代碼,覺得這樣不方便,后來找了一些資料,使用msmtp來實現。所以首先安裝msmtp+mutt環境,參考:ubuntu下msmtp+mutt的安裝和配置 。在這篇博客中提到,哪個用戶要使用msmtp和mutt,那么哪個用戶就必須對.msmtprc和.muttrc這兩個文件有讀寫的權限。現在我們要smokeping程序中調用mutt和msmtp命令,那么運行smokeping程序的用戶就必須對.msmtprc和.muttrc這兩個文件有讀寫的權限。

5.3查看smokeping進程所屬的用戶

enadmin@cgnmon:~/test$ ps -aux | grep smokeping
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
105       1265  0.0  1.0 142248 22244 ?        Ss   09:04   0:00 /usr/sbin/smokeping [FPing]
enadmin   1930  0.0  0.0  11700   964 pts/0    S+   09:29   0:00 grep --color=auto smokeping

從上面我們可以看到smokeping進程的用戶是105,那么105具體指誰呢,我們可以在/etc/passwd(還有一個/etc/shadow)當中查看。如下所示,我們執行

vi /etc/passwd

 發現一個用戶叫做smokeping:x:105,這個105用戶就是smokeping用戶,我們同樣能夠在這個下找到root賬戶和enadmin賬戶。

enadmin@cgnmon:~/test$ vi /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
syslog:x:101:103::/home/syslog:/bin/false
messagebus:x:102:105::/var/run/dbus:/bin/false
whoopsie:x:103:106::/nonexistent:/bin/false
landscape:x:104:109::/var/lib/landscape:/bin/false
enadmin:x:1000:1000:enadmin,,,:/home/enadmin:/bin/bash
smokeping:x:105:114:SmokePing daemon,,,:/var/lib/smokeping:/bin/false
smmta:x:106:115:Mail Transfer Agent,,,:/var/lib/sendmail:/bin/false
smmsp:x:107:116:Mail Submission Program,,,:/var/lib/sendmail:/bin/false
sshd:x:108:65534::/var/run/sshd:/usr/sbin/nologin
ftp:x:109:117:ftp daemon,,,:/srv/ftp:/bin/false
ntp:x:110:118::/home/ntp:/bin/false
openldap:x:111:119:OpenLDAP Server Account,,,:/var/lib/ldap:/bin/false

但是我們發現這個smokeping用戶的后綴是/bin/false,這個后綴表示此賬戶是無法登陸的,如果要想使用smokeping登陸,或者進入到smokeping賬戶目錄下,那么必須讓這個賬戶變為可登陸。那么如何設置呢,我們可以參考enadmin賬戶的后綴,他的后綴都是/bin/bash,那么我們就將smokeping賬戶的后綴修改為/bin/bash,然后重啟一下即可。具體參考:系統賬戶更改為可登陸賬戶

5.4修改.msmtprc和.muttrc這兩個文件的權限

 在我們搭建好msmpt和mutt環境以后,

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM