使用smokeping監控idc機房網絡質量情況

最近工作比較忙,也沒有時間寫博客,看到好友芮峯雲最近一直在寫博客,所以也手癢了,就先把之前的一些積累下來的文章分享給大家。

本文是介紹如何的使用smokeping來監控idc機房的網絡質量情況,從監控圖上的延時與丟包能分辨出你機房的網絡是否穩定,是否爲多線,是否爲BGP機房,到各城市的3個運行商網絡各是什麼情況,如果出現問題,如果有針對的解決。而且如果選擇新機房的時候,你可以根據smokeping的監控結果來判斷這個機房是否適合。

1、安裝其他源

1
rpm -Uvh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

2、安裝rrdtool與依賴庫

1
yum -y install perl perl-Net-Telnet perl-Net-DNS perl-LDAP perl-libwww-perl perl-RadiusPerl perl-IO-Socket-SSL perl-Socket6 perl-CGI-SpeedyCGI perl-FCGI perl-CGI-SpeedCGI perl-Time-HiRes perl-ExtUtils-MakeMaker perl-RRD-Simple rrdtool rrdtool-perl curl fping echoping  httpd httpd-devel gcc make  wget libxml2-devel libpng-devel glib pango pango-devel freetype freetype-devel fontconfig cairo cairo-devel libart_lgpl libart_lgpl-devel mod_fastcgi

3、下載與安裝smokeping

1
2
3
4
5
6
7
8
wget http://oss.oetiker.ch/smokeping/pub/smokeping-2.6.8.tar.gz
tar zxvf smokeping-2.6.8.tar.gz
cd smokeping-2.6.8
./configure --prefix=/usr/local/smokeping
出現問題是因爲需要安裝perl的模塊,所以運行下面內容即可
./setup/build-perl-modules.sh /usr/local/smokeping/thirdparty
./configure --prefix=/usr/local/smokeping
/usr/bin/gmake install

現在smokeping安裝完成

4、配置smokeping

a.創建cache、data、var目錄

1
2
cd /usr/local/smokeping
mkdir cache data var

b.在創建日誌

1
touch /var/log/smokeping.log

c.授權

1
2
chown apache:apache cache data var
chown apache:apache /var/log/smokeping.log

d.修改配置文件

1
2
3
4
5
6
cd /usr/local/smokeping/htdocs/
mv smokeping.fcgi.dist smokeping.fcgi
cd /usr/local/smokeping/etc
mv config.dist config
vim config
cgiurl   = http://some.url/smokeping.cgi

主要是修改這行,把some.url修改爲你的ip或者域名

1
2
*** Database ***
step     = 300

然後修改step,從300改爲60,這是檢測的時間。

e.配置完成之後修改密碼文件權限

1
chmod 600/usr/local/smokeping/etc/smokeping_secrets.dist

f.修改apache的配置

1
vim /etc/httpd/conf/httpd.conf

添加如下

1
2
3
4
5
6
7
8
9
10
11
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
Order allow,deny
Allow from all
DirectoryIndex smokeping.fcgi
</Directory>

f.設置開機啓動

1
echo "/usr/local/smokeping/bin/smokeping --logfile=/var/log/smokeping.log 2>&1 &">> /etc/rc.local

g.啓動http與smokeping

1
2
/etc/init.d/httpd start
/usr/local/smokeping/bin/smokeping --logfile=/var/log/smokeping.log 2>&1&

然後訪問你在config裏設置的cgiurl= http://some.url/smokeping

注意如果出現500錯誤就是因爲你沒有關閉selinux的問題,關閉了就能正常打開。

剩下就該你自己修改你要監控的內容了

注意+是第一層,++是第二層

1
2
3
4
5
6
7
8
9
10
+ Test
menu= monitor
#parents = owner:/Test/James location:/
title=monitor all
++ localhost
menu = localhost
title =localhost
alerts = someloss
slaves = boomer slave2
host = 192.168.56.102

然後smokeping的web界面如下圖102203668.jpg

如果各位就這樣放到網上的話,是十分的不安全,所以需要加入訪問控制。

h.修改httpd.conf裏的內容

1
2
3
4
5
6
7
8
9
10
11
12
13
<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>

把之前修改的httpd.conf裏的這一段直接覆蓋就行

然後進入cd /usr/local/smokeping/htdocs目錄

設置登錄賬戶與密碼

1
htpasswd -c /usr/local/smokeping/htdocs/htpasswd admin

這個是設置登錄賬戶爲admin,密碼在後面輸入

然後重啓httpd就可以實現密碼驗證登錄

102305866.jpg

需要注意,一定要同步好時間,可以使用cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime或者ntpdate 210.72.145.44。

如果需要在網頁裏展示中文,修改/usr/local/smokeping/etc的config文件



1
2
*** Presentation ***
charset = utf-8//注:在這裏添加

然後在menu與titile裏修改中文,重啓即可

有一個要注意的地方就是,你輸入的中文必須在utf-8的字符編碼下輸入的中文字符,不然會出現亂碼。

如果在xshel下,選擇file-properities-terminal

102459527.jpg

如果還是不顯示就看看你係統裏是否安裝了中文字體,或者在安裝一個102549966.jpg

debian上可以先apt-cache search wqy(文泉譯), centos可以yum search wqy試試。

然後yum install後在重啓smokeping

如果想監控本機到電信、聯通、移動、教育網的網絡情況監控,可以使用下面內容

102648507.jpg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
+ Other
menu = 其他網絡監控
title = 其他所有網絡監控列表
++ dianxin
menu = 電信網絡監控
title = 電信網絡監控列表
host = /Other/dianxin/dianxin-hlj /Other/dianxin/dianxin-gd /Other/dianxin/dianxin-gs /Other/dianxin/dianxin-sh
+++ dianxin-hlj
menu = 黑龍江電信
title = 黑龍江電信
alerts = someloss
#slaves = boomer slave2
host = 219.150.32.132
+++ dianxin-gd
menu = 廣東電信
title = 廣東電信
alerts = someloss
#slaves = boomer slave2
host = 113.111.211.22
+++ dianxin-gs
menu = 甘肅電信
title = 甘肅電信
alerts = someloss
#slaves = boomer slave2
host = 202.100.64.68
+++ dianxin-sh
menu = 上海電信
title = 上海電信
alerts = someloss
#slaves = boomer slave2
host = 202.96.209.5
#+++ dianxin-multi
#menu = 多個電信網絡監控列表
#title = 多個電信網絡監控列表
#alerts = someloss
#slaves = boomer slave2
#host = /Other/dianxin/dianxin-hlj /Other/dianxin/dianxin-gd /Other/dianxin/dianxin-gs /Other/dianxin/dianxin-sh
#
++ liantong
menu = 聯通網絡監控
title = 聯通網絡監控列表
host = /Other/liantong/liantong-hlj /Other/liantong/liantong-gd /Other/liantong/liantong-gs /Other/liantong/liantong-sh
+++ liantong-hlj
menu = 黑龍江聯通
title = 黑龍江聯通
alerts = someloss
#slaves = boomer slave2
host = 202.97.224.68
+++ liantong-gd
menu = 廣東聯通
title = 廣東聯通
alerts = someloss
#slaves = boomer slave2
host = 221.4.66.66
+++ liantong-gs
menu = 甘肅聯通
title = 甘肅聯通
alerts = someloss
#slaves = boomer slave2
host = 221.7.34.10
+++ liantong-sh
menu = 上海聯通
title = 上海聯通
alerts = someloss
#slaves = boomer slave2
host = 210.22.70.3
#+++ liantong-multi
#menu = 多個聯通網絡監控列表
#title = 多個聯通網絡監控列表
#alerts = someloss
#slaves = boomer slave2
#host = /Other/liantong/liantong-hlj /Other/liantong/liantong-gd /Other/liantong/liantong-gs /Other/liantong/liantong-sh
++ yidong
menu = 移動網絡監控
title = 移動網絡監控列表
host = /Other/yidong/yidong-hlj /Other/yidong/yidong-gd /Other/yidong/yidong-gs /Other/yidong/yidong-sh
+++ yidong-hlj
menu = 黑龍江移動
title = 黑龍江移動
alerts = someloss
#slaves = boomer slave2
host = 211.137.241.34
+++ yidong-gd
menu = 廣東移動
title = 廣東移動
alerts = someloss
#slaves = boomer slave2
host = 211.137.241.34
+++ yidong-gs
menu = 甘肅移動
title = 甘肅移動
alerts = someloss
#slaves = boomer slave2
host = 218.203.160.194
+++ yidong-sh
menu = 上海移動
title = 上海移動
alerts = someloss
#slaves = boomer slave2
host = 117.131.0.22
#+++ yidong-multi
#menu = 多個移動網絡監控列表
#title = 多個移動網絡監控列表
#alerts = someloss
#slaves = boomer slave2
#host = /Other/yidong/yidong-hlj /Other/yidong/yidong-gd /Other/yidong/yidong-gs /Other/yidong/yidong-sh
++ jiaoyu
menu = 教育網絡監控
title = 教育網絡監控列表
host = /Other/jiaoyu/jiaoyu-qh /Other/jiaoyu/jiaoyu-sh /Other/jiaoyu/jiaoyu-wh /Other/jiaoyu/jiaoyu-hn
+++ jiaoyu-qh
menu = 清華大學
title = 清華大學
alerts = someloss
#slaves = boomer slave2
host = 166.111.8.28
+++ jiaoyu-sh
menu = 上海交大
title = 上海交大
alerts = someloss
#slaves = boomer slave2
host = 202.112.26.34
+++ jiaoyu-wh
menu = 武漢科技大學
title = 武漢科技大學
alerts = someloss
#slaves = boomer slave2
host = 202.114.240.6
+++ jiaoyu-hn
menu = 華南農業大學
title = 華南農業大學
alerts = someloss
#slaves = boomer slave2
host = 202.116.160.33
#+++ jiaoyu-multi
#menu = 多個教育網絡監控列表
#title = 多個教育網絡監控列表
#alerts = someloss
#slaves = boomer slave2
#host = /Other/jiaoyu/jiaoyu-qh /Other/jiaoyu/jiaoyu-sh /Other/jiaoyu/jiaoyu-wh /Other/jiaoyu/jiaoyu-hn

展示效果爲

102750921.jpg

102813218.jpg

5、關於smokeping的master與slave配置

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

配置

在master的config裏修改

1
2
3
4
*** Slaves ***
secrets=/usr/local/smokeping/etc/smokeping_secrets.dist #密碼文件
+slave1#名稱
display_name=slave1

要注意的是"slave1"這個名字需要設置爲slave主機的hostname,並且寫在"slavesecrets.con"文件裏面,如果不想用slave主機的hostname,那麼在slave主機啓動smokeping服務的時候需要使用"--slave-name"來指定自己的名字。在section

*** Targets ***

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

具體安裝與配置不介紹。

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

nomasterpoll=yes

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

如果大家還想細化的監控,比如按照3大運行商(電信、聯通、移動)到1、2、3線城市的網絡延時與丟包情況,如下圖顯示

1、本機房到電信運行商的1線城市網絡監控情況

104353283.jpg

2、本機房到聯通運行商的1線城市網絡監控情況104604341.jpg3、本機房到移動運行商的1線城市網絡監控情況104702477.jpg

4、本機房到電信運行商的2線城市網絡監控情況104750338.jpg

5、本機房到聯通運行商的2線城市網絡監控情況104831285.jpg

6、本機房到移動運行商的2線城市網絡監控情況104913560.jpg

7、本機房到教育網的網絡監控情況104959883.jpg

如果達到這樣的監控效果,你就能很清楚的瞭解你當前idc機房的網絡情況,從圖上的延時與丟包能分辨出你機房的網絡是否穩定,是否爲多線,是否爲BGP機房,到各城市的3個運行商網絡各是什麼情況,如果出現問題,如果有針對的解決。而且如果選擇新機房的時候,你可以根據smokeping的監控結果來判斷這個機房是否適合。

下面是上面監控裏ip的信息(如果大家想實現上面監控,可以使用下面的ip)

105602701.jpg105631911.jpg105707942.jpg105745402.jpg105828253.jpg





本文出自 “吟—技術交流” 博客,請務必保留此出處http://dl528888.blog.51cto.com/2382721/1266598


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