使用 Azure Monitor 代理收集 SNMP 陷阱数据
简单网络管理协议 (SNMP) 是一种广泛部署的管理协议,用于监视和配置 Linux 设备。 本文介绍如何使用 Azure Monitor 代理收集 SNMP 陷阱数据并将其发送到 Log Analytics 工作区。
可以通过两种方式收集 SNMP 数据:
- 轮询 - 管理系统轮询 SNMP 代理以收集特定属性的值。 轮询最常用于有状态运行状况检测和收集性能指标。
- 陷阱 - SNMP 代理将事件或通知转发到管理系统。 陷阱最常用作事件通知。
Azure Monitor 代理无法直接收集 SNMP 数据,但你可以将此数据发送到 Azure Monitor 代理可以收集的以下数据源之一:
- Syslog。 数据存储在
Syslog
表中,该表包含 Azure Monitor 代理收集的其他 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,它是 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 陷阱接收器,请执行以下操作:
安装并启用 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 Monitor 代理收集 SNMP 陷阱
根据发送 SNMP 事件的位置,使用以下指南之一通过 Azure Monitor 代理收集数据:
后续步骤
了解有关以下方面的详细信息: