热门资讯网的文章和资源来自互联网。如果有侵犯版权的资源请尽快联系站长,我们会在24h内删除有争议的资源。

简述最受欢迎的企业级开源监控系统

科技 admin 次浏览 已收录 暂无评论

启迪云-高级开发工程师 刘寒寒

为什么云平台监控很重要?

近年来,互联网用户的需求驱动、技术的进步以及商业模式的转变,共同促进了云计算的快速发展。2006年3月,亚马逊首次推出了弹性计算云服务(EC2),用户可以租用其上的云端电脑运行自己的应用,这种服务就是基础设施。目前,云计算平台的研究和应用在学术和商业的共同推进下,逐步显现出迅速增长的势头。国内外云计算公司纷纷推出了自己的云计算平台和解决方案,同时,选择使用云平台的企业客户也越来越多。

云平台聚合了大量物力资源和虚拟资源,并采用虚拟化技术实现动态伸缩服务,按需提供服务。而监控在提高云计算的服务质量方面扮演着重要的角色。为使得云平台可以顺利提供服务且正确运转,需要多方位监控云平台运转的架构,确保云平台运营者可以了解和把握总体运行情况,从而可以及时优化资源性能和可用性。另外,企业级的云服务平台具有以下一些特点:集群规模大、服务的高稳定诉求、资源的动态伸缩。因此,企业级的云平台监控系统需要同时支持对物理资源和虚拟资源的监控,物理资源一般包括服务器、存储设备和网络设备,虚拟资源主要是指通过虚拟化技术运行于物理服务器上的客户虚拟机、虚拟网络等。

监控系统的架构需要支持动态扩展,当云平台的规模增大时,也能够对新增加的节点进行监控。监控系统本身应该支持高可用,不能出现单点故障的问题。监控系统的作用是为管理员或用户提供一种掌握平台上各种资源的使用情况的途径,所以监控系统必须能够实时的展示云计算平台上各种资源的使用情况,并对触发了预设阈值的情况进行报警通知。

Zabbix是一个基于WEB界面的提供分布式系统监控以及网络监控功能的企业级开源运维平台,也是目前国内互联网用户中使用最广的监控软件。它支持多种采集方式和采集客户端,有专用的Agent,也可以支持SNMP、IPMI、JMX、Telnet、SSH等多种协议。Zabbix易于管理和配置,其自动发现功能可以大大减轻日常管理的工作量,灵活的告警机制能够满足不同用户在不同情形下的工作需要。

接下来将简单介绍一下监控系统的实现原理和zabbix系统,以及云平台上监控系统的整体架构。

监控系统的实现原理

  • 监控系统的基本模型

监控系统往往需要对物理硬件和应用软件的性能和参数进行数据汇集,实现集中管理和统一分析。在一个监控系统里,构成要素大体可以分为两部分,即数据采集部分(客户端)和数据存储分析告警展示部分(服务器端),这两部分构成了监控系统的基本模型,如图1所示。


简述最受欢迎的企业级开源监控系统

图1 监控系统的基本模型

数据采集的工作模式有被动模式(服务器端到客户端采集数据)和主动模式(客户端主动上报数据到服务器端)。通常,大多数监控系统都可以同时支持这两种模式。被动模式对服务器的开销较大,适合小规模的监控环境,主动模式对服务器的开销较小,适合大规模的监控环境。对于一般小规模的监控环境,由于被监控的节点不多,产生的数据也相对较少,监控系统可以采用C/S(Client/Server,客户端/服务器端)架构,这种架构适合于规模较小、处于同一地域的环境。对于大规模的监控环境,被监控的节点较多,监控产生的数据和网络连接的开销就会非常大,而且由于跨地域等多种因素,需要分布式的解决方案,常见的监控方式为C/P/S(Client/Proxy/Server,客户端/代理端/服务器端)架构,采用中间代理将会大大提高监控服务器端的处理速度,从而能支撑构建大型分布式监控的环境。

监控数据的采集、存储、分析和故障报告是每个监控系统的基本功能,常见的监控系统性能采集指标如表1所示。

监控项目

详细内容

主机监控

CPU、内存、磁盘的剩余空间/利用率和I/0、SWAP使用率、进程数、负载

网卡监控

网卡流量,包括流入/流出量和错误的数据包数

URL监控

监测指定URL访问过程中的返回码、下载时间及文件大小

应用程序

端口和内存使用率、CPU使用率、服务状态、请求数、并发连接数

数据库

监测数据库中指定的表空间、Session数、事务数、死锁数、缓冲池命中率、当前连接数

日志

错误日志匹配、特定字符串匹配

硬件

温度、风扇转速、电压等

表1 常见性能采集指标

监控系统中比较重要的是告警和故障处理,这对及时解决问题和故障自愈非常重要。在数据采集完成之后,需要对采集到的数据进行分析和处理,判断是否有异常,是否满足告警条件等。告警条件通常是根据实际的经验值、业务需求来设置的,达到告警条件设置的阈值时,则发送告警信息给管理人员,由管理人员进行处理。当然,对于有些故障,如果可以由程序自动处理,减少人工干预,可以在一定程度上提高故障的响应速度。

监控系统的一般结构

目前,监控系统最常用的体系结构仍然为C/S结构,即由监控客户端和监控服务器组成,大规模分布式监控系统中大多采用阶梯式体系结构,即C/P/S结构,下面将简单介绍这两种结构,并分析比较它们的性能表现。

· 集中式体系结构

在客户端/服务器端结构中,每个客户端负责收集所在监控节点的数据,以主动或者被动的方式向服务器端发送监控数据。服务器端将采集到的数据存放在数据库中。集中式体系结构如图2所示:


简述最受欢迎的企业级开源监控系统

图2 集中式体系结构

· 阶梯式体系结构

阶梯式体系结构中,每个监控节点安装监控客户端,并选定代理节点,代理节点相当于局部监控服务器。客户端监控数据的采集由代理节点完成,然后再将数据发送到服务器端。阶梯式体系结构如图3所示:


简述最受欢迎的企业级开源监控系统

图3 阶梯式体系结构

从安装部署方面来说,C/S结构的监控系统的部署会更加容易,但是从可扩展性方面来看,集中式结构的监控服务器负责收集所有的监控数据并进行存储分析,在网络流量和计算能力的限制下,只能适合于小规模的监控。而有代理节点的监控系统中,代理节点负责从客户端采集数据,因此服务器端仅需要从代理节点处采集数据,会大大减轻服务器端的压力,具有较强的扩展能力。另外,从容错性方面来说,集中式体系结构的服务器端负载重,容易造成灾难性错误,而阶梯式结构则由于其分布式的特性,可以将错误控制在某个代理节点所在的范围之内。最后,从延时性方面对比,集中式结构延时较小,阶梯式结构的延时性较大。

  • 推拉模式的原理

监控系统中监控数据在监控客户端和监控服务器之间的传输,主要有推(Push)模式和拉(Pull)模式两种。这两种模式的示意图如图4所示。


简述最受欢迎的企业级开源监控系统

图4 Push和Pull模

推模式(Push):是指由监控客户端主动将监控数据推送给监控服务器。Push模式的实时性和数据一致性较好,但是效率较低。Push操作的频率一般由设定好的时间间隔触发,一旦时间间隔设置不当,可能会造成丢失监控数据的现象,或者是推送的数据过多,前者影响了监控系统的准确性,而后者则增加了通信开销。

拉模式(Pull):是指由监控服务器端采用轮询的方式通知客户端,将被请求的监控数据项发送给服务器端。Pull模式的针对性强,能够满足个性化需求,并可以减少通信开销,但是一致性和实时性一般。如果轮询的次数频繁,以及需要轮询的客户端较多,则服务器端的压力就会变大。

数据传输具体选哪种模式,还需要对实时性、准确性、系统开销等多方面进行综合的比较。推模式的实时性高,比较适合监控代理中预先设置触发事件和阈值告警的场景。拉模式中,服务器需要对客户端进行周期轮询,因此比较适合于被监控的节点较少的场景。本文所实现的监控系统采用推模式采集数据,并对不同的监控指标设定不同的采集周期,尽可能的降低采集开销并提高数据的准确性。

Zabbix系统介绍

1.Zabbix中的主要概念

l Host:一个网络主机,可以是服务器或者交换机等。

l Host Group:一个逻辑的Host组,这个组对应着相应的Host、Template(监控模版)和用户组权限。

l Template:监控模版,包含Application(监控的应用),Item(监控项),Trigger(触发器),Graph(图表)等。一个监控模版可以和多个Host或Host Group对应,与其对应的Host就会被按照Template中定义的Item, Trigger, Graph进行监控、阈值判断和绘图。

l Item:监控项,定义了监控的类型、Key、存储的方式、数据清理的方式等。

l Trigger:一个包含逻辑表达式的触发器,当Server端接收到监控数据时就会调用与监控数据Key相关的Trigger进行逻辑判断,决定Trigger是抛出“OK”还是“Problem”的状态。”Problem”的状态还分为六个等级:Not Classified, Information, Warning, Average, High, Disaster。Trigger与Trigger之间还存在着依赖,能有效解决单点服务的宕机造成所有依赖服务报警的问题。

l Discovery Rule:为一个主机上的不同实体提供了一种自动创建监控项、触发器和图像的方法。比如主机的磁盘分区、网卡名称等,这些监控项都具有不确定性,因此需要使用discovery功能进行自动发现。Discovery的使用过程分为两步:自动发现特定变量的名称,然后添加变量的Items。

l Event:事件可分为三类,Trigger的状态变化、Zabbix的Discovery发现新Host、Zabbix的Agent主动注册服务。每一个事件都有相应的Action来处理。

l Action:Action包含了执行Action的条件(Condition)和操作(Operation)。操作可以是Send Message和执行Remote Command。

Zabbix特性功能

Zabbix具有常见的商业监控软件所具备的功能,包括主机的性能监控、网络设备的性能监控、数据库的性能监控、多种告警方式、分布式、可扩展能力、API等。

1) 数据收集

v 可用、性能检测

v 支持Agent、SNMP、IPMI、JMX、SSH、Telnet等

v 自定义的检测

v 自定义收集数据的频率

v 服务器端/代理端和客户端模式

2) 高度可定制的告警

v 发送通知,可定制包括告警级别、动作升级、收件人和媒体类型

v 通知可以使用全局宏变量和自定义的变量

v 自动处理功能包括远程命令的自动调用和执行

3)灵活的触发器

v 可以定义非常灵活的告警阈值和多种高级相关联的条件

4) 历史数据的存储

v 数据存储在数据库中

v 历史数据的存储周期可以配置

v 定期删除过期的历史数据

5) 使用模板

v 模板可以分组

v 模板具有可继承性

6) 网络发现

v 支持自动发现网络设备和服务器

v Agent自动注册

v 支持自动发现(Low level discovery)实现动态监控项的批量监控,内置的自动发现包括文件系统、网络接口、SNMP OID,可定制自动发现

7) API功能

v 应用API功能可以方便地和其他系统结合

8) 大型环境的支持

v 利用Zabbix-Proxy方式即可轻松构建远程监控

Zabbix的系统架构

Zabbix的通用架构是Client/Server架构,分布式架构为Client/Proxy/Server或Client/Node/Server,Zabbix-Server将采集到的数据持久地存放在数据库中,然后用前端UI友好的展示给用户。

C/S监控架构是由Zabbix Server和Agent直接组成,这种架构通常只负责监控一个数据中心。在这种架构下,监控数据的采集由Server和Agent共同完成。数据采集到Server端后,Server端一方面会查询这个Key是否有对应的Trigger进行阈值处理,如果有则根据Trigger定义的规则进行判断,并决定是否抛出相应的Event。Trigger产生的每个Event会由相应的Action去处理,这个Action可以是给管理员发送报警,也可以是Server端执行远程调用,重启Client的某个服务。另一方面,Zabbix Server会将采集到的数据按Item中定义的规则存储到后端的DB。Zabbix的面板会通过Server提供的API去获取监控数据并进行数据的展现。

C/P/S架构相比C/S架构多出了一个Zabbix Proxy,C/P/S监控架构如图5所示,Zabbix Proxy的主要应用场景是多数据中心的集中监控。Zabbix Proxy可以看作是一个数据中心的Zabbix Server,但他除了对数据进行缓存,并不对数据进行额外的处理。Zabbix Proxy的加入能缓解Zabbix Server的压力,同时也能解决多数据中心监控的问题。


简述最受欢迎的企业级开源监控系统

图5 C/P/S监控架构

Zabbix的运行流程

当搭建好Zabbix的运行环境后,可以登录Zabbix-Server的Web页面添加被监控主机,也可以使用API调用添加监控主机。然后,为该主机添加监控模板,即配置该主机的监控项。完成主机的添加和配置后,Server端就会定时的主动或被动地获取Agent端的监控数据,并将获得的监控数据存放在数据库中。如果被监控主机设置了Trigger,则在Zabbix-Server每次接收到Items的新数据时,就会对Items的值进行判断,如果达到Trigger表达式设置的阈值,就会生成一条Event,触发告警。告警的操作是由Action定义的,Action中定义了告警的条件,以及发送告警的方式、内容和告警接收人。运行流程如图6所示。


简述最受欢迎的企业级开源监控系统

图6 Zabbix的运行流程

Zabbix在云平台上的架构

云计算平台的系统架构如图7所示,控制节点安装OpenStack控制节点组件,用户通过UI管理和使用云平台。控制节点采用pacemaker+haproxy实现高可用,HAproxy监听vip,并将请求转发至三个控制节点中的任意一个。计算节点安装OpenStack计算组件和网络组件,创建的云主机就运行在计算节点上。控制节点和计算节点之间,以及OpenStack各组件之间都是通过网络进行通信。


简述最受欢迎的企业级开源监控系统

图7 云计算平台的系统架构

在该云平台上部署的监控系统的整体架构图如图8所示,在每一个控制节点上都安装Zabbix Server程序,但是只有一个Server处于运行状态,即Zabbix-Server是单活的。Zabbix Proxy安装在每一个计算节点上,proxy负责将从Agent端采集到的监控数据,发送给Server端。Zabbix-Agent安装在每一个需要被监控的节点(虚拟机节点和物理机节点)上,负载采集被监控机上的各项指标信息。


简述最受欢迎的企业级开源监控系统

图8 云监控系统的整体架构

结束语

随着互联网的发展,云计算的使用也越来越得到市场的认可,特别是近几年来,许多企业都开始将业务从传统平台上转向云计算平台。云计算具有高效的资源管理、动态负载均衡、按需服务、弹性计算等特性,因此,越来越多的网络服务、应用程序开始运行在云平台上。

云平台的稳定性是云服务使用者最看重的特性,也是云服务提供商放在首位的实现目标。因此,不管是对云服务提供商,还是云平台的使用者来说,为云平台开发一套监控系统都是非常必要的。云监控系统能够帮助用户实时的了解系统资源的使用情况和服务的运行状态,并且在出现异常时触发报警,及时地通知相关用户,甚至可以自动恢复。Zabbix系统是当前最受欢迎的企业级开源监控解决方案,它的功能很多,并且可扩展能力强,这都使得Zabbix的系统架构非常适合作为构建自己的监控系统的基础。

热门资讯网 ,版权所有丨如未注明,均为原创,转载请注明本文固定链接
喜欢 ()or分享