你当前正在访问 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 陷阱接收器,请执行以下操作:
安装并启用 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 可以通过两种方式将 SNMP 陷阱发送到 Azure Monitor 代理:
将传入的陷阱转发到 syslog,你可以将 syslog 设置为 Azure Monitor 代理的数据源。
将 syslog 消息写入某个文件,Azure Monitor 代理可以跟踪和分析该文件。 使用此选项可将 SNMP 陷阱作为新数据类型发送,而不是作为 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 Monitor 代理收集 SNMP 陷阱
如果已将 snmptrapd 配置为向 syslog 发送事件,请按照使用 Azure Monitor 代理收集事件和性能计数器中所述的步骤操作。 为 Azure Monitor 代理定义数据收集规则时,请确保选择 Linux syslog 作为数据源。
如果已将 snmptrapd 配置为向文件写入事件,请按照使用 Azure Monitor 代理收集文本日志中所述的步骤操作。
后续步骤
了解有关以下方面的详细信息: