简介
gmond/ganglia,用于进行各节点数据监控
nagios,用于进行阈值判断及告警信息产生
mysql,进行数据存储
ganglia里面,其实有一个数据存储机制,RRD,用rrdtool进行存储。这个软件协议是GPL的,如果进行商用会不合法。所以使用mysql进行数据存储,可以跳过这个。
ganglia是一个完整的体系,其中包括一个php的静态页面展示,做的挺专业的。但是与现在互联网模式下的页面无法对接,借助mysql也更好。
所有开源软件备齐,自行开发一个简单的管控模块,用于从gmond定时收集数据,然后存储到mysql中。
同时,nagios直接对接ganglia,告警信息缓存进mysql数据库。用开发的管控模块一起监控起来。
架构
最核心的是ganglia core
具体的工人是ganglia client
这是我对他们的称呼,其实只是配置不同。
ganglia
ganglia是用来进行硬件监控的。原理是定期调用一个脚本,去获取系统当前资源状况,然后通过udp的方式,将数据发送出去。
ganglia之间可以相互发送数据与接收数据。
ganglia发送有udp单播发送喝udp组播这两种。
ganglia可以配置接收端(自己既是发送,也可以是接收),可以配置为组播模型,这样每一个ganglia client上,都有整个集群的所有数据;也可以配置成单播形式,这样集群内会有一个ganglia core节点来收取所有数据。
ganglia自身是有一套体系的,有自己的php展示页面,但是都是静态图片,对于这种实时监控不合适。
ganglia后面也可以接一个RDD数据库,通过rdd tool来进行数据采集。但是这个工具涉及gpl协议,所以如果想要商业化,就得用ganglia client,然后自己写一个采集系统(很简单的)
nagios
nagios是用来做监控的模块,简单来说,nagios从ganglia core拿数据,拿到数据后,把数据与自己所存储的阈值做对比,超过阈值的标记为告警,然后走自己的告警机制处理。
有些同学会认为nagios告警很简单,自己写一个,千万不要这么搞。这是由于对告警这部分理解不完全导致。告警有很多注意的地方,譬如重复告警、告警级别、方式等。
这部分没有太深入研究。
mysql
这个是用来替换掉ganglia的rdd数据库的,当然自己要写一套解析程序,不复杂,就是标准的xml解析。定时从ganglia core获取数据,然后解析,放进mysql长期存储即可