作者 主題: [教學] SNMP+MIB 做法 (dark 兄照過來)  (閱讀 78341 次)

0 會員 與 1 訪客 正在閱讀本文。

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[教學] SNMP+MIB 做法 (dark 兄照過來)
« 於: 2003-08-21 02:15 »
SNMP Server 的設定請參考 netman 兄的文件,我巳不能增減其一字  :D
http://www.study-area.org/tips/tipsfr1.htm

SNMP Client 則是本篇的重點, 簡單的介紹一下 snmp client 的使用
一般我們大多是使用 snmpget 及 snmpwalk, 但個人較習慣用 snmpwalk + MIBS
的使用方法,這些東西我都是剛學沒多久 (從 Google Search 來的),不過我想
在一般的使用上對我應沒有什麼問題了才是 (下一步學 trap)

snmpget 要指定整個 OID,
snmpwalk 則是指出一個節段,他會幫你走完以下全部的點及值
不過以 OID 的數字機制,簡直比 IP 還難背,而 IP 有 DNS 支援解析
相同的 OID 也有 MIBS (Management Information Base) 以名稱來表示
只要援用相關設備的 MIBS ,就可以很方便的找到你要的 SNMP 資訊

CISCO 的 MIBS 網頁
http://www.cisco.com/public/sw-center/netmgmt/cmtk/mibs.shtml
CISCO MIBS FTP site  ftp://ftp.cisco.com/pub/mibs/
(其他廠商我不知道....)

這裏有一個很多 System 或 Vendor 的 MIBS 的網頁,大家亦可參考看看(很多有用的東西哦)
http://smurfland.cit.buffalo.edu/ftp/pub/mibs/


1. 設定檔
   Server 端一般的 snmpd.conf 我就不介, 由於敝單位大多使用 CISCO 設備,
   所以得先在 Router 或 Switch 開 snmp-server
   (開法都很簡單 snmp-server ....,所以我就不多言了,但一定要設 Access Control,
    也要注意你的 IOS 版本是否有 SNMP 漏洞的問題)
   一般 Vendor 設備開 snmp 起來時,其也會 load MIBS 進入系統,所以也可使用相關的指
   令查到其 MIBS 或 OID

   那 Client 端要怎麼設才能抓到設備或遠端的 SNMP 資料呢 ?
   本處我僅介紹使用 MIBS 的方法, 不用 MIBS 實在太不人道了

   下列例子我皆以 CISCO 2950 為例
方法一:
   環境變數(目錄,及那一個 MIBS file,不要加最後的 .my ):  
        $> export MIBDIRS=/usr/share/snmp/mibs
        $> export MIBS=CISCO-C2900-MIB
   MIBS 除了裝 SNMP 套件時會少量附一些外,其他你需要的可能都是要到 Vendor 處下載,
   若要使用全的的 MIBS 的話可以將 CISCO-C2900-MIB 換成 ALL, 如果你的 MIBS file 不多
   的話倒還無所課,但很多的話不建議你如此做,要使用多個 MIBS ,則可以
        $> export MIBS=CISCO-C2900-MIB:UDP-MIB:TCP-MIB
   來使用,

   設定檔 /etc/snmp/snmp.conf (系統 snmp 定義,沒有 d 哦) ~/.snmp/snmp.conf (User)
   內容很多,可參考 man page, 而我個人大概僅使用下列項目
   #/etc/snmp/snmp.conf
   mibdirs /usr/share/snmp/mibs/
   mibs CISCO-C2900-MIB:TCP-MIB:UDP-MIB
   defVersion 2c
   defCommunity Public
   #(def 這兩行不寫在 snmpwalk/snmpget 上要打 snmp???? -v 2c IP Public OID
   
   上兩行同上變數意義,第三行為 snmp version, 需與 sever 端配合,不過現在大概多是 2c 版
   最後一個 Community 大家習慣設 Public, 如果可以的話建議你換成一個只有你知道的名稱
   (指 SNMP Server 的 Community , snmp.conf 這裏要配合 Server 端)



2. 指令
   我只介紹有 MIBS 的狀況,不然這個數字 1.1.0 可是很長的,CISCO 設備描述):
   snmpget 一次只能抓一個哦~目標明確時使用

       $>snmpget My_2900_IP 1.1.0
       system.sysDescr.0 = Cisco Internetwork Operating System Software ...後略
       $>snmpget My_2900_IP sysDescr.0
       system.sysDescr.0 = Cisco Internetwork Operating System Software ...後略



   snmpwalk 取得該位置以下所有的節點,用 MIBS 是不是很清楚呢 ? 不需要考慮其 OID 為何
   只要 MIBS 用對了即可    
       $>snmpwalk My_2900_IP tcp
   tcp.tcpRtoAlgorithm.0 = vanj(4)
   tcp.tcpRtoMin.0 = 300
   tcp.tcpRtoMax.0 = 60000
   tcp.tcpMaxConn.0 = -1
   tcp.tcpActiveOpens.0 = Counter32: 1
   tcp.tcpPassiveOpens.0 = Counter32: 29
   tcp.tcpAttemptFails.0 = Counter32: 0
   tcp.tcpEstabResets.0 = Counter32: 1
   tcp.tcpCurrEstab.0 = Gauge32: 0
   tcp.tcpInSegs.0 = Counter32: 10183
   tcp.tcpOutSegs.0 = Counter32: 6850
   tcp.tcpRetransSegs.0 = Counter32: 55
   tcp.tcpInErrs.0 = Counter32: 0
   tcp.tcpOutRsts.0 = Counter32: 9    

   $>snmpwalk My_2900_IP IfInOctets
   interfaces.ifTable.ifEntry.ifInOctets.1 = Counter32: 266156610
   interfaces.ifTable.ifEntry.ifInOctets.2 = Counter32: 4021982
   interfaces.ifTable.ifEntry.ifInOctets.3 = Counter32: 3675832515
   interfaces.ifTable.ifEntry.ifInOctets.4 = Counter32: 242336
   interfaces.ifTable.ifEntry.ifInOctets.5 = Counter32: 2555185044
   interfaces.ifTable.ifEntry.ifInOctets.6 = Counter32: 1611529637
   interfaces.ifTable.ifEntry.ifInOctets.7 = Counter32: 2376795729
   ...後略....
  Counter32 是 32bit 的累計值
  Gauge32 是 32bit 的差異值
  如果 .1 的Counter值依四次 timestamp 分原是 1 5 6 9
  則其 Gauge 值則為 1 4 1 3
  這個值的 TYPE 對畫 mrtg 是有些影響的
  如果想對 MIBS 熟一點可以找一個叫 MIBBroswer 的軟體 (我沒用過),相信對 SNMP
  的管控可以更清楚明瞭,MIBS file 內基本上即會有每個定義的解釋,多看幾遍就知
  道他的語法了
    
  要取一個值或取多個值完全看個人需要,再根據值來畫圖即可

  用這套方法,加上 RRD (或 mrtg+rrd )即可畫出每個 Switch port 的流量(下例是有接線我的才畫,沒接的就不畫,有沒有接可用 snmp 抓到,本例我將 IP 拿掉了)

sikki

  • 可愛的小學生
  • *
  • 文章數: 3
    • 檢視個人資料
[教學] SNMP+MIB 做法 (dark 兄照過來)
« 回覆 #1 於: 2005-06-07 16:30 »
能指導一下system.sysDescr.0
system.sysUpTime.0
tcpPassiveOpens.0
tcpCurrEstab.0
這些指令的用途嗎?
謝謝

ZMAN

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 6247
  • 性別: 男
    • 檢視個人資料
    • 魔力門部落格
[教學] SNMP+MIB 做法 (dark 兄照過來)
« 回覆 #2 於: 2005-06-07 16:54 »
這是RFC1213文件都有說明
幫你剪貼一些出來
不知道是不是你要的

sysDescr OBJECT-TYPE
              SYNTAX  DisplayString (SIZE (0..255))
              ACCESS  read-only
              STATUS  mandatory

              DESCRIPTION
                      "A textual description of the entity.  This value
                      should include the full name and version
                      identification of the system's hardware type,
                      software operating-system, and networking
                      software.  It is mandatory that this only contain
                      printable ASCII characters."
              ::= { system 1 }


sysUpTime OBJECT-TYPE
              SYNTAX  TimeTicks
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The time (in hundredths of a second) since the
                      network management portion of the system was last
                      re-initialized."
              ::= { system 3 }

tcpPassiveOpens OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of times TCP connections have made a
                      direct transition to the SYN-RCVD state from the
                      LISTEN state."
              ::= { tcp 6 }

tcpCurrEstab OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of TCP connections for which the
                      current state is either ESTABLISHED or CLOSE-
                      WAIT."
              ::= { tcp 9 }
佈線深似海!
網路高如天!