服务器承担snmp trap接收角色需部署snmptrapd、trap解析脚本(如zabbix_trap_receiver.pl)和zabbix server三类组件,流程为“设备发→snmptrapd收→脚本解析写日志→zabbix读日志→匹配规则告警”。
服务器要承担 snmp trap 接收角色,本质不是安装一个“角色”,而是部署并协同运行三类组件:snmp 陷阱接收守护进程(snmptrapd)、trap 解析与中转脚本(如 zabbix_trap_receiver.pl 或 snmptt)、以及上层监控系统(如 zabbix server)的 trap 采集模块。整个流程是“设备发 trap → snmptrapd 收 → 脚本解析写日志 → zabbix 读日志→ 匹配规则触发告警”。下面分关键环节说明安装与配置要点。
安装 snmptrapd 及基础依赖
这是接收 Trap 的第一道入口,必须运行在 UDP 162 端口:
- Ubuntu/Debian:
sudo apt install snmptrapd snmp-mibs-downloader libsnmp-perl - CentOS/RHEL/Rocky(8+):
sudo dnf install net-snmp net-snmp-perl net-snmp-utils - 安装后需启用并启动服务:
sudo systemctl enable --now snmptrapd - 确认监听状态:
sudo ss -uln | grep :162(应有输出)
配置 snmptrapd 接收策略
编辑 /etc/snmp/snmptrapd.conf,决定谁可以发、怎么处理:
- 对 SNMPv2c(常用测试场景):
authCommunity log,execute,net public(仅接受团体名为 public 的 Trap,并记录+执行) - 对 SNMPv3(生产推荐):
authUser log,execute,net user1(需先用net-snmp-config --create-snmpv3-user创建用户) - 指定处理脚本(以 Perl 接收器为例):
traphandle default /usr/bin/zabbix_trap_receiver.pl - 禁用默认日志到 syslog(避免干扰):
disableAuthorization yes(配合 authUser 使用时需谨慎)
部署并配置 Trap 解析脚本
Zabbix 官方提供的 zabbix_trap_receiver.pl 是轻量可靠的选择,需手动获取并适配:
- 从 Zabbix 源码包提取(如 v7.0.8):
cp misc/snmptrap/zabbix_trap_receiver.pl /usr/bin/ - 赋予可执行权限:
chmod +x /usr/bin/zabbix_trap_receiver.pl - 编辑脚本,将
$SNMPTrapperFile设为与 Zabbix 配置一致的日志路径,例如:
$SNMPTrapperFile = '/var/log/snmptrap/snmptrap.log'; - 创建日志目录并授权:
mkdir -p /var/log/snmptrap && touch /var/log/snmptrap/snmptrap.log && chmod 644 /var/log/snmptrap/snmptrap.log
启用 Zabbix 的 SNMP Trap 采集功能
这是闭环关键——让 Zabbix 主动读取脚本写入的日志:
- 编辑
/etc/zabbix/zabbix_server.conf:
StartSNMPTrapper=1
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log - 确保该日志文件被 Zabbix 进程(通常是 zabbix 用户)可读:
sudo chown zabbix:zabbix /var/log/snmptrap/snmptrap.log - 重启服务:
sudo systemctl restart zabbix-server - 在 Zabbix 前端添加监控项时,类型选 SNMP trap,键值填
snmptrap[".*"]或带正则的具体匹配模式











