基于Zabbix的空管自动化监控系统的设计

2019-09-10 05:53蒋增恒
学习与科普 2019年8期

蒋增恒

摘 要:本文提出一种能够适用于LINUX空管自动化操作系统的集中监控系统,以解决空管自动化系统不能灵活配置监控系统的困难。集中监控系统基于Zabbix软件,通过C/S 模式,部署相应的监控主机对来自各个服务器终端的运行环境和主要监控指标进行采集,最终通过数据库集中处理后进行显示和告警。系统由监控系统调度模块、数据采集模块、日志监控模块、告警模块4 个模块构成,采用mysql数据库和python语言进行设计编写。针对Zabbix 对于文本型数据类型监控显示方面的不足,开发设计了基于Flask 框架的日志监控系统,作为Zabbix的监控补充,轻量级的日志监控系统很好的弥补了Zabbix 在代码、软件等性能监控上对于文本信息数据采集及显示上的不足。

关键词:空管自动化;集中监控;Zabbix

引言

民航空管自动化系统配备有完善的集中监控系统,自动化系统发生故障时,监控能够准确的将软硬件故障信息发送给维护人员,极大的增强了系统的安全性和可维护性。随着空管改革以及“大岗位、大值班”模式的推广,维护人员需要在多个岗位上监视自动化系统的运行情况,但是厂家提供的监控服务配置不灵活,且占用系统节点资源,并不能很好的满足工作需要。

本文针对此需求,提出了在使用开源Zabbix的基础上设计集中监控系统,用Zabbix对自动化系统的软硬件进行监控,然后开发日志监控模块对自动化软件模块在运行过程中可能发生的故障进行监控。

1 系统分析

1. 1 监控调度及数据采集存储

基于Zabbix的监控调度主程序将监控自动化系统服务器主机的CPU、内存、磁盘等硬件参数和交换机、路由器等网络设备参数,并将采集到的监控信息格式化后存储到mysql数据库中,是整个集中监控系统的核心。

1. 2 日志监控

自动化软件模块、外部信号在运行过程中,也会遇到执行错误或中断的情况,因此相关的软件错误监控机制是必须的。日志监控模块通过读取自动化监控服务器OASYS上的日志,收集程序运行中的错误,利用基于Flask框架编写的web前端进行显示,并执行相应的告警策略,将错误信息发送给维护人员。

1. 4 告警

监控平台应在故障发生时,可以通过多种渠道通知运维人员,包括本机的声光告警以及短信、邮件等通信方式。声光告警是最为常用的一种告警方式,Zabbix软件本身就可以实现。邮件推送告警则可以通过一些开源项目轻松实现。

2 系统设计

2.1 集中监控系统基本结构设计

该系统共由基于简单网络管理协议SNMP 与Zabbix agent 客户端的网络数据采集模块,基于mysql 数据库的监控数据存储模块,基于Zabbix server 的监控调度模块,基于Flask 框架的web 端日志监控模块组成。

2.2集中监控系统的功能模块设计

2.2.1监控调度模块和数据采集存储模块设计

Zabbix集中监控系统基于web 形式,可以灵活的修改需要监控的服务器、监控的内容、监控的时间等项目。集中监控系统需要在服务器和被监控端安装相应的软件,Zabbix 就利用10050端口监听Agent发回的信息。Zabbix软件可以灵活的调用mysql数据库,通过在数据库中建立告警表,监控调度主程序在收到监控信息之后会判断是否存在相应的告警策略,并将信息存储到数据库的告警表中。

数据采集则采用基于简单网络协议SNMP 与C/S 架构相结合的数据采集方法。采集到的数据将格式化后存储到mysql相应的表中,相关硬件采集到的数据基本都包括:

(1)资源列表:服务器对应的ip 地址,dns 域名,对应应用的端口号,使用状态等。

(2)监控项列表:被监控主机上,所有被监控的网络节点的信息,比如cpu 负载等。

(3)告警列表:监控系统不单单是完成数据展示的作用,还要完成对监控数据配置阈值,超过既定阈值,实施报警策略。

2.3.2日志监控模块设计

空管自动化系统在运行时, OASYS上会实时生成大量的运行日志,日志会实时的记录在日志文件中,我们可以在集中监控系统上读取该日志文件,实现对日志的监控。THALES自动化系统中自带python软件,可以通过编写python脚本实现对日志的相关操作。采集到的日志将利用python中的相关模块存入mysql数据库中。

2.3.3 前端web模块的设计

本文使用基于python语言编写的Flask框架建立前端web模块,Flask是轻量级的web框架,其总体的系统框架采用MVC 模式,即模型,视图函数和控制器函数相分离的架构模式。通过python语言,可以将mysql数据库中采集到的日志文件读入,并通过匹配关键字的方法对系统运行日志在web端进行分级显示。例如:设置如下关键字:“Failed、NOT OK、down”等,如果匹配成功的话,将关键字后的10 行内容显示在web 端显示,相关人员可以在web 上查看错误详情,并且给出相应的处理方法。

2.3.4 告警模块

告警模块分为两个部分,其一为Zabbix Server的告警和邮件推送,告警内容主要为自动化系统的硬件告警,如CPU、硬盘等,或者通过SNMP協议收集到的网络设备的告警,这些功能通过Zabbix Server就可以实现。

其二为web前端监控日志的告警和邮件推送。告警内容主要为采集到的日志中关于自动化系统软件模块和外部接入信号的告警。我们在数据采集及存储模块中设定,如果日志中出现告警关键字,则根据记录的相关信息,以邮件的形式发送给维护人员。集中监控系统本机声音告警可以通过python语言调用语音包实现,而邮件推送告警则可利用 python 标准库中的smtplib 模块发送邮件。

3 结束语

本文从空管终端运行现场实际需求出发,提出一种基于开源监控软件Zabbix的空管自动化集中监控系统。系统可以在不占用自动化系统节点的情况下,将自动化系统的监控延伸到各个岗位上,为空管技术保障提供了双重保障。

参考文献:

[1]周萌. CentOS 下ZABBIX 的配置与使用[J]. 北京信息科技大学学报(自然科学版). 2015,(01).

[2] 姚仁捷. Zabbix 监控系统深度实践[M]. 北京:电子工业出版社,2014.

[3] Miguel Grinberg. Flask Web 开发[M]. 北京:人民邮电出版社,2014.

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

[5]THLAES SHANGHAI TMA SYSTEM/SEGMENT SPECIFICATIONS