SNMP 簡介
簡單網路管理協定,可以用來監控網路裝置,簡單的說明大致上可以分為
MIB:存放裝置狀態的資料庫
SNMP Agent:幫你管裝置的代理程式
而資料是存放在管理系統中,因為管理資料的複雜性,它包含多個元件:
管理資訊結構(Structure of Management Information,SMI)
管理資訊庫(Management Information Base, MIB)
協定(如SNMP)
SMI指定結構和描述管理資料,MIB詳細記錄各個物件,協定負責使用者和管理者之間的溝通, SMI使用樹狀的概念,一些物件代表樹葉,也只有葉節點才有存放MIB值。 代表的物件是使用ISO ASN.1 (Abstract Syntax Notation-1)的概念。 SMI對每一個物件分配一個整數,稱為物件識別碼(Object Identifier, OID)來記錄它們在樹狀圖中的位置, 詳細說明可以參考以下連結SNMP網路管理程序,文魁資訊股份有限公司
注意: 要注意的是有些系統,有些MIB編號是浮動式的,每次 Enable 或 Disable 一個介面,該編號都會有異動。所以當MRTG 執行後,會產生 mrtg.ok 檔案,此檔案會紀錄目前哪一個編號對應到哪一個介面,當發生錯誤時,必須要自行核對此檔案,然後手動去修改介面編號的正確值。
MIB與Device
每個提供SNMP的裝置都有他的MIB,裡面存放的就是此裝置目前狀態的值,例如說一張網路卡的MIB可能有下列這幾樣, 網路卡名稱,網路卡現在狀態(on,off),網路流量...等(有點像物件導向中的物件),而我們藉由查詢這些MIB的值來瞭解現在裝置的狀況
ANS.1與BER
系統監控與MRTG
如何找出監控項目,當然嚕,就是要看MIB與SMI嚕,很累的,至於SMI與Private的資料,請回到上面的SMI與MIB,有相關連結, 你也可以看看 Windows 的 MIB,在%System%/System32/下面副檔名為MIB的,用記事本打開就可以看了
MRTG 安裝
這裡提供了一個在Windows下裝 MRTG的方法,寫的不錯,請自行參照
Linux的人請自行使用搜尋引擎,有很多可以讓你看,不提供連結了,你可以在 cfgmaker 下一些參數讓你的 cfg 檔產生一些變化,範例如下
cfgmaker --global "WorkDir: c:\www\mrtg" --global "Refresh: 600" --global
"Interval: 5" --global "WriteExpires: Yes" --global "Language: big5" --global
"options[_]: bits" --ifdesc=descr --ifref=descr
public@127.0.0.1
不過通常來說,我都是這樣下的(在windows下的環境)
perl cfgmaker public@127.0.0.1 --global "WorkDir: c:\www\mrtg" --global
"Language: big5" --output mrtg.cfg
他只是幫你做cfg檔,你也可以直接跳過,自己寫
- 再來輸入 perl mrtg mrtg.cfg 按下 ENTER"(在這步驟的時候,你的cfg檔裡面最好不要有 RunAsDaemon:yes的指令)
- 接著修改mrtg.cfg ,使用文書編輯軟體,在mrtg.cfg的最後加上一行 RunAsDaemon: yes之後存檔
- 再來回到 C:\ 下輸入 start /Dc:\mrtg\bin wperl mrtg --logging=eventlog mrtg.cfg MRTG即開始工作
Note: 關於第一點, 在這裡 Complier 的時候,若在 < table > 那邊出現錯誤, 則代表你把 HTML 斷行了,導致他們變成了數個字串,所以 MRTG 不能 Complier, 這種情況多發生在您去直接 copy 網頁上的 cfg 檔,而導致產生斷行, 有時候不能 Complier 是你的 target 有問題,有空格或是怎樣的,自行排除
當你重開機後,他就不會幫你自動的偵測,若要再啟動,只要再做一次第三步驟就可以了,因為如果要做 Polling 的話, 就必須要加 RunAsDaemon:yes 與 Start 的指令,但是如果在第一步就先加了 RunAsDaemon:yes,則好像會過不了 complier,所以才要那磨麻煩
這邊節錄了Polling的方法,瞭解一下原理嚕,翻譯至 MRTG 的 Win32
MRTG Installation Guide
MAKE MRTG RUN ALL THE TIME
Starting mrtg by hand every time you want to run it is not going to make you
happy I guess.
There is a special option you can set in the mrtg configuration file so so
that mrtg will not terminate after it was started. Instead it will wait for 5
minutes and then run again.
Add the option
RunAsDaemon: yes
to your mrtg.cfg file and start it with:
start /Dc:\mrtg-2.9.27\bin wperl mrtg --logging=eventlog mrtg.cfg
If you use wperl instead of perl, no
console window will show. MRTG is now running in the background. If it runs into
problems it will tell you so over the EventLog.
想要停止 MRTG 的話,就打開工作管理員,把 wperl.exe process 停掉,假如MRTG有任何訊息要告訴你,你可以在event log這邊找到這些訊息, 假如你放一個捷徑
Target: wperl mrtg --logging=eventlog mrtg.cfg
Start in: c:\mrtg-2.9.27\bin
進去你的啟動資料夾裡, mrtg will now start whever you login to your NT box.
若你想啟動MRTG而不需登入.參考這個網站,這裡有非常多的免費軟體可以讓你啟動 Server,包括 MRTG 的使用者
詳細的OIDs
你可以利用詳細的OID 去查詢語法如下
syntax 'OID_1&OID_2:community@router
The following example will retrieve error counts for input and output on
interface 1.
MRTG needs to graph two variables, so you need to specify two OID's such as
temperature and humidity or error input and error output.
Example:
Target[ezwf]: 1.3.6.1.2.1.2.2.1.14.1&1.3.6.1.2.1.2.2.1.20.1:public@myrouter
MIB 變數
你也可以利用MRTG所定義的名稱去做查詢,你可以看看MRTG裡的mibhelp.txt 那裡列出了一些他們定義的參數,舉個例來說,我若要查ifInErrors與ifOutErrors. 就可以打入下列這樣
Example:
Target[ezwf]: ifInErrors.1&ifOutErrors.1:public@myrouter
他會自動去參照mibhelp.txt而找出正確的OID
LoadMIBs
Load the MIB file(s) specified and make its OIDs available as symbolic names. For better efficiancy, a cache of MIBs is maintained in the WorkDir.
Example:(用逗號隔開)
LoadMIBs: /dept/net/mibs/netapp.mib,/usr/local/lib/ft100m.mib
XSize and YSize
MRTG圖形大小的預設值為 100 by 400 pixels wide (plus some more for the labels. In the example we get almost square graphs ...
Note: XSize 必須在 20 與 600之間 ; YSize 必須大於 20
Example:
XSize[ezwf]: 300
YSize[ezwf]: 300
XZoom and YZoom
If you want your graphs to have larger pixels, you can ``Zoom'' them.
Example:
XZoom[ezwf]: 2.0
YZoom[ezwf]: 2.0
XScale and YScale
If you want your graphs to be actually scaled use XScale and YScale. (Beware: while this works, the results look ugly (to be frank) so if someone wants to fix this: patches are welcome.
Example:
XScale[ezwf]: 1.5
YScale[ezwf]: 1.5
note : 若想看個更清楚,可以把Xsize調成100,然後把Xscale變成4,這樣一來還是400,不會破壞美觀
YLegend, ShortLegend, Legend[1234]
The following keywords allow you to override the text displayed for the various legends of the graph and in the HTML document:
YLegend 就是你圖表上Y軸所顯示的文字,但是不要取的太長的名子,否則會被忽略
ShortLegend 測量的單位(預設為'b/s') 出現在統計網頁的Max, Average and Current的單位
Legend[1234IO] 線的說明:在統計圖表最下面那邊,最多可以6個(1234io)
Example:
YLegend[ezwf]: Bits per Second
ShortLegend[ezwf]: b/s
Legend1[ezwf]: Incoming Traffic in Bits per Second
Legend2[ezwf]: Outgoing Traffic in Bits per Second
Legend3[ezwf]: Maximal 5 Minute Incoming Traffic
Legend4[ezwf]: Maximal 5 Minute Outgoing Traffic
LegendI[ezwf]: In:
LegendO[ezwf]: Out:
Note,if LegendI or LegendO are set to an empty string with LegendO[ezwf]: The corresponding line below the graph will not be printed at all.
以下還有一些參數,是參考網路上的資料而來的而來的,不過我有補充一些所以跟原文不同,要看原文可以去網路上搜尋
MRTG 快速安裝指導1-4
這邊補充一點資料 MRTG 快速安裝指導1-4
Note: 在這裡Complier的時候,若在