使用 Azure 監視器代理程式收集 SNMP 陷阱資料
簡單網路管理通訊協定 (SNMP) 是廣泛部署的管理通訊協定,可用於監視和設定 Linux 裝置和設備。 本文說明如何收集 SNMP 陷阱資料,並使用 Azure 監視器代理程式將其傳送至 Log Analytics 工作區。
您可以透過兩種方式收集 SNMP 資料:
- 輪詢 - 管理系統會輪詢 SNMP 代理程式以收集特定屬性的值。 輪詢最常用於具狀態健康情況偵測和收集效能指標。
- 陷阱 - SNMP 代理程式會將事件或通知轉送至管理系統。 陷阱最常用來作為事件通知。
Azure 監視器代理程式無法直接收集 SNMP 資料,但您可以將此資料傳送至 Azure 監視器代理程式可以收集的下列資料來源其中之一:
- Syslog。 資料會與 Azure 監視器代理程式收集的其他 syslog 資料儲存在
Syslog
資料表中。 - 文字檔。 資料會儲存在您建立的自訂資料表中。 您可以使用轉換來剖析資料,並以結構化格式儲存資料。
必要條件
您至少擁有 Log Analytics 工作區的參與者權限。
您要監視之裝置的管理資訊基底 (MIB) 檔案。
SNMP 會使用物件識別碼 (OID) 值來識別受監視的屬性,這些值會在廠商提供的 MIB 檔案中定義和描述。 裝置廠商通常會提供 MIB 檔案。 如果您沒有 MIB 檔案,您可以在第三方網站上找到許多廠商的檔案。 有些廠商會針對所有裝置維護單一 MIB,而其他廠商則有數百個 MIB 檔案。
將每個傳送 SNMP 陷阱的裝置的所有 MIB 檔案放在
/usr/share/snmp/mibs
中,這是 MIB 檔案的預設目錄。 這可記錄具有有意義名稱而非 OID 的 SNMP 陷阱欄位。 若要正確載入 MIB 檔案,snmptrapd 必須載入所有相依 MIB。 請務必在載入 MIB 之後檢查 snmptrapd 記錄檔,以確保剖析 MIB 檔案中沒有遺漏的相依性。具有 SNMP 陷阱接收器的 Linux 伺服器。
本文使用 snmptrapd,這是大多數 Linux 散發套件提供的 Net-SNMP 代理程式的 SNMP 陷阱接收器。 不過,您可以使用許多其他 SNMP 陷阱接收者服務。 請務必為環境載入 MIB 檔案的 SNMP 陷阱接收器,讓 SNMP 陷阱訊息中的屬性具有有意義的名稱,而不是 OID。
Snmptrapd 組態程式可能會因 Linux 發行版而異。 如需 snmptrapd 設定的詳細資訊,包括設定 SNMP v3 驗證的指引,請參閱 Net-SNMP 文件。
設定陷阱接收者記錄選項和格式
若要在 Red Hat Enterprise Linux 7 或 Oracle Linux 7 伺服器上設定 snmptrapd 陷阱接收器:
安裝並啟用 snmptrapd:
#Install the SNMP agent sudo yum install net-snmp #Enable the service sudo systemctl enable snmptrapd #Allow UDP 162 through the firewall sudo firewall-cmd --zone=public --add-port=162/udp --permanent
授權社群字串 (SNMP v1 和 v2 驗證字串),並定義寫入記錄檔的陷阱格式:
開啟
snmptrapd.conf
:sudo vi /etc/snmp/snmptrapd.conf
將以下幾行新增至您的
snmptrapd.conf
檔案:# Allow all traps for all OIDs, from all sources, with a community string of public authCommunity log,execute,net public # Format logs for collection by Azure Monitor Agent format2 snmptrap %a %B %y/%m/%l %h:%j:%k %N %W %q %T %W %v \n
注意
snmptrapd 將陷阱和精靈訊息 (例如,服務停止和啟動) 記錄到相同的記錄檔。 在上述範例中,我們已定義以「snmptrap」字組開頭的記錄格式,以便稍後輕鬆地從記錄檔篩選 snmptrap。
設定陷阱接收者將陷阱資料傳送至 syslog 或文字檔
若要編輯 snmptrapd 的輸出行為組態:
開啟
/etc/snmp/snmptrapd.conf
檔案:sudo vi /etc/sysconfig/snmptrapd
設定輸出目的地,例如在下列範例組態中:
# snmptrapd command line options # '-f' is implicitly added by snmptrapd systemd unit file # OPTIONS="-Lsd" OPTIONS="-m ALL -Ls2 -Lf /var/log/snmptrapd"
此範例組態中的選項如下:
-m ALL
- 載入預設目錄中的所有 MIB 檔案。-Ls2
- 輸出陷阱至 syslog、Local2 設施。-Lf /var/log/snmptrapd
- 將陷阱記錄到/var/log/snmptrapd
檔案。
使用 Azure 監視器代理程式收集 SNMP 陷阱
根據您傳送 SNMP 事件的位置,使用下列其中一項指引,使用 Azure 監視器代理程式收集資料:
下一步
深入了解: