我们搭建了vpn,主要是利用公网地址上tcp端口映射进行连接,从而达到访问的目的。但是有时候,网络不稳定,或者是公网地址震荡异常,导致vpn连接异常,所以我们很有必要监控tcp端口的连接的时延情况,当时延大于1000ms时,会严重的影响到使用体验,这时就要排查网络原因了。
如果能利用zabbix监控tcp端口的情况,并统计,当达到一定阈值的时候就告警,方便及时排查。
一、思路
1.linux上,可以使用nmap程序扫描端口之外,还可以统计大致的扫描结果,可以利用每次扫描端口的耗时来衡量网络连接质量,例如时延;
2.编写shell脚本,定期检测nmap扫描结果,截取耗时的字段,生成监控项,衡量时延
3.zabbix上可以使用外部检查的方式使用自定义脚本
4.zabbix上利用脚本,定期检查,生成图形和告警
二、脚本编写
使用nmap程序,获取指定端口连接信息
nmap -Pn xxxx.xxxx.xxxx.xxxx -pxxxxx
获取信息如下所示
按照以上,就可以编写脚本了,记得加上可执行权限
zabbix上的外部脚本是以zabbix用户身份运行的,而nmap的运行需要root权限,这时我们需要必须使用visudo让zabbix用户能够以root权限运行nmap,网上关于visudo的教程很多,本文不再说明
在20行下添加
zabbix ALL=(root)/usr/bin/nmap
注意,信息类型改为浮点,而非数字;更新间隔推荐60秒以上
配置触发器,当延迟超过1000ms,则开始报警
触发器定义方式为在平均5分钟内检查到监控项的平均值大于1(1000ms)时告警
最后完成效果如下所示