大点的公司的一般都有多个办公区、机房,有钱的公司一般都会购买专线、初创公司可能会采用公网链路,然后在不同办公区网络出口加上IP-SEC连通,由于距离较远,延迟可能会比较大,对于IT或者运维来说,兼容网络延迟就很有必要,有个很好用的网络延迟工具smokeping,安装、配置很简单,记录一下。
推荐使用docker进行安装,很简单5分钟即可完成。
mkdir -p ~/smokeping/config ~/smokeping/data
cd ~/smokeping
docker run -d \
--name smokeping \
-p 8888:80 \
-v ~/smokeping/config:/config \
-v ~/smokeping/data:/data \
linuxserver/smokeping
上面三条命令即可安装+启动smokeping服务,通过8888端口访问,http://127.0.0.1:8888/。
以下重点介绍下配置文件,smokeping的config文件夹中文件如下:
Presentation 用来配置web页面的一些配置,一般默认即可。
Slaves 如果有主从节点,从这里配置
Probes 一些探测程序的路径配置
ssmtp.conf 如果要发送邮件报警,从这里配置smtp信息
Alerts 报警规则配置,这个比较重要,用来定义什么情况下会触发报警,我的配置如下:
*** Alerts *** to = |/config/send_notify.sh from = XX@XX.com +链路中断 type = loss # in percent pattern = ==0%,==0%,==0%, ==U comment = 连接失败 +严重丢包 type = loss # in percent pattern = ==0%,==0%,==0%,==0%,>20%,>20%,>20% comment = 连续3次采样-丢包率超过20% +连续丢包 type = loss # in percent pattern = ==0%,==0%,==0%,==0%,>0%,>0%,>0% comment = 连续3次采样-存在丢包 +间歇性丢包 type = loss # in percent pattern = >15%,*8*,>15%,*8*,>15% comment = 间断性丢包 +Ping延迟(超100ms) type = rtt # in milli seconds pattern = <100,<100,<100,<100,<100,>100,>100,>100 comment = 连续3次采样延迟增大-超过100ms
上面的from、to用来配置报警的发送方和接受方,to可以配置一个邮箱地址,也可以配置一些脚本,用来将报警信息发送出去,我这里配置了shell脚本,用来将报警发送到钉钉群。
send_notify.sh内容如下:
#!/bin/bash # 解析变量 alertname=$1 target=$2 losspattern=$3 rtt=$4 hostname=$5 # 自定义变量 ding_token="XXXXXXXXXXXXXX" echo "$(date +%F-%T)" >> /data/invoke.log # 网络恢复逻辑判断 if ["$losspattern" ="loss: 0%" ]; then subject="【恢复】-网络链路问题" else subject="【报警】网络链路问题" fi result="${subject}\n链路:XX ---> ${target}\n机器:${hostname}\n类型: ${alertname}\n详情: ${losspattern}\nping响应:${rtt}" echo $result >> /data/invoke.log echo $@ >> invoke.log curl "https://oapi.dingtalk.com/robot/send?access_token=${ding_token}" -H "Content-type: application/json" -d "{\"msgtype\": \"text\", \"text\": {\"content\" : \"${result}\"}}"
Database 用来配置探测的频率
step = 120 //表示每120秒发起一轮探测 pings = 10 //表示每轮探测,对每个host共发出10次ping请求
如果是上面的配置,也就是在2分钟内会对配置的每个地址检测10次,即12秒/次。注意:修改了探测频率之后,要删掉data目录中旧的rrd文件。
General 一些通用配置,不改也无所谓
Targets 最重要的具体监控项配置,在这里进行监控的host配置,以及启动的报警规则,如我的配置:
*** Targets *** probe = FPing menu = Top title = 网络延迟监控 remark = 延迟监控,如有问题联系XXX. alerts=链路中断,严重丢包,连续丢包,间歇性丢包,Ping延迟(超100ms) + InternetSites menu = 公网 title = 公网 ++ baidu menu = baidu host = baidu.com ++ yeetrack.com menu = yeetrack.com host = www.yeetrack.com + internal menu = 内部 title = 内部 alerts=链路中断,严重丢包,连续丢包,Ping延迟(超100ms) ++ beijing menu = beijing host = XX.XX.XX.XX
上面一共配置了两大项,每个大项中配置了具体监控哪些ip地址。
注意:报警规则在Alerts中配置之后,一定要在Targets中配置哪些监控启用哪些报警项,如果把alerts=链路中断,严重丢包,连续丢包,间歇性丢包,Ping延迟(超100ms)
配置在最上面,则对全部监控项生效,如果配置在具体的监控项中,则仅对此监控项生效。如果调整了配置文件,一般需要重启docker服务才行
docker ps //查看docker服务的id docker restart 【smokeping的id或者名称】
版权声明
本站文章、图片、视频等(除转载外),均采用知识共享署名 4.0 国际许可协议(CC BY-NC-SA 4.0),转载请注明出处、非商业性使用、并且以相同协议共享。
© 空空博客,本文链接:https://www.yeetrack.com/?p=1623
近期评论