實戰snmp
1,為什麼需要snmp?
對於大部分運維人員來說監控一臺伺服器不是什麼大問題,開源方案提供了很多的解決方法,但是現在需要你監控多型別硬體,多型別系統,可能帶來很多麻煩。熟悉運維工作的人一定會想到naigos,cacti,等等。那麼它們是怎麼實現對伺服器的監控的呢?那就是snmp!!!
2,什麼是snmp?
簡單網路管理協議(SNMP),由一組網路管理的標準組成,包含一個應用層協議(application layer protocol)、資料庫模型(database schema),和一組資料物件。該協議能夠支援網路管理系統,用以監測連線到網路上的裝置是否有任何引起管理上關注的情況。該協議是網際網路工程工作小組(IETF,Internet Engineering Task Force)定義的internet協議簇的一部分。
3,snmp是如何工作的?
駐留在被管裝置上的AGENT從UDP埠161接受來自網管站的報文,經解碼、團體名驗證、分析得到管理變數在MIB樹中對應的節點,從相應的模組中得到管理變數的值,再形成響應報文,編碼傳送回網管站。網管站得到響應報文後,再經同樣的處理,最終顯示結果。
詳細介紹Agent接受到報文後採取的動作:
第一步:解碼生成用內部資料結構表示的報文,如果解碼過程中出現錯誤導致解碼失敗則丟棄該報文,不做進一步處理。
第二步:將報文中的版本號取出,如果與本Agent支援的SNMP版本不一致,則丟棄該報文,不做進一步處理。
第三步:將報文中的團體名取出,此團體名由發出請求的網管站填寫。如與本裝置認可的團體名不符,則丟棄該報文,不做進一步處理,同時產生一個陷阱報文。SNMPv1只提供了較弱的安全措施,在版本3中這一功能將大大加強。
第四步:從通過驗證的ASN.1物件中提出協議資料單元PDU,如果失敗,丟棄報文,不做進一不處理。否則處理PDU,結果將產生一個報文,該報文的傳送目的地址應同收到報文的源地址一致。
4,snmp的基本操作
5,管理資訊庫(MIB)
MIB 定義了可以通過網路管理協議進行訪問的管理物件的集合。MIB 可以描述為一棵樹,各個資料項構成了樹的葉結點。每個 MIB 物件都有一個唯一的物件識別符號(OID)來標識和命名,這個識別符號取決於 MIB 物件在樹中的位置,而物件的例項也有識別符號,由物件類的物件識別符號加上例項識別符號構成的。
物件命名樹的頂級物件有三個,即ISO、ITU-T和這兩個組織的聯合體。在ISO的下面有4個結點,其中的一個(標號3)是被標識的組織。在其下面有一個美國國防部(Department of Defense)的子樹(標號是6),再下面就是Internet(標號是1)。在Internet結點下面的第二個結點是mgmt(管理),標號是2。再下面是管理資訊庫,原先的結點名是mib。1991年定義了新的版本MIB-II,故結點名現改為mib-2,其標識為{1.3.6.1.2.1},或{Internet(1) .2.1}。這種標識為物件識別符號。
MIB-II管理的資訊有10個類別,如下:
6,如何通過snmp獲取伺服器的資訊
上面已經介紹了MIB的結構,那麼如何在MIB中查詢自己想要伺服器的資訊呢?
所有裝置的基本資訊會放在。1.3.6.1.2.1
如:
檢視系統資訊
[root@R710 ~]# snmpwalk -v 2c -c 'public' 10.11.45.70 1.3.6.1.2.1.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Linux R410-70 2.6.32-71.el6.x86_64 #1 SMP Fri May 20 03:51:51 BST 2011 x86_64
檢視主機名
[root@R710 ~]# snmpwalk -v 2c -c 'public' 10.11.45.70 1.3.6.1.2.1.1.5
SNMPv2-MIB::sysName.0 = STRING: R410-70
檢視ip地址
[root@R710~]# snmpwalk -v 2c -c 'public' 192.168.0.1 1.3.6.1.2.1.4.20.1.1
IP-MIB::ipAdEntAddr.192.168.0.1 = IpAddress: 192.168.0.1
IP-MIB::ipAdEntAddr.x.x.x.x = IpAddress: x.x.x.x
IP-MIB::ipAdEntAddr. x.x.x.x = IpAddress: x.x.x.x
IP-MIB::ipAdEntAddr.127.0.0.1 = IpAddress: 127.0.0.1
所有裝置基本資訊和cisco一樣,可以在一下網站查詢
http://tools.cisco.com/Support/SNMP/do/BrowseOID.do?local=en
例如查詢系統資訊:
enterprises.私有MIB和OID
如果你通過公開的MIB和OID無法採集得到監控資料,可以嘗試在企業私有的MIB和OID中查詢。
例如H3C的私有MIB和OID沒有公開,所以只有自己動手尋找。企業的私有MIB存在於 1.3.6.1.4.1下面,H3C也不例外。查詢企業私有的MIB方法如下:
#snmpwalk -v 2c -c xxx 10.180.20.1 1.3.6.1.4 .1 > 7502.txt
從輸出內容來看H3C的私有MIB是:SNMPv2-SMI::enterprises.2011 使用的enterprises number為2011,跟Huawei一樣的。
使用分支可能包括包括如下分支:
SNMPv2-SMI::enterprises.2011.1
SNMPv2-SMI::enterprises.2011.2
SNMPv2-SMI::enterprises.2011.5
SNMPv2-SMI::enterprises.2011.6
SNMPv2-SMI::enterprises.2011.10
SNMPv2-SMI::enterprises.2011.18
查詢企業私有的MIB和OID網站如下
http://www.oidview.com/mibs/detail.html
相關資料
debian相關資訊 http://www.debianadmin.com/linux-snmp-oids-for-cpumemory-and-disk-statistics.html