公司刚上完一套Zabbix监控系统,最开始只是看着服务器CPU、内存这些基础指标,后来业务一多,网络设备也开始出状况。有次半夜交换机端口异常,没人及时发现,导致整个办公网断了快一个小时。从那以后,老板下了死命令:必须把网络告警做起来。
先搞清楚你要监控什么
不是所有网络问题都靠一个模板解决。比如交换机端口宕掉和路由器CPU飙高,触发的条件完全不同。我们先列了个清单:核心交换机端口状态、防火墙连接数、AP离线、链路延迟异常。每一项对应的监控方式都不一样。
用SNMP抓取网络设备数据
大多数网络设备支持SNMP,这是获取端口状态、流量、温度等信息的关键。在Zabbix里添加设备时,协议选SNMPv2,填写好IP和团体名(community string)就行。比如我们华为交换机的配置:
SNMP community: public_zabbix
SNMP version: 2c
添加完设备后,关联上“Template Module Network Devices by SNMP”模板,基本的端口状态、入出流量就自动采集了。
自定义触发器判断网络异常
默认模板给的触发器太宽泛,得自己动手改。比如要监控某个关键端口是否UP,可以新建触发器:
名称:交换机Gi0/1端口宕掉
表达式:{#SNMPVALUE} != 1
监控项:snmp[ifOperStatus.<port_oid>]
严重性:高
这里1代表up,2代表down。一旦变成2,立刻发告警。
设置告警通知渠道
光在界面上亮红是没用的,得让人知道。我们用了企业微信机器人,把告警推送到运维群。在Zabbix的“报警媒介”里添加Webhook,填入企微机器人的webhook地址:
名称:企业微信告警
类型:Webhook
URL:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxx-xxxx
然后写个简单的消息模板,让内容更清晰:
{
"msgtype": "text",
"text": {
"content": "【Zabbix告警】\n主机:{HOST.NAME}\n问题:{TRIGGER.NAME}\n时间:{EVENT.DATE} {EVENT.TIME}"
}
}
避免误报的小技巧
刚配完那几天,端口闪断一下就告警,群里刷屏。后来加了触发条件的时间阈值——连续3分钟down才告警。这样临时插拔网线或者协商过程就不会误报。
还有一个坑是设备重启期间,大量接口同时down,一下子几十条告警。我们在触发器里加了抑制规则:如果“设备不可达”触发,其他接口类告警暂时屏蔽10分钟。
测试不能少
配置完别急着收工。拔根网线试试,看能不能收到消息;再插回去,确认恢复通知也正常。我们还特意挑了晚上八点拔了测试交换机的线,结果十分钟没人反应——才发现值班同事把群消息免提了。最后逼着IT统一设置了紧急告警铃声。
现在只要网络有点风吹草动,手机马上就响。虽然有时候觉得烦,但真出了事,能第一时间响应,老板也不再半夜打电话骂人了。