使用 Azure Monitor 代理收集 SNMP 陷阱数据

简单网络管理协议 (SNMP) 是一种广泛部署的管理协议,用于监视和配置 Linux 设备。 本文介绍如何使用 Azure Monitor 代理收集 SNMP 陷阱数据并将其发送到 Log Analytics 工作区。

可以通过两种方式收集 SNMP 数据:

  • 轮询 - 管理系统轮询 SNMP 代理以收集特定属性的值。 轮询最常用于有状态运行状况检测和收集性能指标。
  • 陷阱 - SNMP 代理将事件或通知转发到管理系统。 陷阱最常用作事件通知。

Azure Monitor 代理无法直接收集 SNMP 数据,但你可以将此数据发送到 Azure Monitor 代理可以收集的以下数据源之一:

  • Syslog。 数据存储在 Syslog 表中,该表包含 Azure Monitor 代理收集的其他 syslog 数据。
  • 文本文件。 数据存储在你创建的自定义表中。 使用转换,可以分析数据并将其以结构化格式存储。

示意图,其中显示了如何收集 SNMP 数据:将此数据发送到 Syslog 或文本文件,随后它将由 Azure Monitor 代理收集。

先决条件

  • 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,它是 Net-SNMP 代理中的一个 SNMP 陷阱接收器,大多数 Linux 发行版都提供该代理。 但是,你可以使用其他许多 SNMP 陷阱接收器服务。 重要的是,所用 SNMP 陷阱接收器可以加载环境的 MIB 文件,因此 SNMP 陷阱消息中的属性使用有意义的名称而不是 OID。

    snmptrapd 配置过程因 Linux 发行版而异。 有关 snmptrapd 配置的详细信息,包括有关配置 SNMP v3 身份验证的指导,请参阅 Net-SNMP 文档

设置陷阱接收器日志选项和格式

若要在 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 的输出行为配置,请执行以下操作:

  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 Monitor 代理收集 SNMP 陷阱

根据发送 SNMP 事件的位置,使用以下指南之一通过 Azure Monitor 代理收集数据:

后续步骤

了解有关以下方面的详细信息: