谭海波,汪 华,金石声,李 珏,白铁男,唐维尧
(贵州省气象信息中心,贵州 贵阳 550002)
气象观测是气象工作的基础,是预报精细、服务精准的支柱,是气象防灾减灾第一道防线的前哨。贵州省现阶段各类地面气象观测站(简称区域站)共计3 500个左右,站点布局密度大,数据时效要求高,是全省最重要的气象观测数据之一,如何保障区域站数据及时、高效传输是运维监控工作中急需解决的问题。
目前省级区域站业务工作流程涉及多个环节,包括互联网入口、桥接器、地面气象观测管理系统(SMOS)、气象数据处理与分发系统(CTS)、数据解码质控(DPC)、“天擎”数据库入库、气象数据服务接口(MUSIC)等,各个监控环节分散且不连续,出现问题不能及时定位,很难满足实时业务对监控的需求。目前的监控系统覆盖面不够,灵活性和扩展性不强,无法紧跟业务系统的快速升级换代。因此,为解决实际问题,提升区域站数据监控水平,补充分钟级资料监控和告警,弥补现有监控系统颗粒级不足的问题,在省级通过建立工作流的模式[1],基于Zabbix集群监控技术,利用其开源化、可扩展、可定制的优势,通过研究将省级区域站全流程传输分节点建立监控指标,为区域站业务提供基于工作流的监控视角,从而实现全流程无缝隙的精细化监控,是复杂业务逻辑故障定制化监控的最佳实践。
监测是业务正常开展的基础,是发现业务错误和性能问题的主要手段,现在主流的技术有面向SaaS的Wgcloud、面向网络监控的Nagios等[2],其中Zabbix作为能够监控各类网络参数、服务器健康性和数据传输完整性的基础平台,具备灵活的通知机制,支持基于Web的查询和配置,平台兼容性强,应用范围广。同时在省级应用过程中单机系统不能满足对海量数据监控分析的需求,因此搭建基于高可用性的Zabbix集群,建立多个数据库、服务器、前端节点和监控代理,Zabbix集群架构如图1所示。
图1 Zabbix集群架构Fig.1 Zabbix cluster architecture
在监控系统安全和数据传输安全防护方面,通过设置Zabbix集群安全访问策略,建立远程访问地址白名单,配置TCP10050、3306等业务端口访问权限,在安全设备上配置Zabbix集群安全加固配置,屏蔽不安全端口;针对不同行业用户配置访问控制策略,在满足用户资源访问需求上设置最小访问权限,确保网络访问安全。
根据业务运行需求,全面梳理区域站数据传输关键点,通过对全流程传输环境中的关键信息进行提取,对业务流程中可以直接反应故障的表象进行定制开发和配置,从而实现精细化监控。对数据传输中的链路状态、网络设备、业务收发、入库解码、数据服务按需定制,部署采集模块,通过监控项配置、触发器告警模块和可视化展示模块构成区域站全流程监控系统[3],监控系统的结构如图2所示。
图2 区域站全流程监控系统结构图Fig.2 The structure diagram of the whole process monitoring system of the regional station
Zabbix通过Server、Proxy 和 Agents 来执行数据采集,支持 SNMP、SSH、IPMI、JMX、数据库监控等协议,采集主动轮询和被动捕获关键数据[4]。其中汇聚和接入网络设备通过SNMP和简单检查协议获取数据传输的端口状态、数据传输流量等监控信息;桥接器、SMOS、CTS等通过安装Zabbix Agent、SSH等方式收集监控信息;“天擎”缓存库、实时库以及MUSIC服务端口通过SSH协议执行开发脚本,获取区域站存储和服务数量;SMOS中心站数量通过ODBC获取,从而实现对区域站关键节点监控信息的采集。区域站网络接入、桥接器和信息入库等数据采集界面如图3所示。
图3 数据采集展示页面Fig.3 Data collection display page
监控项配置中将每个采集数据的监控项创建为主机,主机是区域站数据全流程监控的载体,网络设备、终端、服务器都设置为一台主机,对主机地址和端口进行配置,在此基础上设计监控项模块,监控项类型和键值配置如表1所示。SNMP代理类型需要设置SNMPV2协议,配置161端口和宏变量公共名{MYMSNMP_COMMUNITY},通过获取网络设备的对象标识符(OID)和管理信息基础(MIB)数据得到端口状态,使用Snmpwalk命令检索所需端口,按需监控网络设备传输端口UP或DOWN状态;“天擎”缓冲库和实时库入库数量通过部署python脚本,连接虚谷数据库,获取缓冲库和实时库中SURF_WEA_CHN_MUL_MIN_TAB表中区域站入库数量,通过SSH命令定时启动脚本进行区域站入库监控;SMOS中心站接收数量通过定义开放数据库连接(ODBC),配置ODBC访问SQLSERVER数据库驱动,创建查询SMOS数据库DYNC_AWS_INFO表中区域站接收数量脚本;CTS接收SMOS中心站区域站数量通过配置Zabbix数据库配置文件,创建CTS数据库TB_RCV_FILE表中区域站数量脚本,CTS发送给天擎的区域站数量通过开发CTS数据库TB_SEND_FILE表中脚本获取。
表1 监控项类型和键值配置Tab.1 Monitoring item type and key value configuration
告警根据业务需求进行设计,通过主机和监控项量化监控要求,实现问题自动检测和发现,具体的实现方式是通过last()函数和diff()函数获取监控项数据最近的值,last()获得监控项最近1次数据,diff()获得监控项最后1个数值和前1个数值之间的差异,建立灵活可配置的监控指标阈值,一旦低于阈值将触发告警,区域站数据主要监控项触发告警脚本如表2所示,告警信息通过Web页面进行显示,网络接入告警监控Web页面如图4所示。
表2 主要监控项触发告警脚本Tab.2 The main monitoring items trigger the alarm script
图4 区域站网络接入告警监控图Fig.4 Regional station network access alarm monitoring diagram
开发和设计网络拓扑图,配置地图元素和定义宏,将区域站数据全流程各个环节的监控项和触发器脚本编辑在一张图上,在各个设备上配置状态信息,设备与设备之间定义标签,配置链路状态和区域站收发数量,显示区域站数据全流程可视化动态图。如图5所示。
图5 贵州省地面气象观测站数据全流程监控一张图Fig.5 A picture of the whole process monitoring of the regional station
通过梳理并监控区域站数据的传输过程,较好地弥补了现有监控系统的不足,在汛期气象业务服务中获得良好应用效果。区域站数据的采集实现分钟级的故障发现并能准确定位,大大减轻监控运维压力,提升全省关键资料传输质量。在贵州省业务应用实践中总结有以下几个方面的经验:
①基于工作流构建监控体系消除了不同设备和系统之间的监控盲点,将不同系统的监控关键点统一到一个平台,减少监控系统之间的交互接口,成为解决业务监控中故障定位复杂性和监控指标多样性的有效方法。
②在监控体系的构建中要摒除大而全的监控思路,以抓住关键点和关键指标为核心,通过研发特色采集脚本从海量监控信息中进行筛选,实现在工作流的控制下开展监控事件的快速展现和告警。