一、监控系统简介
系统构成:
1、监控系统实现
一个监控系统的组成大体可以分成两部分:数据采集部分(客户端) 和 数据存储分析告警展示部分(服务端),这两部分构成了监控系统的基本模型。
C/S(Client/Server,客户端/服务器端)架构
对于一般的监控环境,被监控的节点不多,产生的数据较少,采用C/S架构就足够了,如下图所示,这种架构适合于规模较小、处于同一地域的环境。
C/P/S(Client/Proxy/Server,客户端/代理端/服务器端)架构
对于大规模的监控环境,被监控的节点多,且监控类型多,监控产生的数据和网络连接开销会非常巨大,而且由于跨地域等多种因素,需要分布式的解决方案,常见的方式为C/P/S架构,如下图所示,采用中间代理将大大提高监控服务器端的处理速度,从而能支撑构建大型分布式监控的环境。
二、监控系统的开源软件
1、MRTG
是一套可用来绘制网络流量图的软件。MRTG 将收集到的数据通过Web 页面以GIF 或PNG 格式绘制出图像,并以日、周、月为单位分别绘出,可以查询最大值和最小值。
MRTG 原本只能绘出网络设备的流量图,后来发展出了各种插件。因此,网络以外的设备也可由MRTG监控,例如,服务器的硬盘使用量、CPU 的负载等。
2、Cacti(仙人掌)
一套基于PHP、MySQL、SNMP 和RRDtool开发的网络流量监测图形分析工具。它通过snmpget 来获取数据,使用RRDtool 绘图,但使用者无须了解RRDtool复杂的参数。
它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、主机设备以及任何一张图,还可以与LDAP 结合进行用户认证,同时也能自定义模板,在历史数据的展示监控方面,其功能相当不错。
3、Nagios
是一个企业级的监控系统,可监控服务的运行状态和网络信息等,并能监视所指定的本地或远程主机参数以及服务,同时提供异常告警通知功能等。
Nagios 可运行在Linux 和UNIX 平台上,同时提供一个可选的基于浏览器的Web 界面,以方便系统管理人员查看网络状态、各种系统问题,以及日志等。
Nagios 的功能侧重于监控服务的可用性,能及时根据触发条件告警。
4、Ganglia
是一个跨平台的、可扩展的、高性能的分布式监控系统,如集群和网格。它基于分层设计,使用广泛的技术,用RRDtool 存储数据,具有可视化界面,适合于对集群系统的自动化监控。其精心设计的数据结构和算法使得监控端到被监控端的连接开销非常低。目前已经有成千上万的集群正在使用这个监控系统,可以轻松地处理2000 个节点的集群环境。
5、zabbix
是一个分布式监控系统,支持多种采集方式和采集客户端,有专用的Agent(代理),也可以支持SNMP、IPMI、JMX、Telnet、SSH 等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。其灵活的扩展性和丰富的功能是其他监控系统所不能比的。相对来说,它的总体功能做得非常优秀,其界面如图1-14 和图1-15