配套课程详见:https://ke.magedu.com/index 公众号:马哥Linux运维 微信:yxy88619
第 1 章 监控系统简介
本章阐述了监控系统的发展历程、监控系统的原理,以及监控系统的实现过
程,对现有的开源监控解决方案进行了综合分析,目的是让读者全面了解监控系
统,让读者更加深入地学习到监控系统的原理,为后面章节的学习做好准备。
1.1 为何需要监控系统
在一个 IT 环境中会存在各种各样的设备,例如,硬件设备、软件设备,其系
统的构成也是非常复杂的,通常由如图 1-1 所示的模型构成。
图 1-1
多种应用构成复杂的 IT 业务系统,保证这些资源的正常运转,是一个公司 IT
部门的职责。而要让这些应用能够稳定地运行,则需要专业 IT 人员进行设计、架
构、维护和调优。在这个过程中,为了及时掌控基础环境和业务应用系统的可用
性,需要获取各个组件的运行状态,如 CPU 的利用率、系统的负载、服务的运行、
端口的连通、带宽流量、网站访问状态码等信息。而这一切都离不开监控系统。
1.2 监控系统的实现
一个监控系统的组成大体可以分为两部分:数据采集部分(客户端)和数据
存储分析告警展示部分(服务器端),如图 1-2 所示。这两部分构成了监控系统的
基本模型。
数据采集的工作模式可以分为被动模式(服务器端到客户端采集数据)和主动
图 1-2
配套课程详见:https://ke.magedu.com/index 公众号:马哥Linux运维 微信:yxy88619
第 1 章 监控系统简介
3
模式(客户端主动上报数据到服务器端)。通常,大多数监控系统应该能同时支持
这两种模式。被动模式对服务器的开销较大,适合小规模的监控环境;主动模式对
服务器的开销较小,适合大规模的监控环境。
采集数据的协议方式可以分为两种:专用客户端采集和公用协议采集
(SNMP、SSH、Telnet 等),如图 1-3 所示。
对于采集到的监控数据,可以将其存储到数据库或者文本或者其他方式,具
体采用哪一种,应根据实际需求来决定。
怎么规划监控系统的架构设计呢?下面将详细分析。
对于一般的监控环境,被监控的节点不多,产生的数据较少,采用 C/S
(Client/Server,客户端/服务器端)架构就足够了,如图 1-4 所示,这种架构适合
于规模较小、处于同一地域的环境。
图 1-3 图 1-4
对于大规模的监控环境,被监控的节点多,且监控类型多,监控产生的数据
和网络连接开销会非常巨大,而且由于跨地域等多种因素,需要分布式的解决方
案,常见的方式为 C/P/S(Client/Proxy/Server,客 户 端 /代理端/服务器端)架构(如
图 1-5 所示),采用中间代理将大大提高监控服务器端的处理速度,从而能支撑构
建大型分布式监控的环境。
图 1-5
监控系统更重要的功能是告警和故障处理,这对及时解决问题和故障自愈非
常重要。告警的时候,需要考虑到故障的有效汇报和集中汇报,防止出现“告警
洪水”,即同一类告警信息重复大量地发送。
配套课程详见:https://ke.magedu.com/index 公众号:马哥Linux运维 微信:yxy88619
Zabbix 企业级分布式监控系统
4
1.3 监控系统的开源软件现状
前面简单介绍了监控的原理,下面看看已有的解决方案。
在监控软件中,开源的解决方案有流量监控(MRTG、Cacti、SmokePing、
Graphite 等)和性能告警(Nagios、Zabbix、Zenoss Core、Ganglia、OpenTSDB
等)可供选择,并且每种软件都有自己的特点和功能,各自的侧重点和目标不完
全相同,在设计理念和实现方法上也大同小异,但都具有共同特征,例如,采集
数据、分析展示、告警以及简单的故障自动处理。最终都能达到对 IT 系统服务可
用性的一个完全展示。下面将详细介绍各自的特点。
1.3.1 MRTG
MRTG(Multi Router Traffic Grapher)是一套可用来绘制网络流量图的软件,
由瑞士奥尔滕的 Tobias Oetiker 与 Dave Rand 所开发,以 GPL 授权。
MRTG 最早的版本是在 1995 年春推出的,用 Perl 语言写成,可跨平台使用,数
据采集用 SNMP 协议,MRTG 将收集到的数据通过 Web 页面以 GIF 或 PNG 格式绘制
出图像,并以日、周、月为单位分别绘出,可以查询最大值和最小值,如图 1-6 所示。
图 1-6
MRTG 原本只能绘出网络设备的流量图,后来发展出了各种插件。因此,网
配套课程详见:https://ke.magedu.com/index 公众号:马哥Linux运维 微信:yxy88619
第 1 章 监控系统简介
5
络以外的设备也可由 MRTG 监控,例如,服务器的硬盘使用量、CPU 的负载等。
1.3.2 Cacti
Cacti(英文含义为仙人掌)是一套基于 PHP、MySQL、SNMP 和 RRDtool
开发的网络流量监测图形分析工具,如图 1-7 所示。它通过 snmpget 来获取数据,
使用 RRDtool 绘图,但使用者无须了解 RRDtool 复杂的参数。它提供了非常强大
的数据和用户管理功能,可以指定每一个用户能查看树状结构、主机设备以及任
何一张图,还可以与 LDAP 结合进行用户认证,同时也能自定义模板,在历史数
据的展示监控方面,其功能相当不错。
图 1-7
Cacti 通过添加模板,使不同设备的监控添加具有可复用性,并且具备可自定
义绘图的功能,具有强大的运算能力(数据的叠加功能)。
1.3.3 SmokePing
SmokePing 主要用于监视网络性能,包括常规的 ping、WWW 服务器性能、
DNS 查询性能、SSH 性能等。底层也是用 RRDtool 做支持,特点是绘制的图非常
漂亮,网络丢包和延迟用颜色和阴影来表示,支持将多张图叠放在一起,如图 1-8
配套课程详见:https://ke.magedu.com/index 公众号:马哥Linux运维 微信:yxy88619