杨帅 吴涛 李超 史超 田伟
摘 要:鉴于目前主流的zabbix等监控工具难以满足自动化运维实际需求,通过对zabbix监控数据源研究和zabbix-agent二次开发,完成监控数据收集,实现zabbix数据源调用、数据分析及可视化展示,从而构建一套满足运维个性化需求的自动化运维监控平台,实现软硬件资源监控和自动化巡检,为优化资源配置提供有力数据支撑,提升自动化运维管理水平。
关键词:zabbix数据源;自动化运维;可视化展示
1 引言
随着互联网用户业务规模的不断扩大,整个IT运维环境变得日益复杂,传统的被动、孤立、半自动式的运维手段已经无法满足运维人员实际运维需求,IT运维自动化已成为当前运维发展的大趋势。目前主流的开源自动化运维监控工具,如:zabbix、Nagios等,虽然可以满足基本的日常监控需求,但随着运维规模的不断扩大,运维设备种类不断增多,这些监控工具已无法满足日常运维工作的需求[1]。因此,亟需根据自身运维需求对现有的开源工具进行二次设计开发,构建一套满足运维需求的自动化运维监控平台,解决日常运维工作痛点、提高运维效率。
2 设计思路
基于zabbix监控数据将运维对象资源分配到相应的业务线使用,按照业务线进行软硬件资源配置和日常运维管理,从运维对象、业务线等不同维度对资源进行日常健康监控和分析,并进行报表数据可视化展示。同时,对软硬件资源运行状态进行监控并设置告警阈值,以运维监控资源数据为基础,结合整个运维流程,完成运维监控同自动化运维平台集成,实现自动化运维流程的全覆盖[2]。
本文针对自动化运维平台建设实际需求,整体分为基础数据监控、自动化运维平台程序及数据库两大部分。其中:基础数据监控通过利用zabbix-agent作为数据采集客户端,采用zabbix数据源提供基础监控数据;自动化运维平台程序及数据库基于Python 语言和Django框架进行主体程序设计开发,实现zabbix数据源数据的提取、整合计算,将分析处理后的数据存储至MySQL数据库为平台可视化展示提供数据支撑。
3 平台设计分析及实现
3.1 zabbix数据源分析
3.1.1 数据收集
通过zabbix server服务的采集进程完成zabbix agent 客户端对软硬件资源监控数据采集,并存储在zabbix数据库。同时,可根据用户个性化需求,通过数据采集脚本实现其它监控数据的采集[3]。
3.1.2 数据表结构分析
zabbix的数据源可通过MySQL、PostgreSQL、Oracle等数据库实现,下面以MySQL数据库为例对数据表结构进行分析设计。由于zabbix数据库中涉及众多表,而在实际应用中只需重点关注以下表即可,以下对表中的关键字段进行分析。
(1)hosts表
用于保存监控资源实例(包含模板等),主要记录如:IP、是否启用等信息,关注的字段为hostid、host和status。
(2)items表
用于保存所有监控项,主要包括监控项与主机对应关系、监控数据存储映射关系等。
(3)history表
与items表相关联,记录浮点型监控数据。当items表中value_type字段值为0时,监控数据记录于此表。
(4)history_uint表
与items表相关联,记录长整型监控数据。当items表中value_type字段值为3时,监控数据记录于此表中。
(5)trends表
记录浮点型趋势数据,每小时进行一次数据采集。当items表中value_type字段值为0时,趋势数据记录于此表中。
(6)trends_uint表
记录长整型趋势数据,每小时进行一次数据采集。当items表中value_type字段值为3时,趋势数据记录于此表中。
(7)triggers表
记录触发器和告警状态信息。
(8)functions表
与items、triggers表相关联。
3.1.3 表关系
通过对以上zabbix数据库表结构的分析,表关系主要为:通过items表将hosts表与history、history_uint、trends、trends_uint这四张表进行关联,实现监控数据和趋势数据的存储;同时,通过items表和functions表将hosts、triggers这两张表进行关联,实现触发器和告警信息的存储。
3.2 数据处理
本文在zabbix数据库表结构初始化基础上,结合平台设计需求,对表结构进行分析设计,构建数据库以满足自动化运维平台基础数据存储需求,为平台提供数据支撑。通过自动化运维平台的后台服务完成zabbix数据库中监控数据的抽取,采用数据分析处理算法对数据进行分析统计并前台展示,实现运维监控实际需求。以常用的“主机资源运行情况报表”为例对数据处理思路及过程进行分析。
首先,在hosts表中通过条件‘status=0’,筛选出被监控的主机资源信息,在items表中通过‘key_’字段筛选;其次,通过items表中的value_type字段值确认监控数据的存储表,由于主机资源运行情况报表统计频率为每天,可使用趋势表(trends表和trends_uint表)中的趋势数据进行统计;最后,通过hosts、items和trends(或trends_uint)这三张表进行联合查询,获取所需的监控数据。同时,将通过数据抽取得到的基础监控数据进行算法处理,如:加权平均、筛选最大最小值等整合处理,并将整合处理后的最终数据存储于自动化运维平台的数据库中。
4 结束语
本文对zabbix数据源涉及的表结构和表关系进行了分析设计,基于zabbix基础监控数据,结合运维监控实际需求完成数据整合处理,满足不同运维场景下的个性需求。通过对zabbix数据源的深入研究分析并进行二次设计开发,采用目前主流的自动化运维技术,构建了一套满足运维实际需求的自动化运维监控平台,提高了运维效率和运维管理水平。
参考文献
[1]龙炜.自动化运维工具在企业信息系统管理中的应用[J].微型机与应用,2017,36(05):102-104.
[2]陈正华.国网信息系统运维自动化平台的设计[J].工业仪表与自动化装置,2017(02):18-21.
[3]谢超群.基于Zabbix高校数据中心运维监控平台的建设研究[J].长春大学学报,2018,28(12):44-47.
作者简介
杨帅(1987-),男,运维工程师,现就职于国网电子商务有限公司,主要研究自动化运维技术及可视化应用等方向。
吴涛(1985-),男,工程师,现就职于国网电子商务有限公司,主要研究自动化运维技术及应用等方向。
李超(1989-),男,总监,现就职于国网电子商务有限公司,主要研究运维管理及自动化技术等方向。
史超(1988-),男,运维工程师,现就职于国网电子商务有限公司,主要研究自动化运维技术、数据库等方向。
田伟(1980-),男,运维工程师,现就职于国网电子商務有限公司,主要研究网络安全、自动化运维等方向。