為什麼 SNMP 代理程式需要 MIB 檔案?

為什麼 SNMP 代理程式需要 MIB 檔案?

在閱讀了 SNMP 和一些問題後,我認為理解代理角色作為設備的 SNMP 服務(像 SQL 一樣,它是一個儲存 API)。

當您執行 SQL 查詢時,SQL 引擎會完成所有工作並傳回結果 - 您無需了解儲存方式以及儲存位置。

但MIB並不是實際的存儲,那麼我的代理的作用是什麼?
如果代理商只像我這樣註冊 MIB教學,所以它根本不用作處理程序,這意味著您可以設置並到達那裡而無需繞過處理程序的物理存儲。在本教程中,您所做的一切都是這樣的:

netsnmp_register_int_instance("my example int variable",
                                  my_registration_oid,
                                  OID_LENGTH(my_registration_oid),
                                  &example1, NULL);

不需要處理程序來處理呼叫。

假設我想監視應用程式的待處理請求佇列,因此我需要一個代理,所有針對 application_pending_request 的 SNMP 請求都會被觸發,並且它將返回佇列深度。當我需要輪詢應用程式隊列才能獲得結果時,為什麼我需要一個實際的 MIB?

答案1

您對 SNMP 的工作原理存在根本性的誤解。快速和骯髒的比較:SNMP MIB 類似主機名。 MIB 將 OID 對應到友善名稱-例如
.1.3.6.1.2.1.1.1.0=> SNMPv2-MIB::sysDescr.0=> Host Description(uname 輸出)。

為了從 SNMP 伺服器(代理)檢索訊息,該信息必須在特定的 OID 上發布。
為了讓 SNMP 守護程式發布訊息,它(通常)需要兩件事:

  1. 取得該資訊的方法(腳本、程式等)
  2. 放置該資訊的位置(OID)
    (某些 SNMP 守護程序可能還需要映射 OID 的 MIB 檔案)

為了檢索訊息,您必須知道 OID - 這可以是數字 OID,也可以是您的 MIB 檔案中的「友善」名稱。簡單網路管理協議 客戶

SNMP「瀏覽器」通常需要 MIB 文件,因為如果沒有 MIB 文件,它們向您呈現的只是一堆毫無意義的數字清單。

所以你的問題的答案是「你不需要MIB 文件,它們只是對需要與 SNMP 互動的人有幫助」。


以您的範例(報告佇列長度)為例,這聽起來來自您喜歡的教學net-snmp(UCD-SNMP)。
net-snmp包括用於此類事情的內建設施—通讀手冊頁和範例設定檔(特別注意exec執行外部腳本的指令:通常您會執行一個列印佇列長度的腳本,並在您的監控軟體/SNMP 用戶端)

相關內容