接收SNMP trap与查询支持SNMP的设备相对。
在这种情况下,信息是从支持SNMP的设备发送的,由Zabbix收集或"trapped"。
通常情况下发送trap是发生变化并且代理连接到端口162上的服务器(而不是用于查询的代理端的端口161)。 使用trap可以检测在查询间隔期间发生的一些可能被查询数据丢失的短期问题。
在Zabbix中接收SNMP trap旨在使用snmptrapd和内置机制之一来传递trap到Zabbix - 一个perl脚本或SNMPTT。
接收trap的工作流程:
在Web前端配置以下字段用于此监控项类型:
在配置→主机中,在主机接口字段中设置具有正确IP或DNS地址的SNMP接口。将每个收到的trap的地址与所有SNMP接口的IP和DNS地址进行比较,以查找相应的主机。
在Key字段中使用一个SNMP trap Key:
Key | ||
---|---|---|
描述 返 | 值 注释 | |
snmptrap[regexp] | ||
捕获与正则表达式中指定的正则表达式匹配的所有SNMP trap。如果正则表达式未指定,则捕获任何trap。 SNMP trap 该监控项只能用于SNMP接口 |
<此监控项从Zabbix 2.0.0.开始支持 注意: 从Zabbix 2.0.5开始,该监控项的参数支持用户宏和全局正则表达式。 |
|
snmptrap.fallback | ||
捕获未被该接口的任何snmptrap[]监控项捕获的所有SNMP trap。 SNMP trap 该监控项只能 | 于SNMP接口。 |
<该监控项从Zabbix 2.0.0.以后支持 |
目前不支持多行正则表达式匹配。
将要解析的时间戳的信息类型设置为'Log'。 请注意,其它格式(如“数字”)也是可以接受的,但可能需要自定义trap处理程序。
要使SNMP trap监控工作,必须首先正确设置。
要读取trap,必须将Zabbix服务器或代理服务器配置为启动SNMP trap进程,并指向由SNMPTT或perl trap接收器写入的trap文件。为此,请编辑配置文件(zabbix_server.conf 或者 zabbix_proxy.conf):
<note warning>如果使用systemd参数PrivateTmp,则该文件不太可能在/tmp下使用。 :::
首先,snmptrapd应该配置为使用SNMPTT。
<note tip>为了获得最佳性能,应将SNMPTT配置为使用snmptthandler-embedded的守护进程,并将trap传递给它。有关SNMPTT的配置,请查看其主页上的说明:
http://snmptt.sourceforge.net/docs/snmptt.shtml :::
当SNMPTT配置为接收trap时,配置SNMPTT记录trap:
现在格式化Zabbix的trap来识别它们(编辑snmptt.conf):
不要使用未知的trap - Zabbix将无法识别它们。未知trap可以通过在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将拒绝启动消息,类似:
所有定制的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服务器。设置:
结果如下:
<note tip>这个简单的例子使用SNMPTT作为traphandle。为了在生产系统上获得更好的性能,请使用嵌入式Perl将trap从snmptrapd传递到SNMPTT或直接传递到Zabbix。 :::