我一直比较赞同的是主动请求式的监控模式,主要原因是被动探测会给监控结点带来很大的压力,就Cacti而言,用Spine轮询,共35个设备,每分钟轮询一次,能吃掉我35%的CPU。
相比之下,通过客户机主动发送请求给监控机的Ganglia,占用资源就非常小。一台监控机估计挂200台客户机监控不是问题。
区别就在于,主动请求式是客户机把自己的监控信息主动发送给监控机,监控机只要接收这些信息处理即可。
被动探测式是监控机把监控请求发送到客户机,客户机接到请求把需要的监控信息返回给监控结点。
所以,被动探测式会给监控机带来很大的压力,因为它要不断的发请求去获取信息。
但是监控宝的同志做了个很好的比方,让我想法有了些变化。
监控机好比警察,客户机好比犯人。
不能因为警察忙,就不管犯人,让犯人主动报告自己的情况。
如果犯人突然没信息了,警察就不知道犯人是死了还是跑了。
并且如果警察调走了,犯人不知道,这一群犯人就不知道向谁报告了。
但是经常也不能老去一直问犯人的情况,那样他的工作效率就太低了。
所以二者各有好处。
首先,警察很忙的时候,让犯人主动报告自己的情况,他记着就行。
但是,一旦犯人在规定的时间没报告,警察就要主动去联系了,看看犯人到底是死了还是跑了。
还原到监控中,就是主动与被动两种方式结合起来。
一般情况下,让客户机比较高频地自己报告情况情况给监控机,同时,监控机间隔比较长的像客户机主动发送请求,检查客户机是否存活。
同时,一旦监控机在规定的时间内没收到客户机的信息,就要像客户机发请求去轮询,确认客户机的状态。
主动和被动在合适的时候都有合理的用处,像手机就是主动向基站报告自己加入,雷达又是向被监控区域发送探测信号。
任何方法都有其存在的理由,没有最好没有最坏,只有最合适
===============================================================================
下面是我自己对cacti,nagios的监控方式(主动-被动)
nagios :可以说既是主动方式监控,也是被动监控
主动监控:
我们需要在被监测主机上部署NRPE,他相当于一个守护进程负责监听。而监测主机使用check_nrpe并通过SSL连接访问这个daemon,然后调用被监测方的check_disk,check_load等脚本获取信息并将结果传递到监测主机,这样的好处是监控主机不会有很大的压力,负载。
被动监控:
有时候我们还需要监控,从监控主机到被监控主机之间的网络情况,如connect,ping hardware 以及各种应用程序,都是通过被动方式进行周期性监控的。
cacti:(被动监控方式)
就Cacti而言,用Spine轮询,每次都是通过监控主机来请求监控被监控机的监控状况,加入机器过多,肯定会造成监控机的负载过高、