使用MRTG畫圖進行監控
使用MRTG畫圖進行監控
MRTG通常認為是一個性能監控工具,有著很長的使用歷史,很多網管都使用它來對系統進行監控。實際上,它真正的作用是一個畫圖工具。它可以接受一些數值參數,并根據這些值構建一個二維圖形以供監控使用。最常見的就是獲取設備的snmp信息,例如網絡流量,然后生成圖形。還可以從腳本得到CPU、Disk I/O、內存的數據,而呈現直觀的圖形。
雖然其功能有限,而且已經逐步被rrdtool代替。但因為大部分發行版都自帶MRTG軟件包,使用也非常簡單,所以,在小范圍的網絡環境中,還是有其用武之地的。
為方便說明,我先以一個最簡單的例子:從snmp獲取網絡流量,使用MRTG顯示為例來說明。及后再補充從其他方式獲取數據的方式。
一、系統平臺
以紅旗DC Server 5.0為例:
- # rpm -qa|grep mrtg
- mrtg-2.10.15-1
此外,為從設備得到網絡數據,最簡單的方式就是從snmp獲取信息。還有,mrtg會生成png文件,并需要放到web上顯示,所以,最少需要有如下的支持包:
引用
- net-snmp gd-1.8.4-4 gd-devel-1.8.4-4 perl-5.6.0-17 perl-CGI mod_perl-1.24_01-3 libpng-1.0.12-2 libpng-devel-1.0.12-2 httpd(apache)
包括但不限于以上版本和文件。
二、打開SNMP權限
是否打開SNMP服務,并不是MRTG使用的條件。從SNMP獲取設備信息是比較方便而標準的辦法。
Linux下通常就是使用net-snmp(原稱ucd-snmp),默認情況,其提供一個public的community供使用,但并沒有打開允許接入的權限。
snmp的agent配置文件在:/etc/snmp/snmpd.conf
1、允許mib2庫讀取信息
修改:
- # group context sec.model sec.level prefix read write notif
- access notConfigGroup "" any noauth exact systemview none none
為:
- # group context sec.model sec.level prefix read write notif
- access notConfigGroup "" any noauth exact mib2 none none
2、使snmp信息通過mib2庫顯示
修改:
- #view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc
為:
- view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc
3、修改標識
把:
- syslocation Unknown (edit /etc/snmp/snmpd.conf)
- syscontact Root (configure /etc/snmp/snmp.local.conf)
修改為可標識該主機的信息:
- syslocation PrintServer
- syscontact Root
MRTG可以讀到該信息的。
4、啟動snmpd服務
- # service snmpd start
校驗:
- # netstat -ln|grep 199
- tcp 0 0 0.0.0.0:199 0.0.0.0:* LISTEN
三、配置MRTG
MRTG分如下兩部分:
a)工作目錄,存放圖形數據,供httpd顯示
b)配置文件
1、創建工作目錄
- # mkdir /var/www/html/mrtg
存在于/var/www/mrtg目錄可以不用理會。
2、生成配置文件
在/etc/mrtg目錄有一個mrtg.cfg文件,但太簡單,我們需要重新生成一個。
- # cfgmaker --output=/etc/mrtg/mailmrtg.cfg public@192.168.228.153
其中,public是snmp的community,192.168.228.153是其對應的主機IP地址。
3、設定全局參數
上述命令會通過snmp搜索主機上所有的網絡,并自動生成對應的參數。可根據實際情況排除不必要的網絡接口,例如:sit0、lo等,然后修改剩余的標識。
- # vi mailmrtg.cfg
設定工作目錄:
- WorkDir: /var/www/html/mrtg
4、設定網絡標識
以其中一個網卡為例:
- Target[192.168.228.153_2]: 2:public@192.168.228.153:
- SetEnv[192.168.228.153_2]: MRTG_INT_IP="192.168.228.153" MRTG_INT_DESCR="bond0"
- MaxBytes[192.168.228.153_2]: 12500000
- Title[192.168.228.153_2]: Traffic Analysis for 2 -- printserver
- PageTop[192.168.228.153_2]:
- System: printserver in Unknown (edit /etc/snmp/snmpd.conf)
- Maintainer: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
- Description: bond0
- ifType: ethernetCsmacd (6)
- ifName:
- Max Speed: 12.5 MBytes/s
- Ip: 192.168.228.153 (printserver)
其中:
[192.168.228.153_2]:是一個關鍵標識,屬于該標識的都屬于同一組;
2:public@192.168.228.153:是從那里獲取snmp信息,前面的2用于區分多個網卡設備,與snmp端相同;
SetEnv:是從snmp獲取網絡信息的參數;
MaxBytes:標識圖中***的縱向數據值;
Title:圖的標題
PageTop:詳細內容
修改為:
- Target[192.168.228.153_2]: 2:public@192.168.228.153:
- SetEnv[192.168.228.153_2]: MRTG_INT_IP="192.168.228.153" MRTG_INT_DESCR="bond0"
- MaxBytes[192.168.228.153_2]: 12500000
- Title[192.168.228.153_2]: Traffic Analysis for bond0 -- printserver
- PageTop[192.168.228.153_2]:
System:
其余的網卡可注釋,或刪除,或參考配置。
5、生成index.html
- # indexmaker --output=/var/www/html/mrtg/index.html --title=PrintServer /etc/mrtg/mailmrtg.cfg
6、由數據生成圖表
- # mrtg /etc/mrtg/mailmrtg.cfg
※注:由于開始沒有舊的日志數據,所以前兩次會報警告:
引用
- Rateup WARNING: /usr/bin//rateup could not read the primary log file for 192.168.228.153_2
- Rateup WARNING: /usr/bin//rateup The backup log file for 192.168.228.153_2 was invalid as well
當再運行兩次后即會正常。若出現Error信息,請重新查看前面的配置是否有誤!
7、修改默認httpd的mrtg配置
修改/etc/httpd/conf.d/mrtg.conf為:
- Alias /mrtg /var/www/html/mrtg
- Order deny,allow
- #Deny from all
- #Allow from 127.0.0.1
- #Allow from ::1
- # Allow from .example.com
- Allow from all
重啟httpd服務:
- # service httpd restart
※注:僅用于說明演示,并沒有考慮太多的權限問題,請自行解決。
8、查看輸出頁面
9、加入計劃任務
若一切正常,則把mrtg命令加入計劃任務即可。
在/etc/cron.d/mrtg加入:
引用
- */5 * * * * root /usr/bin/mrtg /etc/mrtg/mailmrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok
表示每5分鐘執行一次。
【編輯推薦】