侧边栏壁纸
博主头像
学海无涯博主等级

有疑问可发邮件zp@wlzs.cn。

  • 累计撰写 345 篇文章
  • 累计创建 94 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

zabbix开启snmptrap接收网络设备主动告警

利刃
2026-06-30 / 0 评论 / 0 点赞 / 2 阅读 / 10003 字
温馨提示:
本文最后更新于 2026-06-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

概述

在使用zabbix监控网内设备时,有些oid节点不允许使用get方式进行获取,只能通过trap进行获取。

过程

配置zabbix服务器支持snmptrap

编辑zabbix-server.conf

在以下块添加StartSNMPTrapper及SNMPTrapperFile内容。

### Option: StartSNMPTrapper
#       If 1, SNMP trapper process is started.
#
# Mandatory: no
# Range: 0-1
# Default:
# StartSNMPTrapper=0
StartSNMPTrapper=1
SNMPTrapperFile=/var/log/zabbix/snmptraps/snmptraps.log

下载trap处理脚本

根据实际的zabbix版本,下载对应的zabbix_trap_handler.sh文件。
https://www.zabbix.com/documentation/current/zh/manual/config/items/itemtypes/snmptrap

curl -o /usr/sbin/zabbix_trap_handler.sh https://raw.githubusercontent.com/zabbix/zabbix-docker/7.4/templates/scripts/snmptraps/zabbix_trap_handler.sh

配置日志存储路径

编辑/usr/sbin/zabbix_trap_handler.sh文件,修改路径为zabbix-server配置的SNMPTrapperFile

#ZABBIX_TRAPS_FILE="${ZABBIX_USER_HOME_DIR}/snmptraps/snmptraps.log"
ZABBIX_TRAPS_FILE="/var/log/zabbix/snmptraps/snmptraps.log"

添加执行权限

chmod +x /usr/sbin/zabbix_trap_handler.sh

创建trap日志存储目录

根据zabbix-server配置的SNMPTrapperFile路径创建目录。

mkdir -p /var/log/zabbix/snmptraps/

配置snmptrapd.conf文件

路径为:/etc/snmp/snmptrapd.conf
增加以下内容,让snmp日志通过zabbix_trap_handler.sh脚本进行处理。

traphandle default /bin/bash /usr/sbin/zabbix_trap_handler.sh

配置trap的团体名称,客户端通过团体名进行访问。

authCommunity log,execute,net xiaola.local

最终配置文件如下:

[root@localhost ~]# cat /etc/snmp/snmptrapd.conf 
# Example configuration file for snmptrapd
#
# No traps are handled by default, you must edit this file!
#
# authCommunity   log,execute,net public
authCommunity log,execute,net xiaola.local
# traphandle SNMPv2-MIB::coldStart    /usr/bin/bin/my_great_script cold
traphandle default /bin/bash /usr/sbin/zabbix_trap_handler.sh

启动对应服务

 systemctl enable snmptrapd
 systemctl start snmptrapd
 systemctl restart zabbix-server

查看端口是否开放

[root@localhost ~]# ss -unlp | grep 162
UNCONN 0      0            0.0.0.0:162       0.0.0.0:*    users:(("snmptrapd",pid=4150731,fd=7))
[root@localhost ~]# 

防火墙放行

firewall-cmd --zone=public --add-port=162/udp --permanent
firewall-cmd --reload

配置网络设备

此处以华为防火墙USG 6000F-S115为例,不同设备的命令不一样,可以根据实际情况进行调整

snmp-agent trap enable
snmp-agent target-host trap address udp-domain 192.168.100.251 params securityname xiaola.local v2c

zabbix添加网络设备

可以通过zabbix自带模板(Network Generic Device by SNMP)添加网络设备,此模板默认含有SNMP traps (fallback)监控项,可以接收所有的traps信息。
image.png
image.png

traps信息推送查看

以上配置完成后,当设备发生一个trap事件后,会自动向zabbix服务器推送。
可以通过以下几个方式来看是否接收到设备发上来的消息。
在服务器上通过查看snmptraps.log来查看

tail -f /var/log/zabbix/snmptraps/snmptraps.log 
SNMPv2-SMI::enterprises.2011.5.25.212.1.6.2.0 = "0#flash:/logfile/pads/pads_0_20260519104839.pads.zip"
2026-06-29T14:52:06+0800 ZBXTRAP 192.168.241.1
UDP: [192.168.241.1]:65232->[192.168.100.251]:162
DISMAN-EVENT-MIB::sysUpTimeInstance = 1:7:30:54.08
SNMPv2-MIB::snmpTrapOID.0 = SNMPv2-SMI::enterprises.2011.5.25.207.2.2
SNMPv2-SMI::enterprises.2011.5.25.207.1.2.1.1.2.34 = "admin"
SNMPv2-SMI::enterprises.2011.5.25.207.1.2.1.1.3.34 = "192.168.100.251"
SNMPv2-SMI::enterprises.2011.5.25.207.1.2.1.1.4.34 = "VTY0"
SNMPv2-SMI::enterprises.2011.5.25.207.1.2.1.1.5.34 = "aaa"
SNMPv2-SMI::enterprises.2011.5.25.207.1.2.1.1.6.34 = "_public_"

在zabbix服务器查看对应设备的SNMP traps (fallback)最新数据。
image.png
在zabbix上面可以看到最新数据,代表所有的数据都已经打通。

配置健康检查监控

官方信息

通过官方mib查询,得知以下信息:
image.png
image.png

防火墙添加监控实例

image.png
当配置完成,健康检查up后,zabbix服务器收到信息如下:

2026-06-29T15:14:28+0800 ZBXTRAP 192.168.241.1
UDP: [192.168.241.1]:65232->[192.168.100.251]:162
DISMAN-EVENT-MIB::sysUpTimeInstance = 1:7:53:06.32
SNMPv2-MIB::snmpTrapOID.0 = SNMPv2-SMI::enterprises.2011.6.122.68.2.1
SNMPv2-SMI::enterprises.2011.6.122.68.1.1.1.0 = "test"
SNMPv2-SMI::enterprises.2011.6.122.68.1.1.2.0 = "up"

模拟健康检查down后,zabbix服务器收到的信息如下:

2026-06-29T14:18:50+0800 ZBXTRAP 192.168.241.1
UDP: [192.168.241.1]:65232->[192.168.100.251]:162
DISMAN-EVENT-MIB::sysUpTimeInstance = 1:6:57:35.32
SNMPv2-MIB::snmpTrapOID.0 = SNMPv2-SMI::enterprises.2011.6.122.68.2.2
SNMPv2-SMI::enterprises.2011.6.122.68.1.1.1.0 = "test"
SNMPv2-SMI::enterprises.2011.6.122.68.1.1.2.0 = "down"

根据以上内容,可以创建针对性的监控项及触发器进行告警。

监控项

根据以上信息,可以创建两个监控项分别记录实例名称和状态。
image.png

image.png
通过以上snmptrap键值获取到的数据为整段匹配的文本,如下图:
image.png
需要使用预处理来进行格式化,得到想要的数据。
image.png
实例名称预处理:

// 输入:完整的 trap 消息(字符串),由 Zabbix 自动传入
var trap = value;
var nameMatch = trap.match(/SNMPv2-SMI::enterprises\.2011\.6\.122\.68\.1\.1\.1\.0 = "([^"]+)"/);
return  nameMatch[1];

实例状态预处理:

// 输入:完整的 trap 消息(字符串),由 Zabbix 自动传入
var trap = value;
var statusMatch = trap.match(/SNMPv2-SMI::enterprises\.2011\.6\.122\.68\.1\.1\.2\.0 = "([^"]+)"/);
return  statusMatch[1];

最终数据:
image.png

触发器

image.png

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区