APP下载

基于InfluxDB的监控设备通用运维管理平台①

2022-01-05张世贤张少春谢晓东

计算机系统应用 2021年12期
关键词:时序运维管理系统

张世贤, 张少春, 谢晓东

1(泉州时刻防盗电子有限责任公司, 泉州 362212)

2(华侨大学 计算机科学与技术学院, 厦门 361021)

随着互联网技术的发展, 各种监控设备, 如监控摄像头、网络摄像机、环境监测设备、气象数据采集设备、水文数据采集设备等得到了广泛的应用[1-3]. 这些监控设备可以自动采集数据并通过网络实时上传, 节省了大量的人力物力, 提供更高的覆盖范围和精度, 给生活和工作带来了很大方便, 在各个行业都有不可替代的作用.

然而规模庞大的监控设备给运行维护带来了巨大的挑战和沉重的压力. 监控设备使用环境一般比较恶劣, 容易损坏; 维护和替换的代价较高[4]. 设备散布在广阔的城乡, 很多安装地点偏僻, 维护工作强度大, 维护时间和代价巨大. 此外, 当监控设备离线时, 很难判断故障原因是供电故障还是网络故障, 无法精准维护. 实践中, 大量故障只需断电重启即可排除, 却需要花费大量时间和代价到现场解决. 因此, 监控设备运行状态的监控, 以及故障原因的快速定位, 简单故障的远程排除等, 成为亟需解决的问题.

当前现有的运维管理平台[5-9]存在以下不足:(1)前端状态采集装置和监控运维管理平台不具有通用性, 不能应用到其他类型或其他厂家的监控设备上,也不能对已有设备升级. (2)产品没有进行冗余设计,安全性可靠性不足. (3)监控运维管理平台性能不足,可同时管理的监控设备数量有限.

针对上述不足, 我们研发了基于InfluxDB的通用监控设备运维管理平台, 平台主体包括状态采集装置、运维管理系统、运维人员移动终端APP以及可视化展示系统等4个部分.

状态采集装置安装在前端监控设备的监控箱中,采集监控设备的各种运行状态信息, 并将信息发送给运维管理平台. 状态采集装置具有通用性、可扩展性、高可靠性和易维护性.

运维管理系统接收、存储、管理从采集装置收到的运行状态数据. 由于监控设备的状态数据具有鲜明的时序数据特征, 使用传统的关系数据库在存储空间、查询速度和可靠性方面难以满足需求. 本系统使用了InfluxDB存储时序数据, 其他业务数据使用MySQL存储.

运维人员通过移动终端APP获得维修工单; 并可以在现场通过WiFi连接到状态采集装置进行测试和操作. 可视化展示系统对监控运维数据进行可视化渲染呈现, 为系统的运维提供智能化的支持.

基于InfluxDB的通用监控设备运维管理平台为监控设备的运维提供一个更加智能、低廉、高效的解决方案, 解决监控设备故障定位困难, 运维成本高昂的问题, 改变目前监控设备运行维护模式. 目前已有部分用户部署试用. 平台运行状况良好, 能支持大量监控设备的运维管理工作, 展现出了良好的经济社会效益和市场前景.

1 系统架构

基于InfluxDB的通用监控设备运维管理平台的体系结构如图1所示. 其中状态采集装置能采集监控设备的供电情况、网络状态等支持和影响设备正常工作的基本状态信息; 能远程进行设备的重启操作, 以排除设备的简单故障. 状态采集装置具有很好的可扩展性, 能够根据不同的监控需求进行扩展, 如接入各种不同类型的传感器, 采集多种运行状态相关数据, 如温度、湿度等. 状态采集装置体积小巧, 能轻易地安装在大多数监控箱中; 提供了基于移动设备的设备配置和管理功能; 在自身电源、网络方面进行冗余设计, 安全可靠, 能在各种恶劣极端的环境下工作, 能在各种情况下有效可靠地发回信息.

图1 体系结构示意图

运维管理系统接收采集装置发来的运行状态数据并及时处理和存储; 能对故障自动识别, 自动报警, 自动定位故障位置及故障类型; 为维修人员提供设备报修、情况录入、跟踪、问题流转、结果反馈等流程管理; 为业务人员提供查看重点设备历史运行状况和历史故障信息的功能. 运维管理系统融合了关系数据库MySQL和时序数据库InfluxDB, 能有效地支持大规模采集装置的日常运行.

可视化展示系统对大量的监控设备运行状态数据进行可视化渲染和呈现, 能有效地展示整个监控平台的运行状态, 便于管理人员从整体上把握系统运行态势, 为系统的运维提供智能化的支持.

运维人员移动端APP可以接收到运维管理系统发来的维护工单; 可以方便查询到将要维护的设备种类型号、故障类型预测、维护物料清单等内容; 可以通过蓝牙或WiFi等远程接口连接到状态监控器, 进行遥控重启、远程测试、操控等工作, 能极大减轻维护的工作量.

2 关键技术

2.1 通用高可靠的状态采集装置

如图2所示, 前端状态数据采集装置由3部分功能模块组成: 状态数据采集模块、通信模块、电源管理模块.

图2 前端状态采集装置模块结构示意图

状态数据采集模块能接入各类传感器, 用于采集监控设备的各种状态信号, 如: 电源、网络、门磁、补光灯、温度/湿度传感器等. 此外还允许通过485总线协议接入其他种类的传感器信号, 便于设备在不同的系统和设备中使用, 具有很高的通用性和可扩展性.

通信模块有多种通信方式, 其中在监控设备正常工作的情况下可以通过有线网与运维管理系统相连;当有线网中断, 且导致监控设备不能正常工作的情况下, 可以通过无线网络(4G或NB IOT)与运维管理系统相连, 并发送报警信息. 此外, 设备还可以通过WiFi模块与运维人员的移动设备相连, 便于运维人员进行配置和管理.

电源管理模块的功能是: 当监控设备正常工作的情况下, 状态采集装置本身也使用市电供电; 当监控设备出现故障, 运行运维人员远程控制电源重启, 以排除一些简单的故障; 当监控设备的供电出现问题时, 前端状态采集装置本身可利用锂电池进行供电, 保证监控设备的故障信息及时可靠地上报.

状态采集装置在通信和电源两个模块上进行了冗余设计, 充分考虑了在极端情况下的工作需求. 使得数据采集装置在监控设备断网断电的情况下仍然能够正常功能, 采集并发送数据到运维管理平台. 而在网络、供电正常的情况下, 使用监控设备的网络和电源, 能大幅节约网络流量和电池寿命. 这带来了很高的可用性和可靠性.

状态采集装置的固件程序, 是基于LUAT进行开发. LUAT是一种新型物联网开源架构, 依托于通信模块做简易快捷的开发, 将传统的AT命令用Lua语言封装成API, Lua语言具有高效性、可移植性、简单强大、小巧轻便等特点[10]. 开发者可以通过调用API快捷地实现TTS、GPS、SOCKET等功能. 使用LUAT作为设备核心, 可以方便快捷地实现很多功能, 减少开发成本和时间, 降低设备成本. 同时LUAT还支持远程升级, 减少了后期维护成本.

前端状态采集装置还为主流移动端平台如Android、iOS等开发一个移动端的APP配置管理程序用于前端采集装置的配置和管理. 该APP程序可以在现场通过WiFi与采集装置相连, 从而检测状态采集装置各模块、传感器等是否正常工作, 并可以通过状态采集装置收集监控设备详细的运行状态数据, 对监控设备进行测试和操控, 为现场运维提供了很好的支持.

2.2 基于InfluxDB的时序数据存储技术

运维管理系统不仅提供了状态信息接入、存储等功能, 还需要为管理人员提供报警、运维流程管理、设备远程管理等功能, 系统负载很重. 由于运维管理平台面向的应用场景可能接入成千上万甚至几十万台监控设备的状态采集装置. 大量的状态采集装置将不间断地发送心跳包和运行状态数据, 这些数据是重要的业务数据, 必须得到有效的存储和管理. 状态信息在平台的处理流程如图3所示.

图3 状态信息处理流程示意图

然而, 监控设备的运行状态数据具有时序特征, 经测算, 平均每台状态采集装置每分钟将产生20条左右的实时数据, 并需要写入到数据库中. 为支持可视化展示系统, 需要对实时数据进行统计, 分别产生3分钟、20分钟等6种不同时间段的最大值、最小值、平均值等不同形式的统计数据. 这些统计数据应及时生成, 避免信息的滞后.

当数据量较小时, 传统关系型数据库, 如MySQL,能够满足上述需求. 可以分别建立实时表、统计表, 并用触发器程序完成对实时数据的统计工作. 然而, 当设备数目增加到数千台时, MySQL难以满足系统的存储和读写需求. 表1给出了MySQL在3000台和1000台设备3个月数据的存储空间需求.

表1 MySQL存储空间需求

大规模的数据使得数据查询效率急剧降低, 因此需要在常用的查询关键字上建立多个索引, 这又带来了巨量存储空间需求. 而关系数据库在进行数据并发读写时, 对数据和索引上锁也导致了严重的性能问题.事实上, 当采集装置达到1000+时, MySQL已无法通过触发器完成统计数据的计算和插入工作. 而即使进行分库分表的操作也不能圆满解决大规模时序数据对存储空间需求和数据读写时延带来的问题. 此外, 巨大的空间需求也使得对实时数据进行备份和恢复非常困难.

InfluxDB是由InfluxData开发的开源时序型数据,主要用于高性能查询与存储时序型数据[11-14]. 目前,InfluxDB被广泛应用于存储系统的监控数据, IoT行业的实时数据等场景. 例如, 韩艺坤等使用InfluxDB存储桥梁监测传感器数据[11]; 孟宇等将InfluxDB用于冶金自动化相关业务[12]. 在工业数据库引擎[13]和监控系统[14]中InfluxDB也得到了应用. 在上述应用实践中,InfluxDB都有效地提高了整个系统的性能.

有鉴于此, 运维管理系统使用InfluxDB存储状态信息, 对实时数据的统计则通过连续查询定时生成, 图4给出了生成统计数据的连续查询语句. 其他业务数据如监控设备基本信息、状态采集装置相关参数、用户权限管理信息等都依然存放在MySQL中.

图4 使用连续查询生成统计数据

采用InfluxDB存储状态信息数据为系统带来性能上极大的提高. 表2给出了设备为3000台, 数据采集时间为3个月时, 使用MySQL和InfluxDB存储数据的空间需求和查询性能的对比. 其中MySQL的空间包含了表空间和索引空间. 查询需求是3个月中某台设备的1天的所有状态数据.

表2 MySQL与InfluxDB对比

运维管理系统采用InfluxDB+MySQL的混合模式存储数据, 针对不同类型数据采用不同的管理方式. 系统实际运行效率提升显著.

3 系统实现

3.1 运维管理系统的实现

平台的4个组成部分中, 运维管理系统最为关键,功能相对最复杂. 运维管理系统采用了浏览器/服务器结构, 基于Spring MVC+ MyBatis+Vue.js进行开发. 其中前端使用Vue.js框架, 后端是Spring MVC框架, 数据库采用MySQL存储业务数据. 整个系统采用前后端分离的开发方式, 前后端通过HTTP协议完成交互.

如图5所示, 运维管理系统划分为3层结构: 表现层、服务层和数据层. 表现层用于与用户交互, 是用户功能接口; 服务层把运维管理的主要业务逻辑进行抽象, 并以服务形式提供接口; 数据层提供数据存储、数据-对象转换等数据功能需求的支持. 3层结构的划分使得系统各模块有较清晰的功能边界, 便于维护和后续功能扩展.

图5 运维管理系统结构图

3.2 系统实际运行情况

基于InfluxDB的通用监控设备运维平台已开发完成, 并在海南、广西等多个用户单位安装试运行, 运行状况良好. 图6为前端状态采集装置的实物图, 图7为运维管理系统运行的界面示例.

图6 前端状态采集装置实物图

图7 系统界面示例

4 结论与展望

监控设备分布广阔, 数量庞大, 工作环境恶劣, 给运维带来巨大的困难. 现有监控设备运维平台存在兼容性可扩展性差、可靠性可用性不高、不能承载大规模监控设备的运维工作等缺陷. 本文研发的基于InfluxDB的监控设备通用运维平台, 前端状态采集装置能够安装到大多数监控箱, 能接入多种不同的传感器, 具有很好的通用性和可扩展性; 通过冗余设计保证状态采集装置在断网断电的情况下也能正常工作, 极大提高了可靠性和可用性. 平台的管理系统使用InfluxDB存储时序数据, 能大幅度压缩时序数据的空间需求, 提高对时序数据的查询效率, 从而从整体上提高了平台的性能和运维的规模.

基于InfluxDB的监控设备通用运维平台已投入实际的应用, 已初步展现出社会效益和经济效益. 下一步, 将根据用户的反馈, 不断对平台改进, 提升系统性能, 增加贴近用户需求的功能. 此外, 平台的架构、软硬件都具有很好的可扩展性, 可不断关注相关市场需求, 拓展平台的应用场景.

猜你喜欢

时序运维管理系统
基于大数据分析的智慧高速运营管理系统
基于大数据分析的智慧高速运营管理系统
顾及多种弛豫模型的GNSS坐标时序分析软件GTSA
基于James的院内邮件管理系统的实现
清明
基于GEE平台与Sentinel-NDVI时序数据江汉平原种植模式提取
你不能把整个春天都搬到冬天来
在线评审管理系统的建设与实践
基于GPS的电力运维轨迹定位系统
IT运维管理系统的设计及应用