Zabbix接收SNMP trap并触发告警
1、配置陷阱处理脚本
# 在zabbix 服务器或者代理服务器上,复制源码目录中的Perl脚本到 /usr/bin目录下并赋予执行权限
cp zabbix-6.0.2/misc/snmptrap/zabbix_trap_receiver.pl /usr/bin/
chmod a+x /usr/bin/zabbix_trap_receiver.pl
2、安装snmp相关软件包
yum -y install net-snmp net-snmp-utils net-snmp-libs net-snmp-agent-libs net-snmp-devel net-snmp-perl
3、修改snmptrap配置文件
cat >>/etc/snmp/snmptrapd.conf<<EOF
disableAuthorization yes
perl do "/usr/bin/zabbix_trap_receiver.pl"
EOF
4、启动服务并测试
systemctl enable snmptrapd --now
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 "test"
systemctl status snmptrapd
5、修改zabbix-server配置文件
StartSNMPTrapper=1
SNMPTrapperFile=/tmp/zabbix_traps.tmp
# 注:SNMPTrapperFile路径必须跟/usr/bin/zabbix_trap_receiver.pl脚本中设置的路径相同
6、重启zabbix-server服务
systemctl restart zabbix-server.service
7、配置监控项
名称:snmptrap.fallback
类型:SNMP trap
键值:snmptrap.fallback
信息类型:日志
日志时间格式:hh:mm:sszyyyy/MM/dd
# 键值配置为snmptrap.fallback,可以接收所有未配置成SNMPtrap监控项的设备发出的trap信息
8、配置触发器
名称:snmptrap.fallback
Event name:接收到snmptrap信息
表达式:length(last(/<...模板名称...>/snmptrap.fallback))>0
# 该触发器的含义是,只要接受到新的trap信息就触发告警
9、验证监控项和触发器
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 "test"
10、查看snmp配置的mib文件路径
net-snmp-config --default-mibdirs
/root/.snmp/mibs:/usr/share/snmp/mibs
11、告警通知模板
<!DOCTYPE html>
<html>
<body>
<br>
<div align="center">
<table border="1" bordercolor="black" cellspacing="0px" cellpadding="4px" width="500px">
<tr bgcolor="#FF3333">
<th colspan=2>
{TRIGGER.STATUS} Status Report
</tr>
<tr>
<td bgcolor="#ff7d0a" width="20%">告警主机</td>
<td bgcolor="#ff7d0a">{HOSTNAME1}</td>
</tr>
<tr>
<td bgcolor="#ff7d0a">主机别名</td>
<td bgcolor="#ff7d0a">{HOST.NAME} </td>
<tr>
<tr>
<td bgcolor="#ff7d0a">告警地址</td>
<td bgcolor="#ff7d0a">{HOST.IP}</td>
</tr>
<tr>
<td bgcolor="#ff7d0a">告警时间</td>
<td bgcolor="#ff7d0a">{EVENT.DATE} {EVENT.TIME}</td>
</tr>
<tr>
<td bgcolor="#ff7d0a">告警等级</td>
<td bgcolor="#ff7d0a">{TRIGGER.SEVERITY}</td>
</tr>
<tr>
<td bgcolor="#ff7d0a">告警信息</td>
<td bgcolor="#ff7d0a">{TRIGGER.NAME}</td>
</tr>
<tr>
<td bgcolor="#ff7d0a">告警项目</td>
<td bgcolor="#ff7d0a">{TRIGGER.KEY1}</td>
</tr>
<tr>
<td bgcolor="#FF3333">问题详情</td>
<td bgcolor="#FF3333">{ITEM.NAME}: {ITEM.VALUE}</td>
</tr>
<tr>
<td bgcolor="#ff7d0a">当前状态</td>
<td bgcolor="#ff7d0a">{TRIGGER.STATUS}: {ITEM.VALUE1}</td>
</tr>
<tr>
<td bgcolor="#ff7d0a">事件ID</td>
<td bgcolor="#ff7d0a">{EVENT.ID}</td>
</tr>
</table>
<br>
<font size="2" color="#8E8E8E" face="Microsoft YaHei">此邮件为监控平台自动发送,请勿回复!</font>
</html>
<!DOCTYPE html>
12、告警恢复模板
<!DOCTYPE html>
<html>
<body>
<br>
<div align="center">
<table border="1" bordercolor="black" cellspacing="0px" cellpadding="4px" width="500px">
<tr bgcolor="#49c208">
<th colspan=2>
{TRIGGER.STATUS} Status Report
</tr>
<tr>
<td bgcolor="#ffba00" width="20%">恢复主机</td>
<td bgcolor="#ffba00">{HOSTNAME1}</td>
</tr>
<tr>
<td bgcolor="#ffba00">主机别名</td>
<td bgcolor="#ffba00">{HOST.NAME} </td>
<tr>
<td bgcolor="#ffba00">恢复地址</td>
<td bgcolor="#ffba00">{HOST.IP}</td>
</tr>
<tr>
<td bgcolor="#ffba00">恢复时间</td>
<td bgcolor="#ffba00">{EVENT.DATE} {EVENT.RECOVERY.TIME}</td>
</tr>
<tr>
<td bgcolor="#ffba00">持续时长</td>
<td bgcolor="#ffba00">{EVENT.DURATION}</td>
</tr>
<tr>
<td bgcolor="#ffba00">恢复等级</td>
<td bgcolor="#ffba00">{TRIGGER.SEVERITY}</td>
</tr>
<tr>
<td bgcolor="#ffba00">恢复信息</td>
<td bgcolor="#ffba00">{TRIGGER.NAME}</td>
</tr>
<tr>
<td bgcolor="#ffba00">恢复项目</td>
<td bgcolor="#ffba00">{TRIGGER.KEY1}</td>
</tr>
<tr>
<td bgcolor="#49c208">恢复详情</td>
<td bgcolor="#49c208">{ITEM.NAME}: {ITEM.VALUE}</td>
</tr>
<tr>
<td bgcolor="#ffba00">当前状态</td>
<td bgcolor="#ffba00">{TRIGGER.STATUS}: {ITEM.VALUE1}</td>
</tr>
<tr>
<td bgcolor="#ffba00">事件ID</td>
<td bgcolor="#ffba00">{EVENT.ID}</td>
</tr>
</table>
<br>
<font size="2" color="#8E8E8E" face="Microsoft YaHei">此邮件为监控平台自动发送,请勿回复!</font>
</html>
<!DOCTYPE html>
作者:wanghongwei
版权声明:本作品遵循<CC BY-NC-ND 4.0>版权协议,商业转载请联系作者获得授权,非商业转载请附上原文出处链接及本声明。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
2021-12-16 Prometheus Operator配置Kubernetes服务自动发现
2021-12-16 Prometheus Operator自定义监控项