标签:情况 观察 share 更改 trapper def 转义 exec file
概述SNMPTrap监控主要用于设备发生故障时的主动通知的监控
接收SNMP trap与查询启用SNMP的设备相反。
在这种情况下,信息发送自启用SNMP的设备并由Zabbix收集或“trapped”。
通常在某些条件更改时发送trap,并且代理通过端口162连接到服务器(相反的,代理端的161端口是用于查询代理的)。 使用trap可以检测在查询间隔期间发生的一些可能被查询数据遗漏的短期问题。
在Zabbix中接收SNMP trap旨在使用snmptrapd和内置机制之一来传递trap到Zabbix - 一个perl脚本或SNMPTT。
1、snmptrapd 收到trap
2、snmptrapd将trap传递给SNMPTT或调用Perl trap接收器
3、SNMPTT或Perl trap接收器解析,格式化并将trap写入文件
4、Zabbix SNMP trap读取并解析trap文件
5、对于每个trap,Zabbix发现主机接口与接收的trap地址匹配的所有“SNMP trap”监控项。请注意,在匹配期间只使用主机接口中选定的“IP”或“DNS”。
6、对于每个找到的监控项,将trap与“snmptrap[regexp]”中的regexp进行比较。 trap设置为all匹配项的值。如果没有7、找到匹配的监控项,并且有一个“snmptrap.fallback”监控项,则将trap设置为该监控项的值。
8、如果trap未设置为任何监控项的值,Zabbix默认记录未匹配的trap。(通过管理 → 常规 → 其它中的“记录未匹配的SNMP trap(Log unmatched SNMP traps)”进行配置。)
图中在测试机 M1 上启动 snmptrapd 进程,并且在 UDP 162 端口上监听 SNMP Trap 信息,一旦收到 Trap,snmptrapd 将所接收到的 Trap 信息内容打印到一个本地的文本文件中。 机器 M2 模拟发送 SNMP Trap 的设备,将调用 net-snmp 的命令行程序 snmptrap 发送一个 Trap。、
要读取trap,必须将Zabbix服务器或代理服务器配置为启动SNMP trap进程,并指向由SNMPTT或perl trap接收器写入的trap文件,请编辑文件zabbix_server.conf 或者 zabbix_proxy.conf再重启进程
StartSNMPTrapper=1
SNMPTrapperFile=[TRAP FILE]
注意:一定要保证日志路径存在,不存在必须创建
重启zabbix_server进程
[root@localhost zabbix]# systemctl restart zabbix-server
在zabbix 服务器或者代理服务器上,复制源码目录中的Perl脚本到 /usr/bin目录下并赋予执行权限(注意:要将perl脚本中的日志路径要与zabbix_server.conf 中的SNMPTrapperFile保持一致)
再安装net-snmp及snmptt,命令如下:<br/>cp
find / -name zabbix_trap_receiver.pl
/usr/bin
chmod a+x /usr/bin/zabbix_trap_receiver.pl
yum -y install net-snmp* snmptt
`
注意:如果最后snmptrapd启动失败,提示缺少/usr/share/snmp/snmp_perl_trapd.pl文件,原因是net-snmp相关的安装包安装太少,建议更换yum安装源。
当SNMPTT配置为接收trap时,配置SNMPTT记录trap
log_enable = 1
log_file = [TRAP FILE]
date_time_format = %H:%M:%S %Y/%m/%d
EVENT general .* "General event" Normal
FORMAT ZBXTRAP $aA $ar
traphandle default snmptt
authCommunity log,execute,net public
perl do "/usr/bin/zabbix_trap_receiver.pl"
authCommunity log,execute,net public 表示只接收团体名(community)为 public 的 trap信息,可以写多行
[root@localhost zabbix]# service snmptrapd restart
Restarting snmptrapd (via systemctl): [ OK ]
[root@localhost zabbix]# snmptrap -v 1 -c public 127.0.0.1 ‘.1.3.6.1.6.3.1.1.5.3‘ ‘0.0.0.0‘ 6 33 ‘55‘ .1.3.6.1.6.3.1.1.5.3 s "8834760"
systemctl status snmptrapd
监控项:
名称:test
类型:SNMP trap
键值:snmptrap[IF-MIB::linkDown]
信息类型:日志
日志时间格式:hh:mm:sszyyyy/MM/dd
解析:
![](https://s4.51cto.com/images/blog/202009/11/7000240e9e552802b5222a341f35cecf.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
键值配置为snmptrap[IF-MIB::linkDown],可以接收设备发出的trap信息中带有“IF-MIB::linkDown”的信息。
在最新数据里选择被监控的主机,点击test的历史记录。
名称:正则表达式
参数:(\")(\d+\.\d+)(\")
输出:\2
解析:
第一个括号(\") ,表示获取该监控项最新数据里的第一个双引号,双引号属于特殊字符,所以前面还加上转义符
第二个括号(\d+\.\d+),这里面的\都是转义符,表示一个任意字符前面和后面都是一串数字
三个括号连起来就表示了 取两个"和里面的一个任意字符前面和后面都是一串数字 的内容
输出\2表示 取完数据后 输出第二个括号里的正则取到的数据
修改完这些,就可以点击 更新 即可。
新增
createUser -e 0x8000000001020304 public MD5 "public1" DES "public2"
authuser log public
注释原来V1 V2认证方式:
authCommunity log,execute,net public
命令作用同snmpd.conf一样,-e 0x8000000001020304是engineID,是snmpv3的新概念,在连接的时候会自动发现,每对manager和agent都有唯一的engineID,用MIB-Browser连接后会有一个response
重启进程
[root@localhost zabbix]# service snmptrapd restart
Restarting snmptrapd (via systemctl): [ OK ]
[root@localhost zabbix]# snmptrap -v 3 -n "" -a MD5 -A ‘public1‘ -x DES -X ‘public2‘ -l authPriv -u public -e 0x8000000001020304 127.0.0.1 40 coldStart.0
利用ZABBIX的snmptrap V1 V2及V3方式进行监控详细实例部署说明
标签:情况 观察 share 更改 trapper def 转义 exec file
原文地址:https://blog.51cto.com/13858192/2532012