可观测实践|如何利用 Prometheus 精细化观测云产品
引言
随着云计算的普及,企业用到越来越多云产品,例如:ECS、RDS、Redis 等。服务众多企业之后,阿里云可观测团队发现在运维场景愈发精细化的今天,对于指标按需再加工、对于告警规则的灵活设置成为刚需,云监控等基础默认监控能力,无法满足当下的运维需求,例如:
- 查看各 Region ECS CPU 使用率 Top10;
- 为 Kafka 服务连续 10 分钟堆积增量超过 500 的 ConsumerGroup 设置告警;
- 基于磁盘空间的变化预测清理时间,避免告警无法及时处理导致故障。
与此同时,Prometheus + Grafana 成为可观测性事实标准。运维团队可以使用 Prometheus 监控云原生 Kubernetes 体系 Node、ApiServer、workload 等基础指标的同时,还可以通过 Prometheus Exporters 采集各种组件(如 Redis、Kafka 等)和业务应用的相关指标,最后通过 Grafana 进行整体可视化展示,借助 AlertManager 进行告警,实现云原生时代的指标可观测闭环。
回到最开始的话题,随着云产品应用愈发普及,基于“Prometheus + Grafana”的指标可观测体系是否可以针对云产品的相关指标提供更加精细化的加工与应用能力,实现对云产品的指标可观测闭环?
答案是肯定的。
自建 Prometheus 监控云产品的挑战
虽然 Prometheus 官方社区维护了很多 Exporter,第三方厂商或者主流开源项目也参与到贡献及维护中。但由于云产品的特殊性,如果用户想要通过自建 Prometheus 去监控云产品,就需要用户通过 Prometheus Exporter 形式将观测到的 Metric 数据收集到服务端。但这里就会出现一些关于 Exporter 的额外工作量:
- 额外的研发工作量
虽然官方提供了四种语言(Go/Java/Python/Rubby)的正式客户端库用来开发一个集成 http server 的 Exporter 库,并提供了完整的开发规范。但这需要运维工程师针对不同云产品开发定制 Exporter(调用企业云监控实时导出服务获取 Metric 数据),对于开箱即用的云服务而言,拖慢了业务上线效率。
- 额外的 Exporter 资源消耗
由于 Exporter 本身提供了一个 REST 服务器,会带来一些线程消耗,随着 Exporter 接入云产品越多、指标越多消耗的资源也会随之越多。
可以看到,虽然运维工程师可以通过自研 Eexporter 完成对于云产品的监控,但有没有更简单的方式?
阿里云 Prometheus 服务(下面简称 Prometheus)成为最佳选择,提供全托管、开箱即用的云产品指标监控能力,并结合常见运维场景,预置若干多维度监控大盘以满足常见监控场景。针对不同云产品可观测性集成情况,提供「企业云监控集成」以及「云产品自监控集成」两种不同接入模式,最大限度的降低运维接入成本。
如何通过阿里云 Prometheus 服务监控云产品
根据不同云产品的 Prometheus 集成情况,Prometheus 服务的云产品监控分为「企业云监控集成」以及「云产品自监控集成」两种形式,接下来我们将进行详细解读。
企业云监控集成
阿里云部分云产品在产品控制台默认集成了 Prometheus 监控,但还有众多云产品尚未集成 Prometheus。为了能通过 Prometheus 服务监控这部分云产品,我们提供企业云监控集成模式,通过企业云监控获取监控指标,指标上报流量费用由云监控收取(收费标准),Prometheus 免费存储及应用。在用户运维成本未增加的前提下,获得了 Prometheus 更精细与灵活的的指标加工与应用能力。
部署形式如下图:
- Exporter:以 Pod 方式部署在 Prometheus 企业云监控集成的托管 K8s 集群,通过调用企业云监控实时导出 API 收集已集成的云产品指标数据;
- Agent:Arms Prometheus Agent
- Alarm:定义集成的云产品告警模板
- Grafana:提供已集成的云产品默认大盘
对于云产品控制台目前尚不支持Prometheus监控的产品,通过该方式实现产品指标监控,目前支持 25 款云产品并不断扩增。企业云监控集成目前仅支持国内 Region,海外 Region 暂未开放。云产品接入后,包含全部 Region 监控指标。目前已接入产品包括:
- 弹性计算类:阿里云 ECS;
- 存储类、阿里云 SLS、阿里云 OSS;
- 网络类:阿里云 ALB、阿里云 API 网关、阿里云 Connector、阿里云 CDN、阿里云 CEN、阿里云 DCDN、阿里云 Cloud NAT、阿里云 EIP;
- 大数据类:阿里云 E-MapReduce、阿里云 Elasticsearch、阿里云 Logstash;
- 数据库类:阿里云 PolarDB、阿里云 RDS PostgreSQL、阿里云 RDS MySQL、阿里云 Redis、阿里云 RDS SQLServer、阿里云 Hologres、阿里云 ADB、阿里云 DRDS、阿里云 DTS;
- 安全类:阿里云 WAF;
云产品自监控集成
目前,部分云产品在各自控制台提供了自身产品的可观测性,但这些云产品的指标及看板散落在各个控制台。为了能将这些数据进行统一展现。Prometheus 服务提供了云产品自监控集成形式,云产品自监控集成的相关指标来源于各云产品,为运维团队提供更加便捷的日常运维监控界面。
部署形式如下:
- Exporter:以 Pod 方式部署在云产品侧 K8s 集群,负责收集云产品指标数据;
- Agent:Arms Prometheus Agent
- Alarm:定义告警模板
- Grafana:提供云产品默认大盘
Prometheus 自监控集成 Tab 页是云产品控制台支持 Prometheus 监控的所有云产品的概览页,展现当前账号下云产品的 Promehtheus 集成状态、指标占比、大盘预览、告警配置。目前已接入的产品包括:
- 数据库类:阿里云 Clickhouse、阿里云 Lindorm、云数据库 MongoDB;
- 消息队列类:消息队列 RabbitMQ、消息队列 Kafka、消息队列 RocketMQ;
- 中间件类:企业级分布式应用服务 EDAS、微服务引擎 MSE - 云原生网关、微服务应用引擎 SAE、应用高可用服务 AHAS;
- 运维类:Grafana 服务、性能测试 PTS;
最佳实践
企业云监控集成
- 云产品接入
登录 Prometheus 控制台,点击左侧菜单“接入中心”选择任意云产品后弹出接入页面,选择待接入的云产品安装即可,安装完成后会创建一个名为“企业云服务”的 Prometheus 实例。
- 监控指标
点击“云服务实例”,选择相应云产品图标会弹出一个包含指标、大盘和告警 3 个 tab 页的窗口。指标页默认包括:指标、类别、描述 3 项基本信息,已集成云产品除默认项外还包括最近 10 分钟的指标量和占比。
ECS 如图:
- Grafana 大盘
大盘页默认显示该云产品的所有 Grafana 默认大盘缩略图。已集成的云产品点击缩略图或 Title 链接会跳转至阿里云 Grafana 监控大盘,未集成的云产品点击缩略图或 Title 链接会显示 Grafana 监控大图。
-
ECS 实例详情:提供 ECS 实例的 CPU、内存、磁盘、网络等系统指标的监控,筛选维度包括:区域、ECS 标签、实例名、实例 ID;
-
ECS 全局公网大盘:提供 ECS 实例公网流入、流出带宽合计、TOP 等指标;
-
ECS 实例利用率排序大盘:支持 region 和全局维度 TOP 实例,主要指标:CPU 利用率、内存利用率、网络连接等;
-
ECS 资源区域分布大盘:支持 ECS 实例、CPU、内存、磁盘、网络连接等按区域分布统计;
-
告警配置
告警页默认显示该云产品配置的所有告警规则:
点击“创建 Prometheus 告警规则”通过默认告警模板设置或自定义 PromQL 完成告警规则的创建(自定义 PromQL 指标名可参考步骤“云产品指标”)。
-
默认告警规则
-
CPU 利用率
AliyunEcs_cpu_total{} > 80
- 内存利用率
AliyunEcs_memory_usedutilization{} > 90
- 磁盘利用率:磁盘使用率超过 90%时需要进行磁盘清理
AliyunEcs_diskusage_utilization{} > 90
- 磁盘剩余空间不足:当磁盘剩余空间小于 5G 时考虑清理
AliyunEcs_diskusage_free{} < 1024*1024*1024*5
- 热点指标
云产品自监控集成
在开通云产品并创建实例时,会有开通 ARMS Prometheus 相关选项,创建完成后即可通过 Prometheus 实现该产品的指标监控。以“MSE 服务-云服务网关”为例:
- 创建实例时开通 Prometheus 监控
- 产品控制台监控入口
Grafana 专业版
云服务实例默认使用 Grafana 共享版,如果默认大盘不能满足运维团队可观测需求或者想在默认大盘基础上进行优化,可增购 Grafana 专家版或高级版。
关于阿里云 Prometheus 监控
阿里云 Prometheus 服务是基于云原生可观测事实标准 - Prometheus 开源项目构建的全托管监控服务。默认集成常见云服务,兼容主流开源组件,全面覆盖业务监控/应用层监控/中间件监控/系统层监控。通过开箱即用的 Grafana 看板与智能告警功能,并全面优化探针性能与系统可用性,帮助企业快速搭建一站式指标可观测体系。助业务快速发现和定位问题,减轻故障给业务带来的影响,并免去系统搭建与日常维护工作量,有效提升运维监控效率。
与此同时,阿里云 Prometheus 作为阿里云可观测套件的重要组成部分,与 Grafana 服务、链路追踪服务,形成指标存储分析、链路存储分析、异构构数据源集成的可观测数据层,同时通过标准的 PromQL 和 SQL,提供数据大盘展示,告警和数据探索能力。为 IT 成本管理、企业风险治理、智能运维、业务连续性保障等不同场景赋予数据价值,让可观测数据真正做到不止于观测。