接收 SNMP 陷阱与查询启用 SNMP 的设备相反。
在这种情况下,信息是从支持 SNMP 的设备发送的,并且是被 Zabbix 收集或“捕获”。
通常,在某些条件更改时会发送陷阱,并且客户端的 162端口 连接到服务器(与用于查询客户端的端口 161 不同)。使用陷阱可能会检测到在查询间隔中发生的一些短期问题,并且可能会遗漏查询数据。
在 Zabbix 中接收 SNMP 陷阱要与 snmptrapd 一起使用,以及将snmp陷阱传递给 Zabbix 的内置机制Perl 脚本或 SNMPTT之一 。
接收陷阱的工作流程:
在前端配置以下字段是特定于该监控项类型:
在 Configuration → Hosts 中,在 Host interface 字段中填入正确的 IP 或 DNS 地址设置 SNMP 接口。将每个接收到的陷阱的地址与所有 SNMP 接口的 IP 和 DNS 地址进行比较,以找到相应的主机。
在 Key 字段中,使用 SNMP 陷阱key之一:
key | ||
---|---|---|
描述 | 返回值 | 评论 |
snmptrap[正则表达式] | ||
捕获与 regexp 中指定的 正则表达式 匹配的所有 SNMP 陷阱。如果未指定 regexp,则捕获任何陷阱。 | SNMP 陷阱 | 此项只能为 SNMP 接口设置。 自 Zabbix 2.0.0 起支持此项。 注意:从 Zabbix 开始2.0.5,此项key的参数中支持用户宏和全局正则表达式。 |
snmptrap.fallback | ||
捕获该接口的任何 snmptrap[] 项未捕获的所有 SNMP 陷阱。 | SNMP 陷阱 | 只能为 SNMP 接口设置此项目。 自 Zabbix 2.0.0 起支持此项目。 |
此处不支持多行正则表达式匹配。
将 Type of information 设置为 'Log' 以使时间戳为解析。请注意,也可以接受其他格式,例如“数字”但可能需要自定义陷阱处理程序。
要使 SNMP 陷阱监控工作,它必须首先正确设置。
要读取trap,必须将ZabbixZabbix Server/Proxy配置为启动SNMPtrap进程,并指向由SNMPTT或perl trap接收器写入的trap文件。为此,请编辑配置文件 (zabbix_server.conf或者 zabbix_proxy.conf):
如果使用系统参数 PrivateTmp,则该文件不能在/tmp下使用。
首先,snmptrapd 应该配置为使用 SNMPTT。
为获得最佳性能,SNMPTT 应配置使用 snmptthandler-embedded 将陷阱传递给它的守护进程。在其主页中有配置 SNMPTT 的说明: http://snmptt.sourceforge.net/docs/snmptt.shtml
当 SNMPTT 配置为接收陷阱时,配置 snmptt.ini
:
“net-snmp-perl”包已在RHEL/CentOS 8.0-8.2;在 RHEL 8.3 中重新添加。有关详细信息,请参阅 已知问题。
现在格式化陷阱以便 Zabbix 识别它们(编辑 snmptt.conf):
不要使用未知陷阱 - Zabbix 将无法认出他们。未知的陷阱可以通过定义一个通用的来处理 snmptt.conf 中的事件:
EVENT general .* "General event" Normal
要求:Perl,Net-SNMP使用--enable-embedded-perl编译(默认情况下从Net-SNMP 5.4支持)
Perl trap接收器(查找misc/snmptrap/zabbix_trap_receiver.pl)可以直接从snmptrapd将trap传递给Zabbix服务器。配置过程:
如果脚本名称以引号引起,snmptrapd将会拒绝启动消息,类似:
· Regexp modifiers "/l" and "/a" are mutually exclusive at (eval 2) line 1, at end of line · Regexp modifier "/l" may not appear twice at (eval 2) line 1, at end of line
net-snmp客户端不支持SNMPv3/USM的AES256。
所有定制的perl trap接收器和SNMPTT trap配置必须按以下方式格式化trap: [timestamp] [the trap, part 1] ZBXTRAP [address] [the trap, part 2], 说明
注意,“ZBXTRAP”和“[address]”将在处理过程中从消息中删除。如果trap格式化为其它方式,Zabbix也许能意外的解析trap。
trap示例:
11:30:15 2011/07/27 .1.3.6.1.6.3.1.1.5.3 Normal "Status Events" localhost - ZBXTRAP 192.168.1.1 Link down on interface 2. Admin state: 1. Operational state: 2
This will result in the following trap for SNMP interface with IP=192.168.1.1:
11:30:15 2011/07/27 .1.3.6.1.6.3.1.1.5.3 Normal "Status Events" localhost - Link down on interface 2. Admin state: 1.
Zabbix为SNMP trap文件提供了“大文件支持”。Zabbix可以读取的最大文件大小为2^63(8 EiB)。请注意,文件系统可能会对文件大小添加下限。
Zabbix不提供任何日志轮询系统(它应由用户处理)。 日志轮询应该首先重命名旧文件,然后才能将其删除,以免丢失trap:
由于Trap文件的执行,Zabbix需要文件系统支持inode来区分文件(该信息由stat()调用获取)。
此示例使用 snmptrapd + SNMPTT 将陷阱传递给 Zabbix 服务器。 设置:
返回结果:
这个简单的示例使用 SNMPTT 作为 traphandle。为了在生产系统上性能更好,使用嵌入式 Perl 来通过从 snmptrapd 到 SNMPTT 或直接到 Zabbix 的陷阱。