出发点:

  因为nagios的nrpe插件在检测ping时,如果包过多,会有一个检查超时超过30个包nrpe socket就超时了。

  后来想了个办法,在本地弄了个脚本来ping 150个包,结合nagios 3分钟检查一次,脚本ping出的结果整合后放到一个临时文件里,让nrpe在触发时去文件里读状态,发报警。

  问题来了,如果这台检测的机器异常到目的节点丢包,会导致目标节点被误报,与是乎就想到了仲裁服务器。

  仲裁节点一个,消息队列一个,各地检测节点若干。

实现方法:

  仲裁节点上部署个httpsqs,httpsqs是基于不同的KEY分别做队列的,各地检查节点部署ping脚本,将结果整合后发送到消息队列,

  仲裁节点根据不同的KEY取不同队列然后判断各节点的状态,进行一个综合判断,来决定目标服务器是否异常了。

部分脚本代码

   2e53e28204d9002a078620f66083e39f.png-wh_

判断脚本并交付nagios的

21c72b65378d05c889ce561b3091cc57.png-wh_


监控效果图

   73edbbdffe2a4fa75d35fe1aaca92aab.png-wh_