IDC機房實戰MRTG


idc機房實戰mrtg
作者:田逸([email][email protected][/email]) 《開放系統世界》2006年第6期

mrtg(multi router traffic grapher)是一款比較流行的網絡流量監控工具,很多isp都喜歡用它來監控接口負載。本文側重描述在複雜環境下,部署mrtg網絡監控的一次經歷,希望對大家的工作有所幫助。

總共300來臺在線服務器,託管在3個不同的idc機房,所有的服務器都是連接在cisco交換機上,交換機支持網絡管理。爲了方便管理和減少單點故障的影響,所有的服務器和交換機都設置全球唯一單播ip地址,另外,所有的服務器的操作系統都是redhat linux或 sun solaris。但是,有這樣一些困難:1、連接交換機與服務器的雙繳線沒有做標記,這意味着你不知道某個服務器具體連接到哪個交換機的哪個端口。2、網絡絕對不能中斷,因爲這是商業運營。3、不清楚交換機間的連接拓撲。所以,即便配置好mrtg,也是不可能知道每個端口究竟是哪個服務器產生的流量,跟沒有部署mrtg沒有兩樣。所幸的是,每個服務器都貼了本機ip地址的標籤。要在這樣的情況下部署網絡流量監控,壓力和風險還是很大的。下面我就把這次處理過程按部就班的講述開來。

第一步:確認服務器的ip標籤是否與實際的機器ip一致。
把一臺服務器接上顯示器和鍵盤,登錄系統查看一下本機的ip地址,用命令 # ifconfig -a就可以了。接着使用ssh工具登錄到另外的服務器,運行命令# eject 彈出光驅來確定是那臺機器,驗證一下ip地址是否跟貼在上面的標籤相符。隨機測試幾個服務器,發現都是相符的。順便把網關確認一下,運行命令 # ip route,就知道整個網絡的上聯網關的ip地址。

第二步:確定交換機的連接拓撲。手裏有交換機的配置信息,知道每一個交換機的ip的,現在要做的是弄清楚同一個網段5個交換機(在不同的樓層,不能通過觀察知道連線)之間的連接情況。這個其實不難,登錄某個交換機,進入特權模式,運行命令 # show cdb neighbors 顯示鄰居。看下面的一個輸出信息:
sw_185# show cdp neighbors
capability codes: r - router, t - trans bridge, b - source route bridge
s - switch, h - host, i - igmp, r - repeater, p - ph

device id local intrfce holdtme capability platform port id
wj_waiwang02 gig 0/1 138 s i ws-c2950g-gig 0/2

我們可以清晰的看出,交換機的gig0/1與交換機 wj_waiwang02的端口gig0/2端口直連。用筆把這個連接用草圖畫出來,接着登錄其鄰居交換機wj_waiwang02,重複這個步驟直到把所有交換機的鄰接狀態查完,這樣就可以得到一個詳細的交換機端口間的連接狀況,不難畫出連接拓撲。
因爲mrtg需要交換機的snmp支持,把每個交換機的snmp功能啓用。運行配置命令sw_185(c snmp-server community sery ro ,把社區字設成”sery”且屬性爲只讀。

第三步:查找所有服務器的mac和ip地址對應值。linux自帶了一個很好的網絡工具nmap,登陸網內的某臺服務器,運行命令 # nmap 202.100.x.1-254 > /tmp/ipsacn.txt,把掃描結果輸出到文件/tmp/ipscan.txt,運行結束後,把它下載到自己的工作機上,以便於後面的分析工作。
在進行這個過程的時候,我遇到一個差異,就是有個網段掃描出來的結果沒有mac這個值,而另外一個機房的網段卻是有的。究其原因,是因爲nmap的版本不同所致。沒有mac是沒有任何用處的,當然這不工作沒有白做。運行命令 # nmap 202.100.x.1-254 ,等輸出還沒有全部顯示的時候運行命令 # arp -a > /tmp/arpinfo.txt將顯示所有服務器的ip和mac地址的信息,同樣可以達到目的。注意:arp自動刷新完成後,再運行arp -a 這個命令將只有幾行顯示輸出,所以一定要掌握好這個時間。
到這一步,我們可以得到一個ip與mac一一對應的關係文件,通過手動的辦法把它挨個複製到excel表中。

第四步:查每個交換機端口學習來的服務器mac。登錄每一個交換機,運行命令 # show mac-address-table 將輸出mac與端口號對應的行。由於每個端口都與服務器直連,那麼如果出現某個端口與多個mac相匹配,則此端口一定是上聯端口或交換機間的連接端口。找出那些端口號與mac一一對應的行,把它複製到一個excel表中。重複這個操作直到完成所有的輸出和複製工作。

第五步:根據第四和第五步的結果得出交換機端口與連接在端口上服務器的ip地址。這個過程全部依靠手工操作,所以需要耐心一點,並且多核對幾次。
ip與 mac 對應表 mac與port對應表
000b.cdd3.e0c3
202.100.x.31 00:0b:cc:d3:e0:c3 fa0/12
.
.
. .
.
. .
.
.
. .
.
.
.

以手工的方式查這兩個表,以mac爲橋樑,就能把ip與端口port一一對應了。把這個結果做成一個excel文件。

第六步:安裝、配置mrtg.在網內撥一臺linux服務器來做監控服務。
1、 安裝:redhat linux安裝光盤附帶mrtg rpm安裝包,運行命令 # rpm -ivh mrtg-2.9.17-3.i386.rpm很容易就安裝上去了。
2、 配置mrtg。在mrtg安裝目錄運行命令 # /usr/local/mrtg/bin/cfgmaker --global “workdir: /var/www/html/mrtg” --global “options:wright"  --show-op-down --ifref=nr --output=/etc/mrtg/mrtg1.cfg [email protected] ;每個交換機生成各自的一個配置文件,如 /etc/mrtg/mrtg2.cfg。
3、 生成訪問交換機的頁面文件。運行命令 # /usr/local/mrtg/bin/indexmaker /etc/mrtg/mrtg.cfg --output=/var/www/mrtg/index1.html ,依次生成5個頁面文件。
4、 配置apache服務。通過編輯文件/etc/httpd/conf/httpd.c # htpasswd /var/www/html/.htpasswd sery 添加有效用戶sery。
5、 把mrtg加入自動啓動任務裏。運行命令 # crontad -e ,把
*/5 * * * * /usr/local/mrtg/bin/mrtg /etc/mrtg/mrtg1.cfg --logging /var/log/mrtg1.log
*/5 * * * * /usr/local/mrtg/bin/mrtg /etc/mrtg/mrtg2.cfg --logging /var/log/mrtg95.log
*/5 * * * * /usr/local/mrtg/bin/mrtg /etc/mrtg/mrtg3.cfg --logging /var/log/mrtg123.log
*/5 * * * * /usr/local/mrtg/bin/mrtg /etc/mrtg/mrtg4.cfg --logging /var/log/mrtg186.log
*/5 * * * * /usr/local/mrtg/bin/mrtg /etc/mrtg/mrtg5.cfg --logging /var/log/mrtg187.log
加到文件中,保存後退出。

第六步:起用服務。
1、 啓用apache服務:# service httpd start。
2、 啓用mrtg: # /usr/local/mrtg/bin/mrtg /etc/mrtg/mrtg1.cfg。

第七步:手工修改頁面文件。根據第五步得出的結果,把頁面文件/var/www/html/mrtg/index1.html~index5.html的端口後標識其對應的服務器的ip地址。一個更好的改進就是再編輯一個頁面文件 /var/www/html/mrtg/index.html,把五個頁面文件鏈接在這個頁面文件中,這樣就更方便了。

在任意客戶端的機器的瀏覽器裏輸入url : [url]http://<[/url]監控服務器的ip>/mrtg/index1.html,然後系統提示輸入用戶名和密碼,就可以監控所有服務器的網絡負載。 整個過程比較麻煩的事情就是確定交換機端口所連服務器的ip地址,在一個不太重要的環境中,通過撥網線的方式就可以從一大堆亂七八糟的雙絞線找出端口另一頭在哪個服務器上,而在本案中不能挺機,所以拔網線觀望是萬萬不行的。同樣,通過對比找出端口與所連服務器ip地址一一對應的手工操作方式也是比較無聊的事情。但不能如何,我還是在沒有任何網絡業務中斷的情況下完成了這次任務。
通過這個個案,大家可以瞭解,在一項任務可能要涉及到很多方面,既有技術的,也有策略的。光從技術上講,就涉及到交換機的配置和操作、linux系統的處理等等。


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