Ubuntu

什麼是 OID、MIB?通過 check_snmp 檢查轉賬金額

  • June 4, 2020

我正在設置 snmpd 並嘗試通過 check_snmp 進行檢查。

snmpwalk -c public -v 2c localhost

iso.3.6.1.2.1.1.1.0 = STRING: "Linux ik1-325-22819 4.15.0-55-generic #60-Ubuntu SMP Tue Jul 2 18:22:20 UTC 2019 x86_64"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10
iso.3.6.1.2.1.1.3.0 = Timeticks: (45994) 0:07:39.94
iso.3.6.1.2.1.1.4.0 = STRING: "Me <me@example.org>"
iso.3.6.1.2.1.1.5.0 = STRING: "ik1-325-22819"
iso.3.6.1.2.1.1.6.0 = STRING: "Sitting on the Dock of the Bay"
iso.3.6.1.2.1.1.7.0 = INTEGER: 72
iso.3.6.1.2.1.1.8.0 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.11.3.1.1
iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.15.2.1.1
iso.3.6.1.2.1.1.9.1.2.3 = OID: iso.3.6.1.6.3.10.3.1.1
iso.3.6.1.2.1.1.9.1.2.4 = OID: iso.3.6.1.6.3.1
iso.3.6.1.2.1.1.9.1.2.5 = OID: iso.3.6.1.6.3.16.2.2.1
iso.3.6.1.2.1.1.9.1.2.6 = OID: iso.3.6.1.2.1.49
iso.3.6.1.2.1.1.9.1.2.7 = OID: iso.3.6.1.2.1.4
iso.3.6.1.2.1.1.9.1.2.8 = OID: iso.3.6.1.2.1.50
iso.3.6.1.2.1.1.9.1.2.9 = OID: iso.3.6.1.6.3.13.3.1.3
iso.3.6.1.2.1.1.9.1.2.10 = OID: iso.3.6.1.2.1.92
iso.3.6.1.2.1.1.9.1.3.1 = STRING: "The MIB for Message Processing and Dispatching."
iso.3.6.1.2.1.1.9.1.3.2 = STRING: "The management information definitions for the SNMP User-based Security Model."
iso.3.6.1.2.1.1.9.1.3.3 = STRING: "The SNMP Management Architecture MIB."
iso.3.6.1.2.1.1.9.1.3.4 = STRING: "The MIB module for SNMPv2 entities"
iso.3.6.1.2.1.1.9.1.3.5 = STRING: "View-based Access Control Model for SNMP."
iso.3.6.1.2.1.1.9.1.3.6 = STRING: "The MIB module for managing TCP implementations"
iso.3.6.1.2.1.1.9.1.3.7 = STRING: "The MIB module for managing IP and ICMP implementations"
iso.3.6.1.2.1.1.9.1.3.8 = STRING: "The MIB module for managing UDP implementations"
iso.3.6.1.2.1.1.9.1.3.9 = STRING: "The MIB modules for managing SNMP Notification, plus filtering."
iso.3.6.1.2.1.1.9.1.3.10 = STRING: "The MIB module for logging SNMP Notifications."
iso.3.6.1.2.1.1.9.1.4.1 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.2 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.3 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.4 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.5 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.6 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.7 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.8 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.9 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.10 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.2.1.0 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.1.1 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.1.2 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.1.3 = INTEGER: 3
iso.3.6.1.2.1.2.2.1.1.4 = INTEGER: 4
iso.3.6.1.2.1.2.2.1.1.5 = INTEGER: 5
iso.3.6.1.2.1.2.2.1.1.6 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.2.1 = STRING: "lo"
iso.3.6.1.2.1.2.2.1.2.2 = STRING: "Red Hat, Inc. Device 0001"
iso.3.6.1.2.1.2.2.1.2.3 = STRING: "Red Hat, Inc. Device 0001"
iso.3.6.1.2.1.2.2.1.2.4 = STRING: "Red Hat, Inc. Device 0001"
iso.3.6.1.2.1.2.2.1.2.5 = STRING: "docker0"
iso.3.6.1.2.1.2.2.1.2.6 = STRING: "br-6ec47ade44ad"
iso.3.6.1.2.1.2.2.1.3.1 = INTEGER: 24
iso.3.6.1.2.1.2.2.1.3.2 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.3.3 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.3.4 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.3.5 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.3.6 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.4.1 = INTEGER: 65536
iso.3.6.1.2.1.2.2.1.4.2 = INTEGER: 1500
iso.3.6.1.2.1.2.2.1.4.3 = INTEGER: 1500
iso.3.6.1.2.1.2.2.1.4.4 = INTEGER: 1500
iso.3.6.1.2.1.2.2.1.4.5 = INTEGER: 1500
iso.3.6.1.2.1.2.2.1.4.6 = INTEGER: 1500
iso.3.6.1.2.1.2.2.1.5.1 = Gauge32: 10000000
iso.3.6.1.2.1.2.2.1.5.2 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.5.3 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.5.4 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.5.5 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.5.6 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.6.1 = ""
iso.3.6.1.2.1.2.2.1.6.2 = Hex-STRING: 9C A3 BA 01 DF C3 
iso.3.6.1.2.1.2.2.1.6.3 = Hex-STRING: 9C A3 BA 03 66 63 
iso.3.6.1.2.1.2.2.1.6.4 = Hex-STRING: 9C A3 BA 04 ED 03 
iso.3.6.1.2.1.2.2.1.6.5 = Hex-STRING: 02 42 D7 D1 60 44 
iso.3.6.1.2.1.2.2.1.6.6 = Hex-STRING: 02 42 D8 24 17 95 
iso.3.6.1.2.1.2.2.1.7.1 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.2 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.3 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.7.4 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.7.5 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.6 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.8.1 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.8.2 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.8.3 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.8.4 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.8.5 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.8.6 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.9.1 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.2.2.1.9.2 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.2.2.1.9.3 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.2.2.1.9.4 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.2.2.1.9.5 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.2.2.1.9.6 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.2.2.1.10.1 = Counter32: 3214378817
iso.3.6.1.2.1.2.2.1.10.2 = Counter32: 1235162258
iso.3.6.1.2.1.2.2.1.10.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.10.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.10.5 = Counter32: 0
iso.3.6.1.2.1.2.2.1.10.6 = Counter32: 286316
iso.3.6.1.2.1.2.2.1.11.1 = Counter32: 135588065
iso.3.6.1.2.1.2.2.1.11.2 = Counter32: 60939410
iso.3.6.1.2.1.2.2.1.11.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.11.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.11.5 = Counter32: 0
iso.3.6.1.2.1.2.2.1.11.6 = Counter32: 4466
iso.3.6.1.2.1.2.2.1.12.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.12.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.12.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.12.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.12.5 = Counter32: 0
iso.3.6.1.2.1.2.2.1.12.6 = Counter32: 0
iso.3.6.1.2.1.2.2.1.13.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.13.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.13.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.13.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.13.5 = Counter32: 0
iso.3.6.1.2.1.2.2.1.13.6 = Counter32: 0
iso.3.6.1.2.1.2.2.1.14.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.14.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.14.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.14.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.14.5 = Counter32: 0
iso.3.6.1.2.1.2.2.1.14.6 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.5 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.6 = Counter32: 0
iso.3.6.1.2.1.2.2.1.16.1 = Counter32: 3214378817
iso.3.6.1.2.1.2.2.1.16.2 = Counter32: 2438196185
iso.3.6.1.2.1.2.2.1.16.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.16.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.16.5 = Counter32: 0
.
.
.

然後我嘗試檢查_snmp。

./check_snmp -H localhost -O
No OIDs specified

兩者都在同一個主機上。

我怎樣才能找到OID?對於 check_snmp?


我想知道介面的轉賬金額ens3

但是,老實說,我不知道從哪裡開始。

我試過這個。

$ snmpwalk -c public -v 2c localhost | grep ens3

iso.3.6.1.2.1.25.3.2.1.3.262146 = STRING: "network interface ens3"
iso.3.6.1.2.1.31.1.1.1.1.2 = STRING: "ens3"

$ ./check_snmp -H localost -O iso.3.6.1.2.1.31.1.1.1.1.2
No OIDs specified

OID是****對象標識符。在數字形式中,它們表示為由點分隔的數字字元串。它們還具有符號形式,其中數字根據某些定義映射到關鍵字。

的 OIDiso只是1,因為它標識了 OID 樹結構根的第一個主分支。如果您沒有可用的相應符號資訊,您可以從符號形式的任何 OID 開始,然後為其添加數字後綴。

這些定義以標準化格式儲存在 MIB 文件中。

您的系統顯然沒有載入標準 MIB 文件,或者您snmpwalk的系統沒有配置為使用它們。否則,您的 snmpwalk 輸出看起來更像這樣:

SNMPv2-MIB::sysDescr.0 = STRING: "Linux ik1-325-22819 4.15.0-55-generic #60-Ubuntu SMP Tue Jul 2 18:22:20 UTC 2019 x86_64"
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-TC::linux
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (45994) 0:07:39.94
SNMPv2-MIB::sysContact.0 = STRING: "Me <me@example.org>"
SNMPv2-MIB::sysName.0 = STRING: "ik1-325-22819"
SNMPv2-MIB::sysLocation.0 = STRING: "Sitting on the Dock of the Bay"
SNMPv2-MIB::sysServices.0 = INTEGER: 72
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (1) 0:00:00.01

… 等等。這樣資訊量大一點,你不覺得嗎?

除了 OID 的名稱之外,MIB 文件還定義了其他內容:它還包含對各種值的含義的描述,並定義了形成資訊表的 OID 組。

在 OIDiso.3.6.1.2.1.31.1.1開始一個網路介面統計表,稱為IF-MIB::ifXTable. 表單中的 OID 構成iso.3.6.1.2.1.31.1.1.1.1.N表的第一列,標識每個介面的名稱。通過該介面向內傳輸的字節數位於表的另一列,iso.3.6.1.2.1.31.1.1.1.6.N分別具有 OID 形式,其中 N 對應於介面的名稱。通過介面向外傳輸的字節數在另一列中,OID 格式為iso.3.6.1.2.1.31.1.1.1.10.N

從您的命令中,我可以看到N您介面的 SNMP 表行號 ( )ens3為 2。記住這一點;以後會用到。

載入並使用 MIB 後,您將能夠使用該snmptable命令以一種有意義的方式一次查看所有此類表。例如,要查看此介面統計資訊表,您可以執行:

snmptable -c public -v 2c localhost IF-MIB::ifXTable

並將其全部顯示在表格中。(這是一張相當寬的桌子,所以如果你想試試這個,先把你的終端視窗拉得很寬。)

snmptable命令僅在定義相應表的 MIB 文件可用時才有效。


在 Debian 上,大概也在 Ubuntu 上,您可以sudo apt install snmp-mibs-downloader從 Internet 上的權威標準源下載大量標準 MIB,對它們應用一些勘誤表,然後/var/lib/snmp/mibs/為您儲存它們。它可能會在安裝軟體包時自動下載它們,或者您可能需要使用該sudo download-mibs命令。

要開始使用下載的 MIB,您可能需要在 中註釋掉一行/etc/snmp/snmp.conf

# As the snmp packages come without MIB files due to license reasons, loading
# of MIBs is disabled by default. If you added the MIBs you can reenable
# loading them by commenting out the following line.
mibs :

只需註釋掉最後一行或將其替換為mibs ALL,或~/.snmp/snmp.conf使用單行創建mibs ALL,您將自動使用下載的 MIB。

還有特定於供應商的 MIB,它可以描述特定於供應商的 OID,以及特定於特定品牌和型號的設備的更多資訊。通常,您可以從供應商的支持下載站點獲得這些,通常作為某些供應商特定管理包的一部分。


使用check_snmp時,您需要使用-o小寫)選項指定 OID。例如,要監控ens3網路介面上傳入的數據量,您應該執行:

./check_snmp -H localhost -C public -P 2c -O -o iso.3.6.1.2.1.31.1.1.1.6.2

或者如果您安裝了 MIB:

./check_snmp -H localhost -C public -P 2c -O -o IF-MIB::ifHCInOctets.2

對於出站傳輸的數據:

./check_snmp -H localhost -C public -P 2c -O -o iso.3.6.1.2.1.31.1.1.1.10.2

或使用 MIB:

./check_snmp -H localhost -C public -P 2c -O -o IF-MIB::ifHCOutOctets.2

引用自:https://unix.stackexchange.com/questions/590636