常见运维监控系统的技术选型

原标题:常见运维监控系统的技术选型
当今监控乃至整个运维行业正处在变更之际 , 面对诸多变化和不确定性 , 运维监控的规划应该首先考虑保证技术投资的可持续性 , 避免锁定在某一具体的架构和方案上 , 而是立足核心技术要点与诉求 , 跟随技术潮流 , 平滑演进 , 保持技术先进性 , 在演进过程中分阶段持续输出业务价值 。 本文将介绍几种常见运维监控系统的技术选型 。
监控系统的功能监控系统是运维系统或平台系统中较为核心的组成部分 , 它承载了运维工作中数据闭环的部分 。 从功能角度 , 监控系统分为数据采集功能、数据上报功能、数据存储功能、告警功能、大屏功能、报表功能等功能模块;从技术场景角度 , 监控系统又可以分为机房监控、硬件监控、网络监控、操作系统监控、中间件监控、云平台监控、业务监控、拨测监控等垂直技术领域;从业务场景角度 , 监控系统还可以分为资源类监控、成本类监控、审计类监控、质量类监控、运营类监控、安全类监控等垂直业务领域 。
无论从哪个角度划分 , 监控系统的核心职责是保证平台所有信息的及时采集、正确处理、准确告警和合理展示 。
监控系统的工作位置运维负责支撑业务模块的正常运行 , 这需要从最底层的云或硬件开始构建运维技术栈 , 按下图所示 , 一般来说运维技术栈的职能从下往上依次包括环境(如IDC机房)、设备(如云主机、硬盘)、基础软件系统(如linux)、部署和管理(如docker、k8s)、中间件(如mysql数据库)、业务调度 , 最终到最上层的业务模块 。 不同公司、不同业务场景下 , 运维的技术栈的实现方式会有很大区别 , 但从功能上不会超出下图所示的范围 。

常见运维监控系统的技术选型
文章图片
在运维技术栈中 , 监控系统(如上图右侧所示)需要在垂直维度上负责所有层次、所有组件的工作状态收集和风险预警 。 监控系统的工作位置贯穿了运维技术栈的所有层次 , 这对监控系统在技术上的全面性、可靠性和工程上的强度提出很高要求 。
监控系统的核心组件数据采集器
数据采集器一般是支持插件机制的数据采集和数据上报工具 。 它可以从自己所运行的系统上直接采集相关运维数据 , 或从其它系统的API中获得数据 , 亦或是从系统或第三方组件中监听监控数据 。
数据存储仓库
数据存储仓库通常是时间序列数据库 , 它负责处理大量的监控数据写入和复杂的监控数据查询 。 数据存储仓库一般需包含数据压缩、数据过期、聚合运算等必须功能 。
用户操作和可视化界面
用户操作界面是用户管理监控系统的入口 , 它必须使对监控指标和告警的管理易用并可维护;数据可视化界面负责提供监控数据的展示 , 它必须支持必要的时序数据展示手法 , 并支持一定程度上灵活的查询能力 。
数据处理引擎
数据处理引擎处理数据存储仓库中的时间序列数据 , 一般要支持流式处理和批量处理 。 数据处理引擎一个最重要的功能是对监控告警的计算 。
监控系统的关键技术监控系统在技术上涵盖面广、技术栈深 , 容易存在技术风险 。 在设计或评估一个监控系统时 , 我们要格外关注以下关键技术:
收集器
收集器决定了监控数据的来源 , 收集器的好坏决定了监控数据的覆盖面、数据质量和及时性 。 一个好的监控系统应该配备大量针对常见技术场景的收集器 , 并提供方便的自定义数据接口 。 标准场景的监控数据占所有监控数据的70%左右 , 大量的标准收集器可以大大降低监控系统的持有成本;自定义监控数据占所有监控数据的30%左右 , 设计良好的自定义监控数据接口可以更好的调度、组织和收集自定义数据源 , 并为后续的二次开发工作夯实工程基础 。
时间序列存储技术
时间序列的管理、存储和处理是监控闭环中的核心环节 , 在设计或评估一个监控系统时应着重考察时间序列存储的技术方案 。 时间序列技术的关键点在于可用性、可靠性、压缩比、旧数据清理、指标项管理、多维度聚合等多个方面 。
查询语言和查询效率
查询语言是监控数据的查询接口 , 好的查询语言可以极大释放监控数据的价值 , 而不好的查询语言会限制对监控数据的进一步加工和使用(有些监控系统不支持通过语句方式查询数据 , 应该避免选择这样的方案) 。 数据的查询效率会影响监控系统的使用效率 , 尤其在告警计算、报表生成、数据统计等使用场景下 , 低下的查询效率会极大影响对数据使用方式的想象空间 。