随着云计算的普及,上云成了众多企业的选择,上云后对云产品的运行状态、任务执行时延等方面的观测就成了使用的基础条件。火山引擎云监控已提供云产品基础观测的能力,但往往不同用户关注要点不同,对观测指标进行精细化的自定义查询及告警已成为一种更为广泛的使用趋势。
火山引擎托管 Prometheus 服务(VMP) 集成了诸多云产品开箱即用指标监控能力,针对典型的运维场景,提供了基于专家经验的预置大盘及预置告警模版,在此基础上,用户可在控制台上自由的进行指标查询并配置告警规则。在云产品监控指标与 VMP 集成的基础下,用户可以仅使用 VMP 这一个服务来统一监控云上的产品与自身的业务。依据云产品监控指标数据是否直接上报给 VMP,在本文中,把 VMP 与云产品联动所提供的监控主要分为两类:云产品监控原生集成、云监控桥接集成。
云产品监控原生集成
火山引擎托管 Prometheus 已支持了容器服务(VKE)、火山方舟、云服务器、API 网关、微服务引擎等服务的指标监控信息直接上报的集成。上述云产品中,通过是否需要自定义采集配置,可分为两类:云产品托管采集集成、用户自定义采集集成。
- 云产品托管采集集成 :包含有火山方舟、API 网关、微服务引擎。用户无需进行采集配置,仅在创建这些产品时绑定 VMP 的工作区,便可查看相应的云产品指标。
- 用户自定义采集集成 :包括容器服务、云服务器。用户需做一些轻量配置指定采集目标,才能查看相应的云产品指标。
云产品托管采集集成
云产品托管采集集成是指,在云产品自身架构中托管了指标采集及上报到 VMP 的链路,在产品流程上与 VMP 深度集成联动,提供无缝的指标采集能力、基于专家经验的预置看板和告警模版,给用户开箱即用的体验。部署架构通常如下:
- Exporter :部署在云产品侧,负责收集云产品指标数据;
- Agent :负责指标拉取和上报;
- Workspace :托管 Prometheus 中指标数据存储的抽象实例,为用户提供标准的云端 Prometheus 能力。
以火山方舟产品为例,在创建接入点后,可在详情页中查看通过该接入点的 API 调用监控大盘信息,并支持快速配置指标告警。
用户自定义采集集成
由于云上企业用户大多脱离不开在 Kubernetes、云服务器等基础设施上搭建其应用架构,这时往往会有自定义指标产生。因此, VKE 和 ECS 这两类产品指标与 VMP 集成时需要用户做一些轻量配置来实现采集自定义指标的能力,而 VKE 与 ECS 提供不同的计算资源管理方式,VMP 与这两者的集成链路也有些差别,下面将分别介绍这两者集成链路。
VKE 集成
火山引擎托管 Prometheus 服务(VMP)在容器服务(VKE)产品页中提供了 Promentheus-agent Addon,可通过一键安装该组件实现对 K8s 集群数据面的监控,默认会提供集群节点、工作负载等资源的指标的上报能力,用户还可以通过自由在集群中配置 PodMonitor/ ServiceMonitor/ Probe 等原生 Prometheus 采集的方式来指定目标,以实现对自身业务资源进行监控。此外,通过将 VMP 工作区与集群绑定,VKE 还可以上报控制面如 API server、etcd、kube-scheduler 等组件的指标。为了用户能直观的观测到集群状态,VKE 基于过去对 K8s 的运维经验, 在 VMP 侧提供了若干大盘及典型告警的配置,无需做额外的配置就能对集群进行观测,部署架构如下:
- Prometheus-agent :会同时安装 Agent、Operator、Kube-state-metrics 和 Node-exporter 组件的 Addon,每个组件的作用如下所示:
- Agent:采集器组件,负责指标拉取和上报,采集集群内 kubelet、kubelet-cadvisor 、kube-state-metrics 、node-exporter 等暴露的指标;
- Operator:vm-agent 控制组件;
- Kube-state-metrics:提供 Kubernetes 资源信息指标数据;
- Node-exporter:提供节点资源信息指标数据。
- Workspace :托管 Prometheus 中指标数据存储的抽象实例,为用户提供标准的云端 Prometheus 能力。
使用 VKE 服务默认的观测配置往往不能完全满足用户诉求,用户需对自身的业务指标进行观测时,通过在集群内自定义采集配置后,便可在 VMP 控制台自由查询业务指标并进行告警配置。
此外,部署云上业务时通常会希望工作负载会具有弹性扩缩容能力,从而避免由流量波动带来的运维成本。在使用 VKE 时可以配置 HorizontalPodAutoscaler(HPA)来自动更新工作负载资源。默认情况下,可以通过使用 CPU/ Memory 利用率等来作为 HPA 的判断条件,而有时候业务的流量并不绝对和 CPU/ Memory 成正比。此时可以通过在 VKE 控制台安装 prometheus-adapter Addon,在集群内对该组件进行配置,将写入 VMP 的业务 Prometheus 指标转换成为自定义的 Kubernetes 资源指标的格式,然后使用该自定义资源指标对集群负载配置 HPA。例如,如果在集群中有一个 Deployment/ my-deployment,希望保持每个 Pod 的 QPS 平均值维持在 100,可通过如下方式来完成 HPA 的配置:
- 在 prometheus-adapter Addon 中按下述的格式增加配置,这样在集群内就增加了一个名称为 http_request_per_second 的自定义 K8s 资源指标。
- 创建 HPA 根据 Pod 级别的自定义指标 http_requests_per_second 来自动调整 my-deployment 部署的副本数量。
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: test
namespace: default
spec:
scaleTargetRef: # 指定 Deployment
apiVersion: apps/v1
kind: Deployment
name: my-deployment
minReplicas: 1
maxReplicas: 10
metrics:
- type: Pods
pods:
metric:
name: http_requests_per_second
target:
type: AverageValue
averageValue: 100
ECS 集成
火山引擎托管 Prometheus 服务(VMP)支持云服务器指标的集成,当用户指标通过 ECS Port 暴露时,用户可在 VMP 产品控制台创建 ECS 采集任务完成指标的写入。VMP 通过自研的 ECS 服务发现配置(volc_sd_configs),用户无需担心 ECS 创删带来的指标管理问题,仅需配置采集目标的过滤条件便可在创删时自动更新采集目标。部署架构如下:
- Agent :负责指标拉取和上报;
- Workspace :托管 Prometheus 中指标数据存储的抽象实例,为用户提供标准的云端 Prometheus 能力。
云监控桥接集成
火山部分云产品在产品控制台默认集成了 VMP 应用,提供 Prometheus 监控,但还有众多云产品尚未集成 VMP。为了满足用户对云上服务的统一监控需求,我们提供云监控集成模式,用户可通过 VMP 监控尚未原生集成到 VMP 的云产品 。 当前已经接入了包括弹性计算类、数据库类、存储类、中间件类、网络类等二十余款云产品,而且还会持续扩增。部署架构如下:
- Exporter :以 Pod 方式部署在 VMP 侧,通过调用云监控指标实时导出 API 收集云产品指标数据;
- Agent :负责指标拉取和上报;
- Workspace :托管 Prometheus 中指标数据存储的抽象实例,为用户提供标准的云端 Prometheus 能力。
如果用户想通过云监控桥接集成的方式来监控火山云 MySQL 产品,可通过在托管 Prometheus 的控制台的集成中心页创建集成云监控集成任务,在云产品选择时选择 MySQL 产品。创建成功等集成任务处于 ready 状态便可在 VMP 控制台的 Explore 页查询到对应的云产品的指标数据。
统一监控“导入”最佳实践
通过使用托管 Prometheus 的开箱即用的云产品监控集成能力,可实现业务数据和基础资源数据的统一监控。同时,还可以借助托管 Prometheus 与 Grafana 的天然兼容性,使用 Grafana 搭建业务相关的大盘。并且,在 VMP 控制台提供了丰富的预置大盘、预置告警模版、以及自定义 Explorer 和告警管理能力,用户通过一个入口就能对业务状态进行监控。
创建 VMP Workspace 实例
在 VMP 控制台根据指标存储时长进行 Workspace 规格的选择后创建 Workspace 实例,便可获得一个兼容原生 Prometheus 指标读写的存储抽象实例。
指标与工作区绑定
在使用支持云产品监控原生集成的云服务时,将指标运维数据写入入口与 Workspace 绑定,以 VKE 为例如下。
使用云监控集成能力
使用云监控的集成能力监控其余云产品。在 VMP 控制台中创建云监控基础任务,并指定所需监控的云产品。
指标查询&告警管理
在 VMP 控制台可以看到不同产品提供的丰富的预置大盘和告警模版,也可以通过指定指标写入的 Workspace 进行看板查看,并配置告警规则。
为进一步细分同一告警的紧急程度,用户可通过配置多等级及多通知渠道的告警通知策略,并将其绑定在告警规则上。
目前支持的告警等级包括 P0、P1 和 P2;告警通知渠道包括通用 Webhook、邮件、钉钉、微信、电话等。如若已提供的告警模版不能满足业务更精细化的告警能力,还可以通过手动创建适合用户场景的告警规则。
火山引擎托管 Prometheus 服务提供免运维、低成本、高可用、高性能的时序数据库底座,通过与云上产品深度集成,提供开箱即用的采集、监控、告警能力,并支持自定义可视化指标包括大盘和告警配置,可满足用户统一监控的需求。欢迎 使用。
🔗 相关链接
[1] 火山引擎: www.volcengine.com
[2] 托管 Prometheus 控制台: www.volcengine.com/product/vmp