一個IDC機房,倘若沒有流量監控平台,那就等于兩眼一抹黑。利用流量監控不僅能監控一些伺服器的通路量情況,而且還能監控一些大規模的網絡攻擊。下面我們來看一個比較老的流量監控軟體—MRTG MRTG有windows版本和Linux版本。今天我們看一下Linux的MRTG是如何搭建的。
MRTG(Multi Router Traffic Grapher),通常講是一個監控網絡鍊路流量負載的開源軟體,它可以從所有運作SNMP協定的裝置上(包括伺服器、路由器、交換機等)抓取資訊。事實上它不僅可以監控網絡裝置,任何其它的支援SNMP協定的裝置都可以做為MRTG的監控對象,并自動生成包含PNG圖形格式的HTML文檔,通過HTTP方式顯示給使用者。
一、安裝GD庫(用于圖檔的生成)
1、安裝libpng
#tar xvf libpng-1.2.10.tar.tar
#cd libpng-1.2.10
#./configure --prefix=/usr/local/png
#make;make install
#ln -s /usr/local/png/lib/* /usr/lib/
2、安裝jpeg
#mkdir /usr/local/jpeg
#mkdir /usr/local/jpeg/bin
#mkdir /usr/local/jpeg/lib
#mkdir /usr/local/jpeg/include
#mkdir /usr/local/jpeg/man
#mkdir /usr/local/jpeg/man/man1
#tar xvf jpegsrc.v7.tar.tar
#cd jpeg-7
#./configure --prefix=/usr/local/jpeg --enable-shared --enable-static
#ln -s /usr/local/jpeg/lib/* /usr/lib/
3、安裝 freetype
#tar xvf freetype-2.3.9.tar.tar
#cd freetype-2.3.9
#./configure --prefix=/usr/local/freetype
4、安裝fontconfig
#tar zxvf fontconfig-2.4.2.tar.gz
#cd fontconfig-2.4.2
#./configure --prefix=/usr/local/fontconfig --with-freetype-config=/usr/local/freetype/bin/freetype-config
5、安裝GD
#tar zxvf gd-2.0.32.tar.gz
#cd gd-2.0.32
#./configure --prefix=/usr/local/gd --with-png=/usr/local/png --with-jpeg=/usr/local/jpeg --with- freetype=/usr/local/freetype --with-
fontconfig=/usr/local/fontconfig
出現如下資訊則說明GD配置正确
** Configuration summary for gd 2.0.32:**
Support for PNG library: yes
Support for JPEG library: yes
Support for Freetype 2.x library: yes
Support for Fontconfig library: yes
Support for Xpm library: no
Support for pthreads: yes
#cp /usr/local/png/include/png.h ./
#cp /usr/local/png/include/pngconf.h ./
6、安裝zlib-1.2.3.tar.gz
#tar zxvf zlib-1.2.3.tar.gz
#cd zlib-1.2.3
#./configure --prefix=/usr/local/zlib
#make && make install
二。安裝Apache
#tar zxvf httpd-2.2.11.tar,gz
#cd httpd-2.2.11
#./configure --prefix=/usr/local/apache --enable-modules=most
三、安裝MRTG
#tar -zxvf mrtg-2.13.2.tar.gz
#cd mrtg-2.13.2
#./configure --prefix=/usr/local/mrtg --with-gd=/usr/local/gd --with-gd-lib=/usr/local/gd/lib --with-gd-inc=/usr/local/gd/include --with-
png=/usr/local/png --with-png-lib=/usr/local/png/lib --with-zlib=/usr/local/zlib --with-zlib-lib=/usr/local/zlib/lib
#make&&make install
需要gd庫,同樣采用源碼編譯,在編譯過程中碰到 `png_check_sig’ 錯誤。
google了一下,發現由于使用的新的 libpng 1.4版本,去掉了png_check_sig函數,替換為了png_sig_check函數
,于是編輯gd庫的 gd_png.c檔案,将
if (!png_check_sig (sig, 8)) { /* bad signature */
return NULL;
}
修改為
if (png_sig_cmp (sig, 0, 8)) { /* bad signature */
再次編譯通過
來源:http://www.sunnyu.com/?p=211
四、配置MRTG
1、 生成MRTG配置檔案mrtg.cfg,用于存放mrtg的配置資訊
首先我們建立一個目錄,用于存放MRTG配置檔案
#mkdir /usr/local/mrtg/etc
#/usr/local/mrtg/bin/cfgmaker --output /usr/local/mrtg/etc/mrtg.cfg luwenju @202.106.0.20
注:luwenju @202.106.0.20是我們所要監控的交換機,luwenju為交換機SNMP的團體名,202.106.0.20是交換機的管理IP位址。交換機上如何開啟SNMP請自行參閱資料,有一點切忌:為了伺服器的安全起見,交換機上的SNMP配置時應該配置成隻讀,不允許有寫入或者執行權限!
2、修改MRTG配置檔案mrtg.cfg
#vi /usr/local/mrtg/etc/mrtg.cfg
把Workdir後的路徑改成/usr/local/apache/htdocs 意思是指定mrtg流量頁面存放目錄.把#Options[_]: growright, bits 前面的#去掉,意思是定義流量機關大小,然後在另起一行,加入Language:Chinese 意思是使mrtg支援中文
3、收集交換機每個端口的狀态資訊并把搜集的資訊存儲到MRTG配置檔案當中
#env LANG=C /usr/local/mrtg/bin/mrtg /usr/local/mrtg/etc/mrtg.cfg
注:執行時多執行幾遍,隻到不出現任何提示資訊
4、為交換機生成html檔案,以供使用者通路
# /usr/local/mrtg/bin/indexmaker --output /usr/local/apache/htdocs/index.html --title=ruishengIDC --sort=title --sort=name --sort=descr --sort=original /usr/local/mrtg/etc/mrtg.cfg
5、讓MRTG監控資訊自動更新
我們可以利用cron程序,讓MRTG自動重新整理,方法如下
#crontab -e
然後寫入*/5 * * * * env LANG=C /usr/local/mrtg/bin/mrtg /usr/local/mrtg/etc/mrtg.cfg
意思是讓MRTG每5分子更新一次
6.測試
下面我們在浏覽器中輸入伺服器的IP位址或者域名就可以看到我們要監控的流量了,如下圖
四、為MRTG做授權通路
倘若一個機房的網絡帶寬使用情況誰檢視都可以,那未免也有點太那啥了吧。。。 是以,我們做授權通路是有必要的
1. 建立虛拟使用者
建立這個虛拟使用者的目的就在于隻讓這個使用者通路MRTG的監控頁面,首先我們建立一個目錄,用于存放虛拟使用者的使用者密碼
# mkdir /etc/webpasswd
建立虛拟使用者,我們建立一個虛拟使用者luwenju,将其配置檔案放到/etc/webpasswd/luwenjupwd
#/usr/local/apache/bin/htpasswd -c /etc/webpasswd/luwenjupwd luwenju
注:執行完上述指令後會要求設定此使用者的密碼,我們輸入想要設定的密碼即可。Apache自帶的htpasswd指令提供了建立和更新存儲使用者名、密碼的文本檔案的功能。-c選項表示無論密碼檔案是否已經存在,都會重新寫入檔案并删去原有内容。
2、配置使用者認證
修改apache配置檔案vi /usr/local/apache/conf/httpd.conf 在配置檔案最後加入以下内容(倘若我們想在某個虛拟主機中實作身份驗證,那麼我們就把如下資訊加入某個虛拟主機中即可)
<Directory "/usr/local/apache/htdocs">
AuthType Basic
AuthName "Rui Sheng IDC"
AuthUserFile /etc/webpasswd/luwenjupwd
Require user luwenju
</Directory>
注:Directory定義我們針對那麼目錄進行授權,我們配置MRTG時讓html檔案生成到了/usr/local/apache/htdocs
AuthType 的意思是采用哪種模式進行驗證,我們使用basic
AuthName 的意思是登陸視窗的名稱
AuthUserFile 的的意思是指定使用者的密碼配置檔案
Require user 的意思是允許哪個使用者來通路
OK,完成上面設定後我們重新開機一下Apache,然後再浏覽器中通路時會彈出以下頁面
然後我們輸入正确的使用者名和密碼後就可以看到MRTG的流量監控頁面了,如下圖
在這篇文章中我有一個很大的疑惑:我沒有在Linux系統中安裝SNMP,在網上,我看到不少網友針對交換機每個端口流量的監控還在系統上再安裝SNMP,個人感覺沒必要,因為我們是監控的交換機每個端口出入的流量。倘若我們要監控的是某台伺服器的流量,才需要在某台伺服器上安裝SNMP。
本文出自 “陸文舉” 部落格,請務必保留此出處http://luwenju.blog.51cto.com/620835/246892