王宝云 卢兴来 黄晓龙 陈昊
(1 浙江省台州市气象局, 台州 318000; 2 浙江省气象局大气探测保障中心, 杭州 310000)
天气雷达是探测降水系统的主要手段,是对强对流天气(冰雹、大风、龙卷和暴洪)进行监测和预警的主要工具之一,雷达系统正常运行对气象工作意义重大。中国气象局“新一代天气雷达建设业务软件系统开发及应用项目”,简称“雷达业务软件工程项目”或ROSE(Radar Operational Software Engineering),由中国气象局气象探测中心牵头,于2011—2016年开展并完成了项目二期建设[1]。2020年9月起在全国范围陆续开展试运行工作,12月1日正式单轨运行。ROSE项目的实施为我国新一代天气雷达业务软件的国产化奠定了良好的基础。同过去类似,ROSE雷达用户系统部分主要由RDA(雷达数据获取单元)、RPG(雷达产品生成单元)、PUP(雷达产品显示单元)3部分组成。对于地市台站来说,如何利用现代化监控技术手段,将ROSE系统及其相关业务纳入监控全流程,成为一项紧迫而具有现实意义的工作。
Zabbix是由Alexei Vladishev开发、Zabbix SIA积极更新维护的系统监控以及网络管理服务的企业级解决方案[2],1.0版诞生于2004年,至今其监控方案被全球多家企业采用。作为一套C语言编写、遵循GPLV2的开源软件,Zabbix有着性能优良、扩展性好、具备可视化集中展示、支持自动发现设备等众多优良特性。Zabbix支持绝大多数平台的可用性和性能检查;同时,支持SNMP、IPMI、JMX以及VMware的监控。相较于Nagios、Cacti、Zenoss Core、NetXMS等使用最为广泛的开源监控系统,Zabbix无论在代码成熟度、源代码质量、系统架构,还是用户友好性、面向对象编程理念等方面都具有相当优势[3]。目前,Zabbix在IT、金融、通信、航天等领域被广泛采用[4-5],满足各种复杂条件下的监控需求。
国内气象业务的监控一直采用综合气象观测系统运行监控平台(ASOM)[6]。ASOM 2010年建成,以J2EE技术为核心,引入了大量如中间件、报表服务、XML(可扩展标记语言)和GIS(地理信息系统)等当时较为先进的技术,通过B/S、C/S相结合的方式构建了气象观测监控与保障国省地三级平台。然而也存在一些美中不足,对国、省两级支持较完善,而台站级缺乏相应设备接入、报警等本地化接口等。目前,ASOM正积极向第2代综合气象观测业务运行平台(天元)过渡,其配套系统“天镜”也在国省积极部署。省级以下专业化的气象综合观测与信息网络监控解决方案中,较为成熟的仍然以基于B/S模式的前后台架构为主。采用的主流数据库语言有SQL Server、MySQL、Access,服务端的环境有ASP、PHP、JSP[7]。但平台部署工作量较大,难度仍相对较高。近来虽然Python等一些当下流行的语言和框架被采用[8],但仍然缺乏一套高效而专业的解决方案。目前,Zabbix在国内气象信息监控领域应用相对较少[9]。本文通过Zabbix的部署和配置,实现对新一代天气雷达ROSE系统,台站业务全流程监控,提高保障工作效率,使雷达产品更好地应用到业务和服务中。
台站级新一代天气雷达需要监控的对象主要分两大类。一类和雷达正常运行有关[10-11],主要有雷达状态[12-15]、动力环境[16-17]等。技术升级和技术标准统一后的台站配有标准输出控制器,通过该组件,实现了集雷达性能监测分析和附属设备动力环境监测报警功能于一体。另一类监控需求和雷达数据和产品传输有关,过去十多年来,国内业务人员开发了大量实用监控软件,发挥了较好效果[16-19]。随着ROSE系统全面升级为Linux环境和流传输作为新的基数据传输方案,台站级监控软件也亟需升级调整,但ROSE系统建设本身未开发配套的运行监控系统。甄廷忠基于C#语言和.NET4.0环境实现了CC雷达的流传输监控[20],但仅限安徽四创型号雷达及软件;励臣儒基于Python实现了宁波SA双偏振雷达运行状态、网络状况以及动力环境的软件监控[8],但仍然未集成对主机、运行程序与流传输的监控。考虑到目前缺乏对ROSE平台等系统监控接入的现状,开发对Linux环境下SA雷达的软件运行、主机状态、流传输与基数据本地备份等业务的台站级ROSE监控是有意义的。
台站级天气雷达ROSE监控平台的主要设计目标是监控雷达流传输、状态日志上传、数据本地备份情况、网络连接状态、以及ROSE系统中各类主机的软硬件资源[4]。其中硬件资源包括主机的CPU利用率、内存和硬盘使用率,软件资源包括RDA、ROSE RPG等服务运行情况。通过将这些状态采集并集中管理,以图形化的形式展示给业务人员,并对不同种类的监控对象设置报警阈和报警通知,使台站保障人员能先于上级部门第一时间发现ROSE系统运行中产生的问题,进一步提高雷达数据传输率、保障产品的更好使用。具体需求见表1。
表1 台站ROSE系统监控需求
ROSE监控平台设计原则:成熟性和先进性相结合,即开发框架需既稳定成熟、又能满足各类状态指标监控的功能性需求;低干扰性与安全性相结合,由于流传输在RDASC软件上进行,RDA主机直接控制雷达的运行状态,因此监控系统的部署必须在不影响现有业务软件功能和正常运行的基础上建立,同时又必须考虑整个雷达系统运行的安全性。
Zabbix[5,21-23]主要由Zabbix服务器、数据库服务器、Web服务器、代理(Proxy)服务器等组成(图1),Zabbix agent(Zabbix监控代理)部署在被监控目标上,用于主动监控本地资源和应用程序。Zabbix Server(Zabbix服务组件)是Zabbix软件的核心组件,agent 向其报告可用性、系统完整性信息和统计信息。 所有配置信息以及 Zabbix 采集到的数据都被存储在数据库中。Web界面是Zabbix Server 的一部分,通常(但不一定)和 Zabbix Server 运行在同一台物理机器上。Zabbix proxy(Zabbix代理服务器)在Zabbix的部署是可选部分,proxy的部署可以分担单个Zabbix Server的负载。
图1 Zabbix组织架构
Zabbix的监控流程如图2所示。其中,主机即被监控的设备,监控项来源于被监控的主机,触发器可以看作是一个控制中心,触发器会设定一个条件,当监控项中接收到的数据达到触发器设定的条件时,触发器便会执行相应的动作(如邮件报警)。
图2 Zabbix监控流程
整个ROSE监控平台的信息采集、监控和报警主要基于Zabbix系统来实现。Zabbix对硬件资源的要求较低。例如在官方推荐配置中,双核2 GB内存便可监控500台左右的主机,几GB空间便可存放足够长时间的历史监控数据。如果只考虑台站级监控,则无需部署Zabbix Proxy代理服务器。由于监控目标对象相对较少,可将Zabbix服务组件、数据库和Web服务器的内容部署在同一台服务器上。对于主机参数监控,采用被动模式,而对于流传输和数据存档,采用主动模式监控。整个Zabbix监控平台的开发主要由环境部署、主机配置、模板配置、告警模块配置、日志分析与评估等步骤组成。考虑到ROSE系统网络运行环境监控的需要,整个监控架构分为省级、ROSE平台、本局服务器3层。整个系统的总体框架如图3所示。
图3 新一代天气雷达ROSE监控系统总体框架
在台州新一代天气雷达ROSE系统监控平台中,Zabbix Server端部署在Vmware虚拟机中,资源分配为双线程2 GB内存[24-25]。Zabbix Server端的部署[3,24]基于LAMP(Linux、Apache、MySql、PHP)或LNMP环境。对于4.0版本的Zabbix,对应MySql版本要求为5.0.3-8.0.x,Apache版本要求为1.3.12或以上,PHP版本要求为5.4.0或以上。前端和Server端所要求的软件和库见表2,外网环境下均可通过yum命令一键安装。
表2 Zabbix前端和Server端软件环境和依赖库
从源代码安装Zabbix主要分为安装Zabbix守护进程和安装ZabbixWeb界面两步。具体步骤和注意事项可参考官方文档,此处不进一步展开。需要注意的是RDA主机为内网环境,且有雷达控制端运行。所幸agent端部署无需其他依赖。且对应系统版本(rhel5.4或centos6.10)在官网有相应rpm包,无须下载源码包重新编译。
2.2.1 配置主机
Zabbix中的主机(Host)是一个需要监控的网络实体的抽象[2]。它可以是一台物理服务器,一个网络交换机,一个虚拟机或者一些应用。在ROSE的整个监控系统中,一些省级服务器如流传输服务器或FTP补传服务器虽然无法直接部署Zabbix客户端,但仍然可以作为主机添加进来,并添加监控项(如通过ICMP监控主机连接状态)。
2.2.2 配置监控项和触发器
监控项是Zabbix中获得数据的基础。完成了监控项定义后可以在最新数据处查看监控项最新获取的数据结果。监控项只是用于收集数据。如果需要自动评估收到的数据,我们则需要定义触发器(Trigger)。配置一个触发器所必填的项目为名称和表达式。可以在监控→问题中查看配置完的触发器的触发状态。如果表达式值超过了触发器定义阈值,则这个问题将会显示在问题列表中。
2.2.3 配置模板
对于一些常规的监控项目,如主机性能、网络连接状况,可以通过添加模板(Templates)的形式来完成。Zabbix提供了丰富的日常主机及网络设备监控所需要的模板。一组预先定义好的检查会被快速应用到主机上。当一个模版链接到一个主机后,主机会继承这个模版中的所有对象。创建一个模板的步骤为:输入模板名称→选择所属的组→添加监控项和触发器以满足特定需求。
流传输与补传、基数据以及产品存档的监控与报警可通过自定义监控项、触发器以及模板来实现。
升级敏视达RDASC软件,SA雷达基数据通过软件内置的流传输功能直接上传,并在软件界面中以图形界面的形式增加了对流传输状态的监控。但是如果需要在台站端实现基数据流传输失败报警,则需要通过接口来完成。监控软件在/opt/rda/log中以日志形式记录每个体扫基数据文件的落地、传输和数据补传情况。日志每天生成,命令格式为YYYYMMDD_Bst.log,字母依次为年、月、日。日志每行用“|”分割,内容依次为文件名、流水号、传输状态(S成功,P补传成功,N未传输)和时间以及文件大小(单位字节)。需要注意的是如果雷达未产生基数据,则BST日志无记录产生。而雷达故障停机、RDASC程序异常、雷达维护停机都不生成基数据。前两种情况可以分别通过台站现有报警手段和构造Zabbix应用程序监控项来完成监控。当有基数据生成而网络连接异常时,也会造成流传输失败,这种情况也可以通过Zabbix ICMP协议来监控。因此,雷达流传输报警和其它问题报警存在着一定的依赖关系。Zabbix提供了基于依赖关系的触发器配置。通过配置依赖关系,Zabbix将不执行依赖触发器的动作,如报警。这将避免收到重复的报警通知。雷达监控报警流程如图4所示。
图4 雷达系统监控报警流程
Zabbix对流传输日志文件写入的监控可以通过构造logrt函数的监控项来完成,与log函数不同,logrt函数支持以轮询的方式监控日志文件,这样就克服了追踪流传输日志时文件名随日期变化的困难。Logrt函数的具体形式为:
logrt[file_regexp,
中括号内的参数依次为文件名、匹配内容、编码标识符、最大采集数(行每秒)、可选模式、输出格式模板与最大延迟。这样,正常情况下6 min将采集到1行日志。
对日志中S(上传成功)、P(补传成功)、N(未传输)的抓取可以通过构造count函数触发器来实现,其具体形式为:
count (sec|#num,
括号内依次为评估周期、是否正则匹配、可选操作符以及时间偏移量。这样,如果6 min内未采集到成功上传(S)的状态日志,则该触发器触发报警。对于流传输补传、基数据与产品存档的监控与此类似,在此不重复介绍。
Zabbix内置了丰富的报警接口,如短信、邮箱、Telegram以及大量第三方Webhook。对于邮件报警,只需提供SMTP服务器名、HELO名、邮箱名等,最后在动作(Action)中配置邮件标题及消息内容即可实现。
仪表盘是监控信息的汇总。方便快速总览当前全局监控状态。仪表板是由多个小模块组成,可以有系统信息、服务器信息、拓扑图、摘要、告警项、图形、时钟等模块进行组合展示。在仪表板中间部分,直观地展示了系统中可用主机、不可用主机、未知主机的数量和报警情况。在仪表板编辑模式下可以添加和编辑窗口模块。 编辑完成后即可在仪表板查看模式下展示窗口模块(图5)。
图5 新一代天气雷达ROSE系统监控平台仪表板
Zabbix Network Map(Zabbix拓扑图)可以快速定位故障位置,直观、动态地了解整个网络系统及各分系统的运行状态,通过点击还可以进一步判断故障的影响情况。图6是新一代天气雷达ROSE监控的网络拓扑图,通过该图可以一目了然的知道ROSE系统各组件的运行状态和到省局及本地服务器的网络连接情况。拓扑图预留了雷达主机及其到RDA主机的连接,为今后可能需要的集成监控做了准备。
图6 新一代天气雷达ROSE系统监控平台拓扑关系
通过对Zabbix监控数据存储、将数据进行筛选、处理后,既可以通过多个图形展示每一个节点主机的运行情况,也可以将系统中多个节点在一张图中显示。图7是ROSE系统中RDA、ROSE RPG以及Zabbix Server监控主机CPU利用率层积图、内存使用率折线图、磁盘使用空间3D饼图、网络延迟情况的时间散点图。将它们和拓扑图一起部署添加到Zabbix的聚合图形中,便可在1个页面中直观监视ROSE系统运行状况,以便系统出现异常时及时采取措施。
图7 新一代天气雷达ROSE系统监控平台监控展示
为检验新一代雷达ROSE监控平台的实用性,着重对平台的报警功能进行系统测试。为了模拟实际网络故障导致日志无法上传,关闭与浙江省探测中心上传状态监控的服务器连接端口。1 min后Zabbix监控仪表板上出现了问题告警。同时邮箱中也出现了浙江省探测服务器网络中断的告警邮件(图8),证明了邮件报警功能模块的正常。
图8 新一代天气雷达ROSE系统监控平台邮件报警
基于Zabbix的ROSE系统监控平台自2020年11月初上线。试运行期间平台运行情况良好。图9是平台试运行期间的可用性评估。图9a显示11月16—17日期间流传输日志监控出现过短暂报警,主机可用性为91.66%。事实上这几日刚好在进行监控项和报警的测试和调整,符合实际情况。图9b显示11月的前两周时间同步发生了报警(系统主机RPG与Zabbix服务器时间差超过60 s),此时间段内的主机可用性为80.91%,之后监控的RPG与时间服务器的恢复情况与实际一致。
图9 2020年新一代天气雷达ROSE系统试运行期间可用性统计:(a)流传输日志监控,(b)系统主机RGP与Zabbix服务器时间同步运行情况
流传输和ROSE软件升级后,开发一套成熟稳定的监控平台保障系统和数据传输正常对台站而言有重要意义。本文尝试通过Zabbix的部署和配置,解决了SA雷达适合Linux环境的软件运行、主机监控、流传输与备份监控等目前台站级ROSE监控中的关键技术问题,实现对台站级新一代天气雷达ROSE系统台站业务全流程监控。
考虑到ROSE系统网络运行环境监控的需要,整个监控架构分为省级、ROSE平台、本局服务器3层。考虑到主机较少,Zabbix服务端和数据库部署在同一虚拟机上。Zabbix模板配置功能强大,对于一些常规的监控项目,如主机性能、网络连接状况,可以通过添加模板(Templates)的形式来完成。而对于流传输的监控和报警实现,则通过构造轮询函数logrt的监控项和关联触发器函数count来实现的。整个监控平台有着功能丰富的前端界面,直观展示ROSE系统运行状况。系统测试表明,Zabbix邮件报警模块功能正常,试运行期间监控平台运行稳定,ROSE系统可用性评估和实际情况相符。
今后的工作将根据实际情况继续接入其它需要监控的模块,完善系统账户配置,丰富其它报警手段。