最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

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

来源:动视网 责编:小OO 时间:2025-10-01 18:33:34
文档

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

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

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

Zabbix 作为一款企业级开源网络监控项目,提供分布式系统监控及网络监控功能,其高度集成的解决方案目前已广泛应用于各行各业[1]。Zabbix 具有node 和proxy 两种分布式部署方式,能够监控几乎所有类型的设备,提供完善API 接口,能够实现与其他运维管理系

于 滨 刘鹏宇 陆丽丽 孙玉强 崔建伟

中国联通济南软件研究院 济南 250100

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

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

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

统的完美对接,其提供对外开放接口,支持自定义告警,方便及时有效地发布通知,这对于构建分布式监控系统具有重要作用[2]。基于Zabbix 与Web 应用和微信、APP 等移动端应用结合,可以建设一套能够及时告警、快速定位、减轻运维人员繁重工作的监控系统。

1 系统整体架构

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

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

Zabbix 可通过配置触发器,在被监控的服务器和应用服务监控到达某个自定义阈值时触发触发器,执行相应动作。Zabbix 提供了高扩展性的触发器及动作执行方式,便于进行自定义监控进而得到理想结果。Zabbix 自

身提供邮件通知告警方式,但由于邮件接收具有延时并容易被被通知人员忽略,因此该系统建立了微信和移动APP 告警推送的机制,以保证运维人员可及时接受告警信息(如图1)

图1 整体架构

1.1 Zabbix架构

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

图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)。

图3 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)

图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)

图5 WEB服务端口及进程监控

对中间件监控:随着分布式服务不断扩增,对中间件的监控刻不容缓。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所示。

2.2 消息处理

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

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

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

图7 zabbix触发动作执行脚本

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

2.3 告警

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

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

图8 微信推送流程图

图6 应用中间件监控信息

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

图9 APP推送流程图

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

图10 经过消息处理后APP和微信推送的告警信息

2.4 信息统计

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

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

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

中,将监控数据采集进行细粒度存储[7]。

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

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

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

结果如图12所示。

2.5 权限管理

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

Web 和APP 使用服务端的权限管理模块,该模块下,不同角色对应不同权限,在Web 应用下,通过对不同用户账号配置不同角色,赋予这些用户不同权

限。用户在登陆Web 后,只能查看其权限范围内的监控信息,权限范围外的信息对该用户屏蔽。APP 与Web 相同,对于监控信息只有权限范围内的信息才可以查看,同时APP 上推送的告警消息,用户也只能接收到其权限范围内项目的告警消息。

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

图12 告警信息统计分析结果图11 

主机资源监控信息统计

3 总结

通过Z a b b i x 优秀的监控能力,与自建应用系统相结合,开发出一套满足企业个性化需求的分布式数字化监控系统。通过其内置的模板功能,可对服务器主机的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):136-140

[6] 龙炜.自动化运维工具在企业信息

系统管理中的应用[J].微型机与应用,2017,36(5):102-104

[7] 肖海琴.Zabbix 性能监控软件在高性

能集群上的应用[J].中国管理信息化,2017,20(3):139

[8] 李磊.I T 自动化运维平台建设

和应用[J ].信息技术与标准化,2016,1(10):59-61

技术广角

Broad Angle for Technology 71Abstract 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

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, Jinan 250100, China

文档

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

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

最新推荐

猜你喜欢

热门推荐

专题
Top