使用 Azure 監視器代理程式收集 SNMP 陷阱資料

警告

這篇文章參考 CentOS,這是接近生命週期結束 (EOL) 狀態的 Linux 發行版本。 請據以考慮您的使用方式和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指引

簡單網路管理通訊協定 (SNMP) 是廣泛部署的管理通訊協定,可用於監視和設定 Linux 裝置和設備。

您可以透過兩種方式收集 SNMP 資料:

  • 輪詢 - 管理系統會輪詢 SNMP 代理程式以收集特定屬性的值。
  • 陷阱 - SNMP 代理程式會將事件或通知轉送至管理系統。

陷阱最常用作事件通知,而輪詢更適合用於具狀態健康情況偵測和收集效能計量。

您可以使用 Azure 監視器代理程式收集 SNMP 陷阱作為 syslog 事件或記錄在文字檔中的事件。

在本教學課程中,您會了解如何:

  • 設定陷阱接收者記錄選項和格式
  • 設定陷阱接收者將陷阱傳送至 syslog 或文字檔
  • 使用 Azure 監視器代理程式收集 SNMP 陷阱

必要條件

若要完成本教學課程,您需要:

  • 您至少擁有 Log Analytics 工作區的參與者權限

  • 您要監視之裝置的管理資訊基底 (MIB) 檔案。

    SNMP 會使用物件識別碼 (OID) 值來識別受監視的屬性,這些值會在廠商提供的 MIB 檔案中定義和描述。

    裝置廠商通常會提供 MIB 檔案。 如果您沒有 MIB 檔案,您可以在第三方網站上找到許多廠商的檔案。

    將每個傳送 SNMP 陷阱的裝置的所有 MIB 檔案放在 /usr/share/snmp/mibs 中,這是 MIB 檔案的預設目錄。 這可記錄具有有意義名稱而非 OID 的 SNMP 陷阱欄位。

    有些廠商會針對所有裝置維護單一 MIB,而其他廠商則有數百個 MIB 檔案。 若要正確載入 MIB 檔案,snmptrapd 必須載入所有相依 MIB。 請務必在載入 MIB 之後檢查 snmptrapd 記錄檔,以確保剖析 MIB 檔案中沒有遺漏的相依性。

  • 具有 SNMP 陷阱接收器的 Linux 伺服器。

    在本文中,我們會使用 snmptrapd,這是來自大部分 Linux 發行版 Net-SNMP 代理程式的 SNMP 陷阱接收器。 不過,您可以使用許多其他 SNMP 陷阱接收者服務。

    Snmptrapd 組態程式可能會因 Linux 發行版而異。 如需 snmptrapd 設定的詳細資訊,包括設定 SNMP v3 驗證的指引,請參閱 Net-SNMP 文件

    請務必為環境載入 MIB 檔案的 SNMP 陷阱接收器,讓 SNMP 陷阱訊息中的屬性具有有意義的名稱,而不是 OID。

設定陷阱接收者記錄選項和格式

若要在 CentOS 7、Red Hat Enterprise Linux 7、Oracle Linux 7 伺服器上設定 snmptrapd 陷阱接收器:

  1. 安裝並啟用 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
    
  2. 授權社群字串 (SNMP v1 和 v2 驗證字串),並定義寫入記錄檔的陷阱格式:

    1. 開啟 snmptrapd.conf

      sudo vi /etc/snmp/snmptrapd.conf  
      
    2. 將以下幾行新增至您的 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 有兩種方式可以將 SNMP 陷阱傳送至 Azure 監視器代理程式:

  • 將傳入陷阱轉接至 syslog,您可以將其設定為 Azure 監視器代理程式的資料來源。

  • 將 syslog 訊息寫入檔案,Azure 監視器代理程式可以進行結尾和剖析。 此選項可讓您以新的資料類型傳送 SNMP 陷阱,而不是傳送為 syslog 事件。

若要編輯 snmptrapd 的輸出行為組態:

  1. 開啟 /etc/snmp/snmptrapd.conf 檔案:

    sudo vi /etc/sysconfig/snmptrapd
    
  2. 設定輸出目的地。

    以下是範例組態:

    # 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 檔案。

注意

如需如何設定輸出選項的詳細資訊,請參閱 Net-SNMP 文件,以及如何設定格式化選項

使用 Azure 監視器代理程式收集 SNMP 陷阱

如果您設定 snmptrapd 將事件傳送至 syslog,請遵循使用 Azure 監視器代理程式收集事件和性能計數器中所述的步驟。 當您定義 Azure 監視器代理程式的資料收集規則時,請務必選取 Linux syslog 作為資料來源。

如果您設定 snmptrapd 將事件寫入至檔案,請遵循使用 Azure 監視器代理程式收集文字記錄所述的步驟。

下一步

深入了解: