刘 畅,庞菲菲,白水成,曹 波
(1.西安市大气探测中心,西安 710016;2.陕西省气象局秦岭和黄土高原生态环境气象重点实验室,西安 710016;3.西安市公共气象服务中心,西安 710016;4.西安市大气探测中心,西安 710016;5.陕西省气象信息中心,西安 710014)
目前陕西省气象部门主要通过国家气象信息中心统一开发的“天镜”系统以及“天擎”的综合业务监控子系统实现关键信息的实时监控和告警,其功能设计主要针对于国家级和省级气象部门监控运维需求。对于市级气象部门而言,各类气象业务系统的运行环境不尽相同,部署环境更加复杂,包括台站业务计算机、工作站、各类物理服务器以及公有云、私有云等虚拟化环境,同时在基础网络通信方面,又涉及各层级的网络硬件设备。在此背景下,市级气象部门在信息网络系统方面通常呈现出体量不大,但种类繁多、新旧掺杂的特点。要保证各类气象业务系统稳定运行,基层运维人员则需要实时关注与其相关的各类硬件设备和软件系统的硬件状态、进程状态等各类指标是否正常,这就需要依赖于自动化、智能化的监控工具,让运维人员更加方便、集中地进行运维监控管理。
伴随气象信息化的快速发展,近年来市县两级气象部门信息网络资源规模不断提升。以西安市气象局为例,目前全市拥有各类业务核心主机20余台,核心网络设备约20台,物理服务器约30台,VMware虚拟化平台一套,上线虚拟机28台,建设各类业务专线20余条,同时使用公有云资源池并建立IPsecVPN虚拟专线。信息网络资源具有规模不大,但是种类较多且设备部署分散的特点。一直以来市县两级并未建设统一的信息网络监控系统,而“天镜”系统的通用型设计,又难以满足基层的本地化监控需求。对于市级信息网络保障人员而言,日常运维工作难度大,暴露出的问题主要包括:监控实效差、监控精准程度不够、处理不及时等。在此背景下,迫切需要对各类业务的日常监控及运维工作进行整合,通过技术手段减轻人工任务,优化运维流程。运维人员需要及时、准确地了解各类硬件设备和业务系统的运行状态指标,并进行可视化分析应用,通过提高日常运维技术含量,推动气象信息网络运维监控转向精细化、标准化、自动化方向发展。通过对目前国内外主流的IT监控技术进行了调研,对比分析了Zabbix、Prometheus、ELK、ManageEngine等监控系统的优缺点,其中Zabbix作为开源的企业级监控方案已经被全球广泛使用,具有开源免费、部署配置简单、监控及功能全面并具有非常强的扩展能力等特性[1],Zabbix监控体系在国内其他行业已经广泛使用[2],也完全适应和满足气象行业信息网络系统监控的需求。
Zabbix是一款企业级分布式监控系统,是一个开箱即用的成熟解决方案,具有各种完备的功能模块。Zabbix支持多种采集方式和采集客户端,有专用的Agent,也支持SNMP、IPMI、Telnet、Http等多种协议,它将采集到的数据存放到数据库中,然后对其进行分析整理,达到条件触发告警,并支持对告警数据的分析统计[3]。
Zabbix的通用架构是采用客户端/服务器端的模式,分布式架构采用客户端/代理端/服务器端模式。据Zabbix官方资料显示,单台服务器节点就可以支持上万台设备,所以根据实际被监控设备的数量,选择单节点服务器/客户端的模式。在实践过程中详细梳理了市、县两级气象部门需要监控的信息网络系统清单,根据不同设备及系统,选择合适的监控方式。各个被监控设备的状态数据将实时采集到Zabbix Server并存放在数据库中,利用Zabbix Web或者Grafana插件进行数据可视化应用,同时可以使用Zabbix API接口实现系统的二次开发应用,具体架构设计如图1所示。
图1 Zabbix监控架构图
Zabbix具有常见的商业监控软件所具备的功能,包括主机性能监控、网络设备性能监控、数据库性能监控等。在对监控系统进行实际部署及定制化后,针对气象行业信息网络监控需求,重点介绍以下几项具备代表性的功能。
(1)设备资产管理
对于市县两级气象业务系统架构而言,统一纳管各台站的业务系统主机是一大难点。通过平台自动化的数据采集,获取设备型号、管理IP、Mac地址等资产信息,作为运维过程中重要的资产数据提供给运维人员。
(2)设备运行状态实时监控
按照系统设计框架,为不同类型的设备配置相应的监控项后,则可以按照管理员的设置自动化巡检所有纳入监控的设备,获取主机中各类监控项的数据或状态,并且在数据异常时触动触发器并发送告警信息,实现故障问题快速定位,并形成结果报告,确保运维工作的闭环管理。
(3)异常告警及报警媒介
当主机监控项的数据满足所关联触发器的条件时,触发器被触发,然后通过报警媒介向关联的用户发送告警信息。在Zabbix中通过告警脚本的配置可以自定义相关告警内容,并及时发送到微信,让监控人员及时获取重要告警信息。
目前已经部署的西安气象信息网络监控系统,主要采用Agent、SNMP、脚本等方式对西安市气象核心通信网络设备、硬件服务器、虚拟化环境以及台站业务计算机等设备进行全面监控。系统建设过程中,积累了一些经验供相关人员参考。
核心网络通信设备的监控,包括防火墙、核心路由器、核心交换机等采用SNMP的方式[4],实现对设备端口状态、端口流量、CPU、负载等指标的监控。在该类设备的实际监控部署过程中,应当注意采用合适SNMP版本,同时为了提升安全性,应当避免使用默认的SNMP团体关键字、读写关键字。在Zabbix Sever中添加此类监控主机时,主要采用通用的交换机、路由器以及SNMP监控模板实现。需要注意的是模板中会产生大量的非必要监控项和触发器,应当结合实际业务需求,对监控项和触发器进行精简,避免大量的无用状态数据采集和无用告警。
硬件服务器及台站业务PC机,采用Zabbix-agent插件的方式监控[5]。部署过程中注意使用主动模式,请求Server获取监控项列表,并主动将监控项内所需检查的数据提交给ZabbixServer,有效降低Zabbix Server的IO压力。另外,使用主动模式监控,也为今后进一步研究针对业务系统的日志监控打好基础。
市局VMware虚拟化环境监控[6]为Vcenter配置相应监控项,使用Zabbix自带的VMware监控模板实现虚拟机自动发现和监控。
基于以上部署工作,基本完成了监控系统的框架搭建。美中不足的是Zabbix自带的图形化界面展示功能单一、UI设计简单。本项目中使用第三方插件Grafana来实现监控系统的可视化大屏设计。Grafana是开源的监控可视化工具[7],提供了非常丰富的图表样式,全面支持Zabbix数据源,其自带的各类图表样式能够很好的展示监控数据和各类指标数据。
合理利用Grafana中丰富的图表组件,结合运维人员的实际监控需求,设计灵活、实用的各种可视化监控大屏,结合Grafana自带的轮播系统,可以很好的展示各类监控指标数据。
该系统在西安市气象局部署应用期间,其系统集成的告警功能在日常运维监控工作中发挥了较大作用。以两次系统告警到故障解决的具体事件为例。事件1:核心交换机某固定端口在某一时期经常出现状态UP/DOWN的告警,运维人员现场检查发现是交换机该端口连接的服务器网线接触不良,提前发现并排除了可能因主机网络连接不稳定而影响业务系统正常运行的隐患。事件2:某核心业务服务器持续告警“Memory used too high (used>90%)”,并且没有自动恢复,表明该服务器内存占用持续过高,运维人员初步判断该服务后台应用占用资源异常。及时通知该业务系统负责人进行检查,发现确实存在因业务应用程序bug造成的资源占用异常,开发人员立即对该程序bug进行修复,避免了业务中断的风险。
西安气象信息网络监控系统是基于Zabbix和Grafana的结合应用,将市级气象部门日常运维监控工作从传统模式转向一体化、集约化、智能化和可视化,降低运维监控难度和风险,初步达到了提升监控能力和效率的目的。后期将在此监控系统架构基础上,进一步根据气象探测设备、终端的特点,利用该系统实现气象探测设备的监控覆盖,逐步建立一套面向气象行业的,具有参考价值的信息网络系统监控体系。Zabbix开源监控系统自身也在不断更新迭代,有必要对该系统进行更深入的研究和更广泛的应用,其收集的海量信息网络系统状态数据,不仅可以帮助气象行业从传统运维向智能化运维转变,更有可能成为行业数字化转型的重要研究依据。