Prometheus 与 Operator 架构
Prometheus 架构

各组件职责:
- pushgateway:用来接收业务推送的数据,形成 metrics 接口。
- exporter:用来监控组件(三方中间件)并形成 metrics 接口的组件的统称,负责收集目标对象(host、container…)的性能数据,并通过 HTTP 接口供 Prometheus Server 获取。
- Prometheus Server:Prometheus 的核心,相当于时间序列数据库,负责从 Exporter 拉取和存储监控数据,并提供一套灵活的查询语言(PromQL)供用户使用。Prometheus Server 本身也提供了自己的 metrics 接口。
- Alertmanager:报警装置(Prometheus 配置报警事件的采集规则,Alertmanager 配置报警信息的发送规则)。用户可以定义基于监控数据的告警规则,规则会触发告警。一旦 Alertmanager 收到告警,会通过预定义的方式发出告警通知。
- Grafana:监控可视化报表组件。不仅支持 Prometheus,还支持很多三方数据库。
Prometheus Operator 架构

各组件职责:
Operator
Operator 即 Prometheus Operator,在 Kubernetes 中以 Deployment 运行。其职责是部署和管理 Prometheus Server,根据 ServiceMonitor 动态更新 Prometheus Server 的监控对象。
Prometheus Server
Prometheus Server 会作为 Kubernetes 应用部署到集群中。为了更好地在 Kubernetes 中管理 Prometheus,CoreOS 的开发人员专门定义了一个命名为 Prometheus 类型的 Kubernetes 定制化资源。可以把 Prometheus 看作是一种特殊的 Deployment,它的用途就是专门部署 Prometheus Server。
Service
这里的 Service 就是 Cluster 中的 Service 资源,也是 Prometheus 要监控的对象,在 Prometheus 中叫做 Target。每个监控对象都有一个对应的 Service。比如要监控 Kubernetes Scheduler,就得有一个与 Scheduler 对应的 Service。Kubernetes 集群默认没有这个 Service,Prometheus Operator 会负责创建。
ServiceMonitor
Operator 能够动态更新 Prometheus 的 Target 列表,ServiceMonitor 就是 Target 的抽象。比如想监控 Kubernetes Scheduler,用户可以创建一个与 Scheduler Service 相映射的 ServiceMonitor 对象。Operator 则会发现这个新的 ServiceMonitor,并将 Scheduler 的 Target 添加到 Prometheus 的监控列表中。
ServiceMonitor 也是 Prometheus Operator 专门开发的一种 Kubernetes 定制化资源类型。
Alertmanager
除了 Prometheus 和 ServiceMonitor,Alertmanager 是 Operator 开发的第三种 Kubernetes 定制化资源。可以把 Alertmanager 看作是一种特殊的 Deployment,它的用途就是专门部署 Alertmanager 组件。
与代码一致:本平台监控相关 CRD 与组件部署清单位于
install/kubernetes/prometheus/,包括operator/(Operator + CRD)、prometheus/(Prometheus Server + rules + secret)、alertmanater/(Alertmanager)、servicemonitor/(各类 ServiceMonitor)等子目录,统一部署在monitoring命名空间。