铁路95306运行监控系统设计与实现

2023-11-27 08:04王端庄
铁路计算机应用 2023年10期
关键词:日志运维铁路

王端庄,霍 星,刘 洋,陆 垚

(中国铁道科学研究院集团有限公司 电子计算技术研究所,北京 100081)

中国铁路95306货运电子商务系统(简称:铁路95306)旨在为客户提供高效便捷的全方位货运服务,为铁路货运需求受理及营销管理提供基本前提。铁路95306在提升客户服务质量、降低社会物流成本、增强铁路货运竞争力、推动铁路货运市场化改革及促进铁路货运又好又快发展等方面发挥着重要作用。因此,实时监控铁路95306运行状态,及时发现和解决其运行风险和问题,保障铁路95306稳定运行,从而确保货运业务的连续性,对铁路货运意义重大[1]。

本文基于铁路95306日常运行维护(简称:运维)监控需求,从业务应用的视角设计铁路95306运行监控系统(简称:运行监控系统),及时、准确、全面地反映铁路95306的运行状况,为铁路95306的运维工作提供有力技术支撑。

1 运行监控系统总体架构

运行监控系统采用模块化分层设计思想,围绕不同监控目的,设计集中探测、日志采集、数据接入等监控源数据采集组件;根据监控数据的不同存储、使用需要,设计多元化数据存储结构;围绕运行监控业务目标[2],构建微服务应用功能集群。运行监控系统总体架构如图1所示。

1.1 采集层

基于不同采集手段设计相应的功能组件,实现对铁路95306运行数据、关键日志数据、网络流量数据等监控源数据的采集。

1.2 数据层

采用多种存储技术手段(包括数据转换、数据聚合、数据观测分析等),实现对监控源数据的存储和处理。

1.3 应用层

采用微服务技术框架,搭建服务网关,提供统一的访问服务和接入认证,实现监控告警、运维处置、基础管理等各类业务功能,满足铁路95306日常运行监控需要。同时,应用缓存技术提高运行监控系统整体性能。

1.4 展现层

采用Vue、ECharts等技术框架,结合Grafana等可视化工具向用户提供可视化界面,包括各类仪表盘、图表及报告等。

2 运行监控系统功能设计

运行监控系统针对铁路95306架构特点,以全面、准确反映铁路95306运行情况、及时发现其隐患并提高运维效率为目标进行功能设计,提供铁路95306各节点运行状态、访问流量、处理性能、核心业务及双活运行等监控能力,实现铁路95306故障和风险的及时告警、预警功能,提升铁路95306应用程序、配置的更新管理和相关故障自动处理能力。运行监控系统功能设计如图2所示。

图2 运行监控系统功能

2.1 监控中心

2.1.1 运行状态监控

提供对铁路95306业务微服务、技术中间件、后台任务、平台即服务(PaaS,Platform as a Service)平台及关键外部依赖服务等健康状态的实时探测监控;提供对铁路95306内/外网数据传输通道可用性的实时监测;提供对上下游系统关键数据共享情况(包括待共享量、积压量等)的实时监测。

2.1.2 访问流量监控

提供铁路95306访问量、独立访客量的监控功能;提供对铁路95306各应用模块、各微服务单位时间内请求流量的实时监控功能;提供按应用模块、统一资源定位器(URL,Uniform Resource Locator)等不同粒度对铁路95306请求量、访问客户端、响应时间等的监控分析能力;支持按照内、外部用户等不同用户类型,PC端、移动端等不同渠道进行多维度的流量监控分析,实现访问流量的全链路跟踪;提供慢响应、错误响应、恶意访问等异常流量的甄别分析和监控功能。

2.1.3 处理性能监控

提供铁路95306网站及移动端关键页面加载时间、关键功能响应时间的监控功能;提供铁路95306后台任务执行时间的统计和效率分析,实现铁路95306相关慢结构化查询语言数据库(SQL,Structured Query Language server database)的监控统计;提供铁路95306文件等数据可用存储空间的监控;提供对铁路95306运行日志的统计分析能力,实现基于分析结果发掘、提示系统潜在风险的功能。

2.1.4 核心业务监控

提供铁路95306核心业务运行情况的监控和预警功能,及时反映铁路货运全流程业务运行服务状况;提供铁路95306阶段运输需求、日运输需求、订箱等关键业务提报笔数的实时监控功能;提供单位时间内运单受理及货物装、发、到、卸、交付等数据量的监控功能;提供系统签名、签章及登录次数等常用服务使用量的监控功能。

2.1.5 双活运行监控

配套铁路95306双活机制,实现铁路95306双活运行监控;提供铁路95306双中心流量分布及走向的监控功能;提供铁路95306运行所需要的结构化数据、文件数据等在两中心差异情况下的比对监测功能等。

2.2 告警中心

基于监控数据,提供对铁路95306运行状态、系统访问流量、系统处理性能、核心业务及双活运行等方面各类异常情况的实时告警通知功能;支持对单一事件、多类关联事件及长期持续事件等复杂场景下形成的异常问题或风险进行告警的能力;提供各类告警阈值条件的分项设置和查询功能;提供相关告警信息模板内容的编辑维护功能;提供各类应用相关责任人信息的维护管理功能;实现基于短信、邮件及系统通知等方式向相应责任人推送告警信息的功能。

2.3 运维处置中心

基于铁路95306日常运维需要,提供相关应用程序集群的一键部署和启停管理功能,实现相关系统运行配置信息的调整发布,实现双中心应用部署和配置信息的协同管理。

配套铁路95306双中心流量路由机制,提供铁路95306双中心流量的一键调配和切换管理功能,为铁路95306单中心故障的应急处置提供有效技术保障手段。

2.4 基础管理

基于铁路95306用户体系,提供相关服务的权限控制管理功能;提供所有监控对象的信息查询和维护管理功能;基于标准服务和探测机制实现监控数据的采集汇聚;提供对监控数据分析处理任务的统一配置管理功能。

3 关键技术

铁路95306部署运行涉及的中间件种类繁杂,整体部署节点近千个,且不同模块部署模式差异性大;此外,铁路95306提供网站、移动端及微信服务等多种接入渠道,服务接入层级多,流量链路长且与上下游系统的对接交互关系复杂。为充分应对和解决以上难点,本文采用集中探测、日志收集、数据接入、数据存储、告警通知、运维处置及前端展现等技术,实现铁路95306近千个服务节点健康状态的实时监测和告警。

3.1 集中探测

基于运行监控系统总体架构对铁路95306服务节点、部署单元进行全面梳理,形成服务节点清单,完成服务节点的编号、探测信息配置等,构建运行监控系统的集中探测模块,实现对铁路95306各类设备设施及业务的实时监测。

集中探测模块采用集群模式进行部署,同时,基于Redis建立集中化、原子性的序列分配机制,各探测服务程序节点运行过程中动态获取序列,根据序列值从服务节点清单获取待探测节点的信息(服务节点编号=序列值mod服务节点清单长度),通过服务节点配置的探测方式及其他探测信息,动态调用相应的探测方法,完成该节点的运行状况探测,并记录探测结果信息。基于该探测机制,对既有系统基本没有侵入性,且探测服务应用具有很好的线性扩展能力[3],简单增加集群数量即可显著提升探测效率。集中探测模块实现逻辑如图3所示。

图3 集中探测模块实现逻辑

针对铁路95306各场景的探测方式选择如下。

(1)业务应用:均采用HTTP方式调用业务应用专门的监控监测接口或能反映其运行状态的其他服务接口进行探测。

(2)中间件:根据中间件类型采用HTTP或集成其连接客户端方式实现可连接性、可用性的探测,或基于Telnet方式简单探测其存活性。

(3)专项设备:对于铁路95306中部署的外系统前置服务器及相关安全设备,采用Ping、Telnet方式实现其存活性的探测[4]。

(4)PaaS平台、大数据平台等复杂软件:集成相应软件开发工具包(SDK, Software Development Kit)实现对其核心组件运行状态及可用性的探测。

(5)核心业务数据:铁路95306中核心业务数据均采用关系型数据库进行存储,通过简单SQL语句实现对核心业务数据变化量的探测。

3.2 日志收集

铁路95306基于Nginx中间件,结合NJS(Nginx JavaScript)构建流量路由管控模块,承载铁路95306内、外网访问流量的接入和路由,实现双中心流量的转发控制,该模块运行日志的收集是分析铁路95306整个访问流量、双中心流量等的重要前提和手段;另外,铁路95306内、外网均结合三方工具或组件构建部署了关键的应用模块(如安全平台代理程序、电子签章软件等),其运行日志同样对铁路95306整体运行状况的监控和分析起到重要作用,但尚未纳入铁路95306日志归集平台。运行监控系统需要通过在目标服务器部署代理程序的方式实现对该部分日志的实时收集[5]。日志收集模块实现逻辑如图4所示。

图4 日志收集模块实现逻辑

日志收集程序基于Spring框架条件配置原理,在程序启动阶段自动识别所部署的网络环境、服务器环境,实现采集日志类型、文件位置、数据接入通道路径等配置信息的配套创建和加载,解决代理程序部署环境差异带来的影响,实现一次打包即可在各类环境部署,便捷化程序本身的运维管理。

同时,日志收集程序实现日志文件的按行高效读取,在服务器本地准实时地记录日志读取位置,支持程序中断重启后对日志文件的接续读取。根据铁路95306相关应用的标准化日志输出格式,在日志收集程序中实现对日志的按行解析、结构化转化和少量简单的扩展处理,为后续日志信息的多维度监控、分析提供前提保障。

3.3 数据接入

运行监控系统数据接入模块按照接收、缓冲和消费分层进行设计。

(1)数据接收层:为数据源采集程序提供高效的API接口,实现监控数据的接收,并在数据写入缓冲层后立即进行响应,保障采集程序传递数据的效率。

(2)数据缓冲层:通过消息队列实现,为接收层提供高效的写入性能,实现数据采集和数据存储之间的解耦;同时,为监控数据的数据库写入提供缓冲作用。

(3)数据消费层:提供可线性扩展的数据消费能力,完成缓冲层数据向数据库的推送写入,并根据需要在数据消费过程中完成数据的转换、包装;提供数据观测过滤机制,便于集成告警通知等程序完成对监控数据的实时观测、识别和过滤。

3.4 数据存储

运行监控系统采用MongoDB数据库的固定集合存储各类运行日志[6]、探测结果信息等时序数据。对每一类日志采用独立的集合进行存储,结合日志量和留存周期设置合适的集合大小。基于MongoDB固定集合机制,实现监控过程中时序数据的高效插入和读取,同时避免了历史数据的定期处理等问题;基于MongoDB副本集等特性,保障监控数据的高可用性和易扩展性。

运行监控系统采用PostgreSQL存储各类聚合分析结果及其他运行监控相关关系型数据,构建监控数据聚合处理任务,实现对监控数据的准实时聚合分析,并将分析结果进行存储,使监控数据更加直观、立体、易用,同时弥补了序列化数据存储周期较短的问题。

3.5 告警通知

运行监控系统自定义研发系统异常发现规则,采用观测器的形式进行封装,通过在监控数据采集、数据分析环节集成,实现对服务节点探测信息、日志聚合分析信息的观测和识别,基于异常发现规则及时捕捉系统异常发生、恢复等情况。告警通知模块为各类告警源提供统一的告警信息接入应用程序接口(API,Application Programming Interface)基于Spring框架Event信息传递机制,实现松耦合、易扩展的告警、通知处理流程[7]。告警通知模块实现逻辑如图5所示。

图5 告警通知模块实现逻辑

(1)告警信息标准化:对多种类型的告警信息按照告警级别、业务类型、告警对象等进行格式化分类处理,并按照标准形式发布告警事件。

(2)告警处理引擎:监听并接收告警事件,通过告警规则匹配、聚合告警信息,实现多类告警信息的联合处理,生成最终向用户展现的告警内容;同时,结合通知规则生成通知信息,按照标准形式发布通知事件。

(3)通知服务:监听并接收通知事件,针对系统通知、短信、邮件及三方接口等多种通知方式注册不同类型的事件监听器,根据通知规则完成相应方式的告警通知。

3.6 运维处置

通过运维处置模块实现所纳管应用程序部署信息的管理,采用专门的服务器部署运维处置模块程序,实现其与纳管应用服务器之间的SSH(Secure SHell)端口连通;基于Linux远程拷贝命令实现程序包、配置信息等文件向对应服务器的分发功能;结合日常运维工作经验,在相应服务器中预置相关的管理脚本,通过运维处置模块程序远程调用相关Shell脚本实现相关应用的统一管理[8]。

通过预置相关故障应对处理规则,基于运行监控结果,设计对相关系统故障的自动处理机制(如基于服务节点探测结果,持续一定时间内探测发现运行异常时,自动对该节点进行重启操作),一定程度补强铁路95306的故障自愈能力。

3.7 前端展现

采用Vue、ECharts等技术框架结合Grafana等可视化工具进行前端展现界面的构建。

按照铁路95306统一界面风格进行运行监控系统相关管理、交互类界面的研发,采用iframe方式嵌入Grafana相关监控面板;在Grafane中配置监控数据源,基于配置方式高效实现美观、丰富的监控展现界面,简化前端开发工作量。

使用Nginx进行前端静态资源的部署和Grafana界面的代理访问,同时关闭Grafana自身的认证机制,依赖铁路95306认证服务实现对Grafana监控面板的访问认证,从而实现运行监控系统与铁路95306用户体系、鉴权认证机制等的融合。

4 系统应用

本文设计的运行监控系统部分功能已应用于铁路95306生产运维实践中,证明了系统在实际运用中的有效性和可靠性。

运行监控系统采用直观的可视化效果和音频效果提供了相关内容的监控告警功能,包括提供铁路95306近千个服务节点健康状态的实时监测和告警,且可在1 min内完成所有服务节点的探测;提供铁路货运阶段运输需求、日运输需求及运单等信息向后置生产作业系统共享情况的实时监控;实现不同网络环境下近百个应用节点运行日志的收集,目前,日志收集延时可达到5 s以内。

运行监控系统为一线运维及监控值班人员发现系统问题、处理解决问题、防止故障的进一步扩大提供了有效的支撑手段。其运维处置模块多次在铁路95306大型施工、维护过程中,有计划地完成双中心流量切换,实现了施工过程对业务服务的零影响。应用表明,运行监控系统大幅提高了铁路95306日常故障处理能力和处置效率,最大程度保障了业务的连续性。

5 结束语

本文设计并实现了铁路95306运行监控系统,从多个维度及时、准确、全面地反映了铁路95306的运行状况,为铁路95306的运维工作提供有力技术支撑,运用效果良好,满足了实际生产运行需要。

此外,运行监控系统相关功能设计和关键技术实现具有较强的普适性,具备在其他相似系统推广使用的可行性。下一步,将持续优化运行监控系统,提高监控效率,并结合机器学习、大数据分析等技术[9],实现更加丰富、智能的运行监控功能,推动铁路95306运维的自动化和智能化发展。

猜你喜欢
日志运维铁路
一名老党员的工作日志
沿着中老铁路一路向南
扶贫日志
运维技术研发决策中ITSS运维成熟度模型应用初探
风电运维困局
铁路通信线路维护体制改革探索与实践
杂乱无章的光伏运维 百亿市场如何成长
游学日志
基于ITIL的运维管理创新实践浅析
无人机在铁路工程建设中的应用与思考