走近监控系统的神经中枢

本文做者:AIOps智能运维数据库

做者简介服务器

四金    百度高级研发工程师架构

 

负责百度智能运维(Noah)监控平台的设计和研发工做,在监控系统的配置管理方向有普遍实践经验。并发

 

干货概览运维

随着软件系统的发展,监控目标场景愈来愈普遍,对监控系统的能力要求也愈来愈高。对于监控系统来讲,从能力上看基本能够划分为数据采集、数据计算、数据存储、异常检测、报警处理以及监控可视化六块。为了更好应对大规模、复杂化的监控业务场景,咱们不只仅须要在具体监控能力上作深、作强,还须要创建对应机制来统筹这些能力一块儿良好协做。今天的这篇文章就为你们介绍监控系统的神经中枢——配置管理与分发系统,让咱们一块儿揭开它神秘的面纱吧! 高并发

需求性能

在业务系统发展的初期,因为场景简单,对监控的需求也比较简单,好比仅采集默认的机器监控数据,不须要进行进程、日志等监控能力。同时监控的规模也相对较小,用户的配置数量通常在百或千级别,这时只需按期读取数据库中的配置就能够很好的工做。设计

随着业务系统的快速发展,业务体量愈来愈大,业务复杂度愈来愈高,对监控的需求也愈来愈高。传统的简单读取数据库配置在业务扩展性性能上遇到了挑战。日志

1支持不一样类型的配置管理blog

监控指标采集、计算、报警等方面的配置种类愈来愈多。如物理机的机器资源类指标、应用程序的进程和日志指标的采集配置、站点的连通性采集配置、服务器的宕机检测任务配置、多个实例间指标的计算任务配置、指标数据的异常检测配置、告警信息发送配置等。

2支持不一样场景的配置分发

  • 高并发配置下载场景:监控系统中每一个物理机部署一个Agent用于对部署在该机器上的应用程序相关指标进行采集。Agent须要下载与主机关联的采集配置,在大规模的监控系统中,Agent的数量达到百万级别,采集配置的更新周期为10s,配置分发系统须要应对高并发查询的压力。

  • 一致性配置下载场景:为了应对高可用、大规模的数据计算及报警场景,各个子系统每每使用集群化部署。以报警集群为例,同一机器的数据可能会由报警集群的不一样实例进行判断,若配置在集群内不一致,那么报警系统的行为就会变得不可预期。

3支持故障快速恢复

配置分发系统做为监控的枢纽,关联的模块比较多,系统故障会影响采集、计算、报警子系统工做的正确性以及用户新加监控配置不生效,因此须要相应的方案来保障监控系统的快速恢复或重建能力,来保障监控系统的可用。

图1  配置管理&分发系统交互流程图

方案

梳理完问题、需求,接下来就要针对这些问题进行相应的改造升级。下面咱们从技术的角度介绍下如何解决这些问题吧!

1、支持配置可扩展性

复杂的监控能力意味着监控系统的配置种类灵活多样。若是直接将配置分发模型与业务模型对接,意味着业务上的每次改动都须要配置下发系统进行对应的变动。那么如何统一配置的多样性,作到配置下发对上层业务透明呢?答案是:归类+抽象

  1. 将不一样的配置按照“目录”进行分类管理,实现统一的配置管理需求。

  2. 文件做为载体,全部配置都以文件的形式进行管理。不一样的文件内容格式表明着不一样类型的配置,原有格式的升级以及新类型的添加统一抽象为文件处理,加强了系统的扩展能力。

  3. 经过代码管理系统管理文件的方式,实现变动历史追踪。经过对文件系统的定时备份与构建快速故障恢复机制提高系统的可用性与可靠性。

图2  配置归类&抽象

在归类方面,因为不一样的能力须要的配置形式不一样,咱们以此为依据进行分类。对应到实现中则经过目录表达分类的含义,经过子目录来表达配置的层级与归属等关系。这里咱们将配置目录的层级分为监控功能层级->用户层级->应用层级三层,在应用目录下将具体配置(如进程监控配置、日志监控配置)写入文件中。

2、确保一致下发

经过对配置管理方式的抽象与归类整理,配置的一致性下发能够经过构建配置文件内容的一致性机制解决。咱们使用“版本”做为文件内容一致性机制的核心。当用户变动配置时,配置管理系统会生成一个全局惟一的版本描述这次配置变动操做,版本中包含这次变动操做对应的配置文件变动详情。

配置下发时,在各个子系统会按期检测配置版本差别并更新本地配置至最新版本,从而保证配置在每一个更新周期内保持一致。

3、应对高并发压力

大规模的压力则主要体如今采集Agent的配置下发部分。因为Agent只需拿到部署主机所需的监控配置,所以将配置文件按照监控的最小单元进行拆分,并按照规范进行打包。

图3  Agent配置拆分&下载流程

当前的业务部署每每采用混布方式,同一主机中会部署多个不一样类型的应用程序。为了支持这种监控场景,主机上部署的采集Agent会查找主机上部署的应用并下载对应的多个应用配置。当业务规模增大时,物理机增多,配置下载请求也会成倍增加,因配置存储的Server端很容易达到性能瓶颈。经过可水平扩展的静态文件下载服务来应对高并发下载压力,经过ETag方式检测文件是否变动,只针对变动的配置文件才进行传输以减小下载流量,最终知足了百万级主机、千万级实例的配置下发需求。

4、故障快速恢复

考虑到配置在监控系统中的重要程度,为了保障业务的可用性,就须要构建监控系统的快速故障恢复机制。

同时,因为监控系统配置集中管理,随着系统的发展,配置的体积也在不断增加,配置文件体积达到数十GB级别,而且所有由小文件组成,文件个数也达到了数百万级别。为了减轻系统压力,在系统中加入“快照”机制,每隔一段时间便生成当前全量配置的快照,当出现大量更新时,先经过“快照”减小更新量,再经过对应同步机制进行少许的文件更新。

总  结

通过不断的努力和屡次改造,目前的配置管理及分发能够知足监控系统的需求。因为可以灵活管理多种配置,而且快速、一致地送至各个系统。在面对故障场景时候,也能够及时撤回配置,避免更大的损失。然而随着监控业务的发展,系统架构的变迁,起着中枢做用的配置管理与分发系统将会面临新的挑战。路漫漫其修远兮,吾将上下而求索!

原文连接地址:https://developer.baidu.com/topic/show/290323

相关文章
相关标签/搜索