参考资料
- Prometheus Operator 提供 Kubernetes 原生的 Prometheus 及相关监控组件的部署和管理
Prometheus Operator 会检测以下 CRD 的变更
- Prometheus 定义所需的 Prometheus 部署
PrometheusAgent 以 agent 模式运行,隐藏部分配置选项
- PrometheusRules selectors
- alerting
- remote-read, storage, Thanos sidecars
- 保证数据流转到中央节点
- PrometheusRule 定义一组所需的 Prometheus 警报和/或记录规则
- ThanosRuler 定义所需的 Thanos Ruler 部署
- Alertmanager 定义所需的 Alertmanager 部署
- AlertmanagerConfig 以声明方式指定 Alertmanager 配置,允许将警报路由到自定义接收器,并设置抑制规则
- scrape 相关 CRD,详见后续介绍
- ScrapeConfig
- ServiceMonitor
- PodMonitor
- Probe
scrape 相关的 CRD 会匹配选定的监控对象并自动生成 Prometheus 抓取配置
ScrapeClass 定义适用于所有抓取资源的通用配置设置
- 适用于 PodMonitor, ServiceMonitor, ScrapeConfig, Probe
- 如果已经有了对应字段会合并,优先采用抓取资源显式定义的值
样例:TLS 配置
在抓取资源中引用 ScrapeClass
ScrapeConfig 指定要添加到 Prometheus 的抓取配置
- 参考文档
- Prometheus CRD 配置
scrapeConfigSelector字段来确定使用哪些 ScrapeConfig
支持外部目标发现
静态服务发现
文件服务发现
设置如下 Configmap
还需要挂载对应 Configmap 到 Prometheus CRD
HTTP 服务发现
- DNS 服务发现
- Kubernetes 服务发现
- 由云服务商提供的服务发现
ServiceMonitor 通过 selector 匹配要监控的一组 EndpointSlice 或 Endpoints 对象
- Prometheus CRD 配置
serviceMonitorSelector字段来确定使用哪些 ServiceMonitor
PodMonitor 通过 selector 匹配要监控的一组 Pod
- Prometheus CRD 配置
podMonitorSelector字段来确定使用哪些 PodMonitor
Probe 通过 selector 匹配要监控的 ingress 或者静态 target
- Prometheus CRD 配置
probeSelector字段来确定使用哪些 Probe
- 还需要一个 prober 来负责具体实现监控目标并提供指标供 Prometheus 抓取
- 通常由 blackbox-export 实现
可以通过 admissionwebhook 验证配置是否有效
- 用于验证 PrometheusRule, AlertmanagerConfig 对象
- Author:白鸟3
- URL:https://blog.kun2peng.top/operation/prometheus_operator
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
