时间:2022年04月25日 分类:电子论文 次数:
摘要:本文分析了建设业务综合监控平台中所应用的相关开源产品和技术,并结合实际介绍了江西广电网络业务综合监控平台的建设方案和实践情况。
关键词:业务综合监控 Zabbix Python
1 引言
近年来,随着广电网络行业的业务 IT 化、互联网化及媒体融合的不断深入,业务系统数量迅速增加,业务与应用也愈发复杂。但各业务系统缺乏统一的、直观的监控手段,传统的网络监控平台侧重于系统网络和 IT 资源的运行状态检查,无法反映业务实际使用情况和用户体验,也很难结合网络和业务对性能、故障等问题进行分析,增加了运维难度。
业务监控不仅能帮助运维人员掌握系统运行状态,及时发现且处理故障,优化调度资源,而且能够为业务人员提供相关业务指标,给产品设计、市场运营提供参考。因此,需要建设一个对各业务系统业务指标及网络、IT 资源运行状态进行统一监控,能实现监控、报警、分析、预测及展现,达到提高运维效率、促进业务发展目标的业务综合监控平台。
2 建设思路
网络监控系统由于标准化程度高已发展得非常成熟,各类产品基本都能够实现网络和 IT 资源的全面监控,具备报警、问题展现等通用功能。业务监控则不同,需要针对不同的业务进行单独分析与个性化的开发,才能实现各系统业务指标的监控。业务监控主要难点在于对业务和业务系统的分析,需要找出关键点,再通过定制开发进行监测。
因此,在网络监控系统基础上,对业务监控定制开发建设业务综合监控平台是一种高效的业务分析方式。网络监控系统有很多商业产品和开源产品可供选择,各有优劣,选择开源产品主要是因为其具备商业产品类似能力,能够满足项目需求且开放性更好,适合扩展开发,成本低。
3 设计与实践
3.1 系统架构
经过了解与比较,我们选择在开源 Zabbix 基础上构建业务综合监控平台。Zabbix 提供了丰富和强大的网络及设备监控能力,以及故障通知、问题和事件展现等功能,扩展集成方便灵活。基于 Zabbix 搭建平台可以最大化利用监控系统的功能,更便于构建业务监控流程和业务指标分析。业务监控是综合分析监控过程,既存在业务状态与网络、设备运行情况联动分析,也存在业务环节步骤间及不同业务系统间关联分析,所以需要一个跨平台、扩展性强、易编写和维护的开发工具。我们使用 Python 开发实现业务层监控并与 Zabbix 集成。
3.2 部署方式
部署一套涵盖企业所有网络、设备及业务的综合监控平台,需要解决两个问题:一是网络环境复杂,既要考虑网络的连通性又要考虑网络的安全性;二是设备数量众多,要考虑监控性能及实时性。通过 Server–Proxy方式进行分布式部署,将代理服务部署 在 被 监 控 系 统 内 部, 收 集 性 能 和可用性数据后,集中上报至 Server,Porxy 仅需一条 TCP 连接到 Server, 所以防火墙上仅仅需要加上一条规则即可,不会破坏原网络环境和安全设定,同时缓解了监控大量设备对 Server 端的压力。
Proxy 与设备、系统位于同一环境,可以根据设备特点和被支持的协议来选择监控方式;Zabbix 支持各种远程监控服务的协议无代理监控,如网络监控、自定义脚本监控、SNMP(v1/2c/3) 轮 询 和 Trapping、Java 应用 程 序 监 控、IPMI、SSH/Telnet 检查、ODBC 监控、ICMP 和 TCP 检查、HTTP 端 点 采 集、Modbus 和 MQTT 协议 等; 还 支 持 主 流 操 作 系 统 部 署 代理 监 控, 如 在 Linux、Solaris、AIX、Windows 等系统部署 Agent。
3.3 监控方案
Zabbix 对网络、设备和操作系统的监控是通过远程监控服务方式或代理程序从网络设备、云服务、容器、虚拟机、操作系统、日志文件、常见服务等采集数据。对非业务类的网络和 IT 监控,我们尽可能利用 Zabbix 已有的监控模板来配置监控方案;对业务类的监控主要根据各业务系统的业务流程进行分析,通过自定义开发采集监控节点指标数据,并通过接口提交至 Zabbix 配置自定义监控项进行监控。目前,我们已经完成 BOSS、AAA系统业务监控方案并纳入业务综合监控平台。下面以 AAA 系统监控方案来举例说明。
在梳理完网络拓扑、设备资源及配置后,添加新的主机群组作为一个管理单元(如 AAA 系统主机群),在该群组内创建主机并选择对应的监控模板将需要监控的设备添加至监控系统,完成后便具备了非业务类网络和设备的监控,包括网络连通性、端口流量、CPU 负载、内存使用、磁盘空间使用等常用指标。AAA 系统的业务监控主要监控其认证服务可用性及性能,配置以下两个监控点。
(1)客户端模拟认证请求,采集认证结果。客户端模拟认证请求使用Python 第三方 Pyrad 编写代码模拟认证报文并解析结果,实现起来比较复杂 , 但是能非常灵活地进行各种认证行为模拟。由于我们只需验证认证可用性,可以使用另一种更简单的方式 ,即通过 Zabbix Agent 配置自定义参数调用 Linux 下的 Radclient 工具来验证并获取结果。安装配置好 Zabbix Agent和 Radclient 工具包后,在 Agent 配置文件中再进行相应的配置。
(2)采集 AAA 系统数据库中单位时间认证请求 / 成功数。编写 Python脚本从数据库获取单位时间认证请求 /成功数并写入文件,将该脚本设置为定时任务刷新数据。监控项目配置成功后,平台将按一定周期采集监控项数据并保存,通过配置图表、仪表盘、网络拓扑图等可视化组件展现监控数据。此外,监控采集的数据还可用于生成监控报表,进行历史数据故障和性能分析。
3.4 告警方案告警方案
对采集的数据进行分析、判断并进行处置。在 Zabbix 中通过设置触发器进行采集数据分析,还可以根据实际需要创建各种不同的触发器来感知所关注的设备、系统或业务的运行状态,每个触发器可以从多个维度选择需要监控的项数进行算术或逻辑运算得到一个触发器的最终状态(问题态或恢复态)。
以上述 AAA 系统监控方案为例,需要配置一个认证服务状态的触发器,选取模拟认证和单位时间认证成功数这 2 个监控项目,以最近 3 次模拟认证都失败或单位时间认证成功数小于1000 触 发 问 题, 以 最 近 3 次 模 拟 认证都成功或单位时间认证成功数大于1000 触发恢复(阈值选择需要参考历史数据),需配置问题表现形式、事件成功迭代和恢复表达式 3 个部分。触发器状态发生变化会触发所关联的处置动作,动作既可以是各种形式的通知也可以是所配置的可执行程序。
一个触发器可以配置多个处置动作,一般情况至少需要一个通知动作。Zabbix 还预置了一些基础的通知媒介模板如邮件等,实现接收告警通知的时效性和便利性。为了实现企业微信群发消息和手机短信通知功能,我们进行了一些开发,根据告警信息紧急程度选择不同媒介方式,按设备、系统归属发送指定维护人员,后续还将实现自动语音呼入通知,完全实现无值守监控。命令动作可在触发器状态触发后自动执行修正脚本或命令来尝试并解决问题,如检查到服务异常自动执行服务重启、进行日志收集等。
4 总结
通过探索和实践,江西广电网络利用 Zabbix 和 Python 等开源产品和技术搭建了业务综合监控平台,提高了业务监控能力,提升了综合监控水平,解决了运维支撑和业务保障中业务监控盲点和业务故障定位难等问题,同时也为企业探索自研自建平台提供了新思路。
作者:梁斌 中国广电江西网络有限公司