期刊文章基于Zabbix的分布式数字化监控系统设计 与实现

Posted 联通智汇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了期刊文章基于Zabbix的分布式数字化监控系统设计 与实现相关的知识,希望对你有一定的参考价值。

点击上方蓝色字关注我们~


文章来源:《信息通信技术》杂志

                2018年第3期


摘 要  文章提出一种利用Zabbix对企业服务器和应用服务进行监控方法,利用其优秀的性能和可扩展性,与Web 和移动端相结合,建设适应企业需求的分布式监控方案。该系统可对服务器性能及应用服务状态进行实时监控,对故障或风险问题进行及时告警推动,大幅度提高运维人员的管理效率,保证企业应用的稳定性,为实现自动化运维提供有效帮助。 


关键词  Zabbix;实时监控;分布式系统;告警推送;自动化运维


【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

背景

随着企业服务器和应用服务数量的不断增加,运营管理人员面对越来越多的应用,除了监控服务器自身节 点是否正常运转外, 还需监控服务器上运行的Web、 数据库、DNS等应用服务是否正常运行。传统运维方式中,运维人员疲于处理各种故障、效率低下,即使加班加点地调试、部署、维护,也经常因设备故障而导致业务中断,严重影响业务的正常运转;因此,部署一套高效可靠的监控系统,实时监控服务器与应用服务的运行状态,提供便捷、及时的通知机制让运维人员快速定位并解决故障尤为重要。 

Zabbix作为一款企业级开源网络监控项目,提供分布式系统监控及网络监控功能,其高度集成的解决 方案目前已广泛应用于各行各业[1]。Zabbix具有node和 proxy两种分布式部署方式,能够监控几乎所有类型的 设备,提供完善API接口,能够实现与其他运维管理系统的完美对接,其提供对外开放接口,支持自定义告警,方便及时有效地发布通知,这对于构建分布式监控 系统具有重要作用[2]。基于Zabbix与Web应用和微信、APP等移动端应用结合,可以建设一套能够及时告警、快速定位、减轻运维人员繁重工作的监控系统。


【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

1 系统整体架构

该系统由Zabbix与监控应用两部分组成。Zabbix完 成对服务器和应用服务的监控,应用则对Zabbix所监控的项目进行展示和告警机制的处理。 

Zabbix会定时获取服务器和应用服务的监控信息,并将数据存入数据库,此部分为应用端监控展示信息的数据来源。 

Zabbix可通过配置触发器,在被监控的服务器和应用服务监控到达某个自定义阈值时触发触发器,执行相 应动作。Zabbix提供了高扩展性的触发器及动作执行方 式,便于进行自定义监控进而得到理想结果。Zabbix自身提供邮件通知告警方式,但由于邮件接收具有延时并容易被被通知人员忽略,因此该系统建立了微信和移动 APP告警推送的机制,以保证运维人员可及时接受告警 信息(如图1)。

【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

1.1 Zabbix架构

Zabbix主要由Zabbix Server、Proxy、Agent、 Web前端及Database等部分组成(如图2)。

【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

Server为Zabbix核心组件,主要负责接收Agent发送的信息数据,管理系统配置信息和历史数据。 Proxy为代理服务器,可视为Server的扩展部分,可代替Server收集监控设备上的数据并转发给Server, 主要适用于分布式环境中[3]。Agent部署在被监控设备上,主要负责收集监控数据并发送至Server或Proxy。 Web前端方便运维管理人员对Zabbix进行配置及查看监控设备的状态,通常与Server部署在同一台服务器中。Database负责存储收集的监控数据及Zabbix配置信息等。

1.2 Zabbix配置管理

Zabbix配置管理在Zabbix携带的web前端中进 行,主要包括以下3个步骤。 

步骤一:在需要监控的主机中,创建监控Item,监控指定的数据。 

步骤二:创建触发器Trigger,将创建好的监控项 添加进触发器,并设置触发条件。 

步骤三:创建动作Action,将触发器和用户关联起来,当触发器被触发时,执行相应动作(如图3)。

【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

其中,主机即被监控的设备,监控项来源于被监控的主机,是监控数据收集的核心。触发器可以看作是一个控制中心,触发器会设定一个条件,当监控项中接收到的监控数据达到触发器设定的条件时,触发器便会执行相应的动作。本文设计的分布式数字化监控系统在触发器被触发后调用服务层接口,执行相应的消 息处理流程,将处理后的消息推送至微信和移动APP中,及时通知相关人员,帮助其快速定位并解决问题。 Zabbix作为分布式监控系统,其优势之一在于提供了自动发现功能,可自动发现并添加主机,这对于大规模的 网络管理十分有效。同时Zabbix提供了模板功能,主要 将一些共性的监控项如主机CPU、内存、磁盘等抽取出来,在添加监控项时只需添加模板即可将模板中的监控项全部纳入系统管理中,避免了重复性工作,提高工作效率。


【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

2 基于Zabbix的分布式数字化监控系统应用


2.1 实时监控

报警信息推送的时效性将直接影响运维质量,实际工作中,运维人员无需时刻紧盯系统的运行情况,一切 事件信息均通过微信、移动APP获取。Zabbix收集监控数据存储至数据库,该数据库作用于应用监控展示,通过对这些监控数据进行处理,可对监控信息进行个性化展示,满足企业的个性化需求。 

Zabbix Server可通过Zabbix Agent、SNMP、 ping、IPMI等方法对远程服务器及网络设备进行状态监 控和数据采集。通过B/S模式在Web端进行系统配置和 信息呈现。在Zabbix系统中将监控主机抽象为主机,系统采集服务器的信息抽象为监控项,通过设置触发器监测监控项的返回值,当满足触发条件便执行相应动作。 Zabbix可设置的动作包括执行脚本程序、发送报警信息和执行命令,整个过程为毫秒级,能够很好地实现实时监控。

针对不同监控目标端又可分为对主机性能监控、对 Web服务监控、对中间件监控等不同监控应用。 

对主机性能监控:Zabbix Server有多种监控主机性能模板,用户可根据自身需要选择适当模板,对Cent OS系统性能监控,可包括磁盘、CPU、内存、流入流量、流出流量、丢包率等多项主机性能(如图4)。

【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

对Web服务监控:采用net.tcp.listen[8080]监控服 务器8080端口是否在监听状态,返回值为0表示8080 端口没有处于监听状态,返回值为1表示8080端口处于 监听状态;另外可通过net.tcp.port[IP,8080]检测是 否对服务器8080端口进行TCP连接,通过该命令可验 证服务器的连通性,返回值为0表示8080端口无法进行 TCP连接,返回值为1表示8080端口可进行TCP连接(如图5)。

【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

对中间件监控:随着分布式服务不断扩增,对中 间件的监控刻不容缓。Zabbix自定义监控项便很好地 满足个性化监控需求。通过对Zabbix Server配置文 件UserParameter修改,以添加自定义监控项。如:UserParameter=cio.str[*],/opt/Zabbix/script/cipan_ io.sh'$1';通过配置自定义监控项时将键值设置为 cio.str[*],在监控项获取数据时,将执行其对应/opt/ Zabbix/script/cipan_io.sh本,'$1'则为执行该脚本时传递的参数。 在zabbix基础监控的基础上建立的对应用中间件的 监控效果如图6所示。

【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

2.2 消息处理

即使是再强大的监控系统,也不乏有误告发生。 为降低Zabbix系统压力,Zabbix系统配置自定义监控项均采用异步处理方式,即agent每分钟获取一次自定义 监控项的结果并存放于日志文件中,而Zabbix仅需定时获取日志即可,无需进行复杂的逻辑处理,大大提高了Zabbix系统性能,但其缺点为,异步数据处理容易导致数据延时。因此,对Zabbix的告警消息进行二次处理是十分必要的,能够极大地降低误告频率。

另外Zabbix告警内容存在局限性,例如某个分布式服务中某节点挂掉,无法获取具体节点;某台机器 CPU负载过高,无法获取该机器部署了哪些应用;消息队列中消息积压超过阈值,却无法获取具体哪个 Topic积压数量过多;消息队列中出现离线消费者,却 无法获知该离线消费者所对应的Topic等;因此需要对告警消息进行二次处理。

当监控项监控数据达到阈值同时触发触发器发起动作时,告警消息将发送至消息处理接口,将告警消息进行过滤、加工、处理为更加准确易读的消息,便于运维 人员更快定位问题(如图7)。

【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

触发动作采用脚本形式,通过调用zabbix-server机 器中的shell脚本,调用消息处理的JAVA程序,对消息进行过滤处理。下面将要介绍的告警模块,告警内容均是经过处理的,获取主机部署的应用,虚拟机的宿主机等信息均是通过消息处理过程获取。

2.3 告警

监控消息处理后,垃圾消息已经被过滤,一些可读性不高的消息在被处理之后获得良好的可读性,因此需要一个良好的通知机制将这些消息推送给相关人员。 Zabbix默认支持邮件告警功能,但邮件接收不及时甚至 容易被忽视[4]。手机作为人们日常生活中必不可少的工具,适合作为告警消息的接收端,便于运维人员及时收到告警消息,快速定位故障处理问题。在大规模告警消息产生时,通过调用短信网关实现短信告警方式,对于消息接收者来说是一个很不友好的体验,同时会带来相应的费用,经过多方面考虑,最终我们选择使用微信和 移动APP来作为告警消息的接收端。

微信在注册后通过配置相应参数搭建服务,可为企业不同项目创建不同应用,每一应用对应唯一标识 agentId,在调用微信消息推送接口时,只需在参数 中添加相应agentId,便可将告警消息推送至相应项目中,该项目负责人员便会即时接收到告警消息(如图8)。

【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

移动APP的消息推送机制通过iosandroid各自 推送服务器实现,用户在安装APP后,APP会向各自推送服务器注册相应的设备信息,当消息经过处理流程到达APP推送部分时,这些处理后的消息会被推送 至IOS和Android推送服务器上,推送服务器会查看当前服务器注册的设备信息,并将该消息发送至相应设备(如图9)。

【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

因服务器负载过高推送的经过消息处理后的APP和 微信告警如图10所示。

【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

2.4 信息统计

预测分析是一种统计或数据挖掘解决方案,通过对历史数据进行计算,以确定未来结果的算法和技术[5]。该方法可用于预测、优化、预报、模拟等。在本文的监控系统中,基于历史数据进行预测分析,可判断何时会 发生系统故障,例如基于1小时历史数据,分析未来3小时系统状态。

Zabbix的监控告警,仅能在出现问题后通知运行 维护人员,虽然Zabbix3.0已支持预警功能,但仍存在有局限性,无法较好地满足当前个性化的需求,因此本监控系统中对Zabbix监控的历史数据进行统计分 析,以提前预知问题[6]。

通常在监控系统中有两个主要关注点,一是历史数据的存储与展示,二是定义报警策略并及时发现问题。为能更加细致、精确地分析数据,在监控系统 中,将监控数据采集进行细粒度存储[7]。 

Zabbix系统每分钟获取一次监控数据,若系统监控大批量主机,这些机器的监控数据存储代价和查 询绘图代价较高。因此,本监控系统中,每日凌晨1 点,定时获取Zabbix前一天的监控历史数据,每台机 器获取Top5并取平均值,本监控系统Web界面展示 Zabbix报表,直观地展示某台机器某段时间CPU、内存、磁盘、流入流量、流出流量等基本性能。可根据所绘趋势图预测机器未来一段时间的性能及资源使用情况。

随着分布式系统的广泛应用,使用的机器越来越多,如何对这些机器进行合理的资源分配也是当前运 维人员需要考虑的问题[8]。通过对Zabbix监控数据存储,将数据进行筛选、处理、聚合后,展示每一台机 器的CPU、内存、磁盘等使用情况,可直观展现每台机器的资源使用情况,以便采取相应措施,提高资源利用率。 

对主机资源信息监控如图11所示。告警信息统计结果如图12所示。

【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

2.5 权限管理

通过增加权限的管理,系统可以有效地控制不同人员查看不同项目的监控和告警内容,保证了数据的安全性。 

Web和APP使用服务端的权限管理模块,该模块下,不同角色对应不同权限,在Web应用下,通过对不同用户账号配置不同角色,赋予这些用户不同权限。用户在登陆Web后,只能查看其权限范围内的监控信息,权限范 围外的信息对该用户屏蔽。APP与 Web相同,对于监控信息只有权限范围内的信息才可以查看,同时 APP上推送的告警消息,用户也只能接收到其权限范围内项目的告警消息。

微信提供了一种权限管理方式,在微信中为不同项目创建不同应用,可在不同应用中添加不同人员,只有用户是该应用下的成员时,才能接收到相应的推送消息。


【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

3 总结

通过Zabbix优秀的监控能力,与自建应用系统相结合,开发出一套满足企业个性化需求的分布式数字化监控系统。通过其内置的模板功能,可对服务器主机 的CPU、内存等共性指标快速监控,大大提高配置效率,另外通过自定义监控项的配置,极大满足了企业的个性化需求,保证监控内容 的全方位覆盖,通过Zabbix对不同监控项配置不同触发策略,并结合移动端应用的搭建,使运维人员可以实时获取监控消息和经过过滤、分类并结构化处理后的告警信息,帮助运维人员快速定位故障,解决问题,提高工作效率,保证企业应用的稳定性。


参考文献

[1]    毛承国,张卫华,张进铎,等.大规模集 群运维自动化的探索与实践[J].信 息安全与技术,2014,5(2): 60-63 

[2]    钟志勇.微信公众平台应用开发实战 [M].北京:机械工业出版社,2013 

[3]    郭晓慧,李润知,张茜,等.基于Zabbix 的分布式服务器监控应用研究[J]. 通信学报,2013,34(Z2):94-98 

[4]   刘远超,李树彬.基于Zabbix和微信 企业号实现网络监控的研究[J],山 东科学,2017,30(4):124-130 

[5]   车路,张焕远,夏亚东.基于开源软件 的云监控平台设计与实现[J].计算 机技术与自动化,2015,34(1):136140

[6]   龙炜.自动化运维工具在企业信息 系统管理中的应用[J].微型机与应 用,2017,36(5):102-104 

[7]    肖海琴.Zabbix性能监控软件在高性 能集群上的应用[J].中国管理信息 化,2017,20(3):139 

[8]  李磊.IT自动化运维平台建设 和应用[J].信息技术与标准 化,2016,1(10):59-61


◆ ◆ ◆ ◆

Design and Implementation of Distributed Digital Monitoring System Based on Zabbix


Yu Bin

Liu Pengyu 

Lu Lili 

Sun Yuqiang 

Cui Jianwei

China Unicom Software Research Institute

Abstract  In this paper, we propose a solution that uses Zabbix to monitor enterprise servers and application services, and utilize its excellent performance and scalability to combine with web and mobile terminals to build an efficient operation and maintenance system that meets the needs of enterprises. The system can monitor the server performance and application service status in real time, alert the failure or risk issues timely, improv the management efficiency of operation and maintenance staff greatly, ensur the high availability and continuity of enterprise applications, and provide effective help for Automated operation and maintenance. 

Keywords  Zabbix; Real-time Monitoring; Distribated System; Alarm Push; Automated Operation and Maintenance

◆ ◆ ◆ ◆


【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

于 滨 

学士,项目负责人,主要研究领域为自动化运维与监控、分布式架构云平台架构设计、大数据、项目管理等。

【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

刘鹏宇

学士,工程师,主要研究领域为自动化运维与监控等。

【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

陆丽丽 

学士,工程师,主要研究领域为自动化运维与监控等。

【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

孙玉强

学士,高级工程师,主要研究分布式应用架构下的基础设施系统集成及智能化运维。

【期刊文章】基于Zabbix的分布式数字化监控系统设计 与实现

崔建伟 

学士,高级工程师,主要研究分布式应用架构下的基础设施系统集成及智能化运维。


贴心提示

如您需要引用本文,参考文献写法为:于滨,刘鹏宇,陆丽丽,等. 基于Zabbix的分布式数字化监控系统设计与实现[J].信息通信技术,2018,12(03):65-71



供 稿:《信息通信技术》编辑部

编 辑:陈曦



以上是关于期刊文章基于Zabbix的分布式数字化监控系统设计 与实现的主要内容,如果未能解决你的问题,请参考以下文章

基于 Docker 安装 zabbix

python实现人脸识别系统设计_基于ROS的人脸识别系统设计与实现

Zabbix基于Proxy分布式部署实现Web监控

zabbix分布式监控的部署

分布式系统监视zabbix讲解一技术流ken

Zabbix理论知识