Prometheus 监控 Kubernetes Pod 的核心是通过 Kubernetes API 动态发现目标,推荐使用 PodMonitor CRD 声明式配置,或通过 kubernetes_sd_configs 主动服务发现;需确保 Pod 正确暴露指标端点、标签匹配、RBAC 权限完备,并在 Prometheus UI 中验证 Targets 状态。
Prometheus 监控 Kubernetes 中的 Pod,核心是让 Prometheus 自动发现并持续采集 Pod 暴露的指标端点。它不依赖手动写死地址,而是靠 Kubernetes API 动态感知 Pod 生命周期变化——Pod 创建、销毁、迁移时,监控目标自动更新。
这是最推荐的方式,尤其适合用 Prometheus Operator 部署的集群。PodMonitor 是一个自定义资源(CRD),它直接按标签匹配 Pod,并指定指标路径和端口。
/metrics,文本格式或 OpenMetrics)app.kubernetes.io/name: my-app
selector.matchLabels 和 podMetricsEndpoints.port(如 metrics)namespaceSelector 显式授权跨命名空间发现适用于未使用 Operator 的轻量部署,或需快速验证场景。Prometheus 主动轮询 API Server 获取 Pod 列表,再根据规则过滤和重标。
scrape_configs 中配置 role: pod
relabel_configs 过滤目标,例如只抓带 prometheus.io/scrape=true 注解的 Pod__metrics_path__ 和 __address__
__meta_kubernetes_pod_annotation_prometheus_io_port 指定抓取端口,__meta_kubernetes_pod_phase 可排除 Failed 或 Pending 状态 Pod监控能生效的前提,是 Pod 内容器真正提供可访问的指标接口。
promhttp)或 sidecar 注入(如 prometheus-node-exporter 不适用 Pod 级,但 process-exporter 可以)ports 中声明,且名称匹配 PodMonitor 或 relabel 中指定的 port 名/metrics,必须在 PodMonitor 的 path 字段或 relabel 中显式设置配置完成后,别跳过验证环节——很多问题出在“看似配了,实则没采到”。
curl http://<pod-ip>:<port>/metrics)CrashLoopBackOff(根本没起来)、指标端口未在容器 ports 定义、标签不匹配、RBAC 权限不足(Prometheus ServiceAccount 缺少 list/watch pods 权限)count by(job, instance) ({__name__=~".+"}) 看是否有时间序列写入,再逐步缩小范围