mrtg 一直是網管一個很好用的監測工具,陪伴的網管渡過無數個夜晚... :tongue:


首先要先確認,本機的SNMP協定與服務都存在
# rpm -qa | grep snmp
net-snmp-utils-5.1.2-11
net-snmp-libs-5.1.2-11
net-snmp-5.1.2-11

# service snmpd status
snmpd (pid 13737) is running...

如果沒有安裝的話,就用yum線上裝一裝囉,快又方便! (剛剛查了一下,原來yum這個字是好吃!的意思...還真好玩 :)) )

接下來,先來檢查看看 snmp 的設定檔 /etc/snmp/snmpd.cfg 正不正確
有幾個重要的地方要看
# sec.name source community
com2sec local localhost public
com2sec local 192.168.1.0/24 public

sec.name 就是 security name 的意思,source 則是指資料的來源,community 則可以把他解釋成是一個共同的群體,也就是說,只有雙方 (資料來源端、資料處理端)處於同一個群體才能夠溝通,不然就無法溝通啦! =;
192.168.1.0/24 這個網段可以改成你所屬的網段,這樣你就可以監控這個網段的所有電腦囉,不過前提是被你監控的電腦需要有 SNMP 服務,不然你跟他要資料,他也不知道你要幹嗎...:-j
# sec.model sec.name
group local v1 local
group local v2c local
group local usm local

view all included .1
access local "" any noauth exact all none none

上面這一段,我也不知道是要幹嗎的,反正檢查看看,不對的就照著改囉... cfgmaker --global 'WorkDir: /var/www/mrtg' \
--global 'Options[_]: bits,growright' \
--global 'Language: big5' \
--output /etc/mrtg/mrtg.cfg \
public@your.machine.name
這邊要注意一點,當 mrtg 安裝完畢後,可能會自動新增一個 apache 的設定在 /etc/httpd/conf.d/mrtg.conf 中,不知道或者是忘記有這件事的人,可能會在 httpd.conf 搞了老半天,然後 mrtg 還是出不來 (我就是被他搞的人... :(( )
如果指令執行沒有錯誤的話,那就會產生出 /etc/mrtg/mrtg.cfg 檔案,然後連續執行底下的指令三次:
mrtg /etc/mrtg/mrtg.cfg

別問我為何是三次!我也不知道,大家都這麼說,哈哈...
如果有看到提示訊息跟你說 mrtg 不支援 UTF-8 的話,那就把指令改成:
env LANG=C mrtg /etc/mrtg/mrtg.cfg

這樣就 OK 囉...
接下來就是產生主要的 mrtg 首頁出來囉,也是透過方便的 mrtg 指令來完成就可以了:
indexmaker --columns=1 \
--output=/your/mrtg/html/path/index.html \
--title='Traffic Information' \
/etc/mrtg/mrtg.cfg

然後開啟瀏覽器,看看你的 mrtg 是不是起來了呢?

喔,對了,要記得在 crontab 中新增一筆記錄,設定每五分鐘就自動執行一次 mrtg ,這樣資料才會每五分鐘更新一次唷!
# vi /etc/crontab
*/5 * * * * root mrtg /etc/mrtg/mrtg.cfg > /dev/null 2>&1

如果有 UTF-8 的問題,一樣可以加上 env LANG=C 在 mrtg 指令之前

好啦,接下來先來測試本機的 snmp 服務有沒有起來:
cfgmaker public@localhost

如果有傳回一大堆東西的話,那就代表成功啦!

再來就是設定你要監測的設備囉,詳細的設定可以上 mrtg 的網站看看,文件都寫得很詳細,底下先列出一個範例,這是一個監測本機網路流量的範例:
XSize[device-name]: 300
Target[device-name]: !AA-BB-CC-DD-EE-FF:public@localhost:
MaxBytes[device-name]: 12500000
Title[device-name]: Network Interface Traffic for Localhost
PageTop[device-name]: Network Interface Traffic for Localhost
ShortLegend[device-name]: Bits/Sec


  • XSize[裝置名稱]: 300 代表的是圖片的寬度大小,範圍可以從20到600,還有一個YSize的屬性,不過通常這個屬性都不寫,直接採用預設值。

  • Target[裝置名稱]:!AA-BB-CC-DD-EE-FF:public@localhost: 當然指的就是要抓取資料的目標了,抓取資料的方式有很多種,這個可能需要參考文件好好研究才行...另外還有一種比較常用的方式就是利用 ` 符號來執行外部程式,反正只要傳回兩個數值給 mrtg 做圖就可以了。

  • MaxBytes[裝置名稱]:12500000 這裡設定最大的數值是要來跟 mrtg 傳回來的值做個比對的,這樣 mrtg 才知道圖示該做多大的比例調整,範例中 12500000表示的是 100 MB 的 Ethernet 網路頻寬。

  • Title[裝置名稱]:Network Interface Traffic for Localhost 當然就是表示這張圖的標題囉。

  • PageTop[裝置名稱]: 描述頁面上方該出現什麼東西,這裡通常都是寫些針對這張圖表的註解之類的。

  • ShortLegend[裝置名稱]: Bits/Sec 這裡是用來描述圖表中的單位表示。


大致上,一筆 mrtg 記錄 大概就長這個樣子,這個時候,耐心的等上 5 分鐘,等 crontab 跑完後,就會在你所設定的 HtmlDir 中產生出一個檔案名稱開頭為你所設定的裝置名稱的 html 檔案,開啟你的瀏覽器去看看吧,再過個 5 分鐘,就會發現圖片有變化囉,這樣就代表你的 mrtg 成功的 work 囉!

對了,原本我們利用 indexmaker 指令做出來的 index.html ,其實我們可以去修改這個檔案的內容,幫我們新增的裝置加入連結,或者是可以再執行一次 indexmaker 指令,這樣 mrtg 會自動讀取 mrtg.cfg 中的設定產生出每個裝置的連結,很方便的。

目前想到的就這些,日後有什麼補充的再加上來吧!

mrtg, snmp, linux
文章標籤
全站熱搜
創作者介紹
創作者 mattchen 的頭像
mattchen

痞子麥

mattchen 發表在 痞客邦 留言(0) 人氣(477)