文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

基于Prometheus的分布式监控平台落地与实践

2024-12-02 06:28

关注

分布式系统的可观测性分为metrics(指标)、链路和日志。指标监控基于基础指标数据(例如CPU、内存、响应时间,调用量等)进行监控,是较为传统和应用范围最广的监控手段;链路追踪解决服务间的复杂调用和性能耗时分析问题;日志监控对系统运行过程数据:如关键统计信息,警告、错误等进行监控,这三种手段共同配合完成分布式系统的全面监控。链路监控和日志监控是分布式日志中心的建设范畴,本文主要针对分布式系统的指标监控展开,下文所提到的分布式监控仅限于分布式指标监控范畴。

当前统一监控平台使用的传统监控工具比如Zabbix、ITM、Nagios难以实现在容器云及其他分布式动态环境下进行监控,因此亟待采用一种新技术解决分布式系统监控问题。

开展分布式监控,重点需要解决如下几个问题:

下面我们会逐一介绍。

二、分布式标准制定

在分布式监控标准梳理过程中,我们采用如下四个原则,产出如下图所示的分布式指标体系:

分布式指标体系层级图

具体每个层级,每个组件的监控指标,由于篇幅原因,在此不再展开。

三、平台概述

分布式监控平台是统一监控平台的子系统,负责分布式和云原生系统的监控。平台主要分为四层:监控工具层、存储层、处理层和管理平台层,如下图所示:

分布式监控平台逻辑架构图

监控工具层主要是由Prometheus工具组成,接收处理层的驱动指令,进行监控对象的自动发现、数据采集、告警判断、性能数据进行本地存储的同时,实时送入存储层的Kafka,为后继的数据分析提供数据源。

处理层负责连接监控管理层和工具层,主要包括工具驱动、实时数据处理、告警处理、Prometheus本地数据实时查询四大功能模块。

工具管理和驱动:将监控管理层的指令转换成Prometheus Operator接口API,进行相应Prometheus工具的驱动,如自动发现配置、采集指标配置、采集频率、告警配置(指标、阈值、告警持续时间),告警等级,性能数据存储配置等。

实时数据处理:对性能数据进行实时时间戳转换,异常清洗,数据格式化和标准化处理,InfluxDB存储格式适配等,最后送入存储层的InfluxDB进行历史存储,供后继的监控视图展示和问题定位查询使用。

告警处理:通过搭建AlertManager集群和自研的告警处理模块,二者互相配合,实现告警的统一集中处理。

Prometheus本地数据实时查询:接收管理平台请求,获取相应Prometheus本地性能数据,按需提取字段,采样点稀释,数据聚合等。

管理平台层由接口层、指标&指标实现管理、策略管理、规则管理、标签管理、工具管理、驱动管理、监控评价、监控视图展示、告警管理组成,其中接口层提供统一门户实现监控信息的全貌展示,提供便捷的管理支持与任务派发。

四、平台关键技术点

1、高可用、高性能、可扩展的分布式监控工具建设

调研当前业界众多的开源监控系统例如Prometheus、OpenFalcon和夜莺等,最终选型Prometheus,原因是:

当然Prometheus也有他的不足,那就是:

我们对Prometheus的不足做了一些扩展与整合:

2、标准化和自服务化

建立标准化的分布式监控标准管理模型。基于标签在K8s和Prometheus中的重要作用(K8s基于标签分类管理资源对象;PromQL基于标签做数据聚合;Prometheus Operator基于标签匹配监控对象和监控规则),因此以标签为核心,构建了一套分布式管理模型,具体包括监控标签、监控工具、指标实现、指标、监控策略、监控规则,如下图所示。通过在分布式监控平台落地实现了同类对象的标准化监控。

分布式监控标准模型图

打通运维和研发壁垒,实现代码即监控。监控管理员提前内置下发监控规则,研发投产时,只需要做两点就可实现监控:

驱动模块根据Service yml驱动Prometheus实现投产对象的配置和发现,并基于预置的规则进行监控,示例如下图所示:

标准化和自服务化配置下发监控规则过程示例图

3、集中统一管理

集中告警处理集群搭建:搭建AlertManager告警处理集群,实现告警的集中统一管理。通过AlertManager的分组、抑制、静默实现告警的初步处理,但是AlertManager现有功能不满足如下实际生产需求:

告警二次处理模块:基于go语言自研高性能告警处理模块,提供webhook接口供AlertManger调用。接口实现的功能有:告警字段丰富、告警压缩、告警升级、告警总结、告警根因提示、告警转syslog发送统一监控平台。

Adapter改造:基于开源Prometheus Kafka Adapter进行改造,确保海量性能数据实时写入Kafka,供后继的数据分析和数据价值利用,比如动态基线计算和异常检测等。

Adapter工作示意图

适配当前Kafka SASL/PLAINTEXT认证模式,对采集数据进行压缩以节约带宽,对Kafka写入性能参数调优以应对大并发数据量的实时写入。

设计Adapter主备模式,避免数据重复。如果主Adapter健康检查能通过且主Adapter对应的Prometheus正常运行,则利用主Adapter传递数据送入Kafka,备Adapter暂停工作;如果主Adapter或者主Adapter对应的Prometheus健康检查不通过,则使用备用Adapter进行传递数据,并通知管理人员Prometheus和主Adapter故障。

流处理模块:基于Flink自研流处理模块,确保海量性能数据的实时处理和入库。流处理的内容包括:时间戳处理(Prometheus默认采用UTC时间)、异常数据清洗、数据格式化和标准化处理,InfluxDB存储格式适配。

告警和性能数据集中处理架构图

五、总结

在平台建设中,借鉴同业及互联网企业容器云K8s相关建设经验,基于开源技术自主研发,构建了立体化、集中化、平台化、标准化的分布式监控平台,系统具有如下特点:

目前分布式监控平台已于11月初在G行投产,实现G行容器云生产集群的全面监控,实现海量对象的秒级处理,日均处理T级数据,告警准确率和召回率均为100%,系统运行稳定,监控效果符合预期。

六、后继工作展望

平台一期建设实现了容器云及云上应用和服务的监控,接下来会扩大分布式监控的纳管范围,实现分布式数据库、全栈云管理平台、分布式消息等的监控纳管。

监控自服务化能力建设,封装有一些自服务监控场景:比如监控的上下线、监控规则修改、个性化监控配置等。

监控评价功能,以量化的方式展示分布式系统的监控覆盖率和标准化率,以评促改,形成闭环。

分布式监控工具自身优化,比如Prometheus负载的自动平衡,基于一些预警数据,智能扩缩Prometheus的实例个数,自动分配采集对象,达到最佳的监控能力。

与自动化运维操作平台进行联动,实现一些场景的自动化处置。

来源:EBCloud内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯