你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

注意

本文引用了 CentOS,这是一个接近生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。 有关详细信息,请参阅 CentOS 生命周期结束指导

简单网络管理协议 (SNMP) 是一种广泛部署的管理协议,用于监视和配置 Linux 设备。

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

  • 轮询 - 管理系统轮询 SNMP 代理以收集特定属性的值。
  • 陷阱 - SNMP 代理将事件或通知转发到管理系统。

陷阱最常用作事件通知,而轮询更适合用于有状态运行状况检测和收集性能指标。

可以使用 Azure Monitor 代理将 SNMP 陷阱收集为 syslog 事件或记录在文本文件中的事件。

在本教程中,你将了解:

  • 设置陷阱接收器日志选项和格式
  • 配置陷阱接收器以将陷阱发送到 syslog 或文本文件
  • 使用 Azure Monitor 代理收集 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,它是 Net-SNMP 代理中的一个 SNMP 陷阱接收器,大多数 Linux 发行版都提供它。 但是,你可以使用其他许多 SNMP 陷阱接收器服务。

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

    重要的是,所用 SNMP 陷阱接收器可以加载环境的 MIB 文件,因此 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 Monitor 代理:

  • 将传入的陷阱转发到 syslog,你可以将 syslog 设置为 Azure Monitor 代理的数据源。

  • 将 syslog 消息写入某个文件,Azure Monitor 代理可以跟踪和分析该文件。 使用此选项可将 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 Monitor 代理收集 SNMP 陷阱

如果已将 snmptrapd 配置为向 syslog 发送事件,请按照使用 Azure Monitor 代理收集事件和性能计数器中所述的步骤操作。 为 Azure Monitor 代理定义数据收集规则时,请确保选择 Linux syslog 作为数据源。

如果已将 snmptrapd 配置为向文件写入事件,请按照使用 Azure Monitor 代理收集文本日志中所述的步骤操作。

后续步骤

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