Prometheus指标kube_pod_container_status_running随机消失求助
问题描述
Kubernetes集群中运行多个Pod,通过Prometheus配置了基于kube_pod_container_status_running指标的告警。3月3日部署采集配置后指标正常运行一天,3月6日该指标突然消失。已尝试重启Pod、将scrape_timeout从默认10s调整至40s,均未解决问题。当前Pod运行无报错,Prometheus Pod日志也无错误信息,且相同配置在另一环境运行正常。
现有Prometheus采集配置
- job_name: kubernetes-service-endpoints metric_relabel_configs: - source_labels: [__name__] regex: kube_pod_container_status_running action: keep - source_labels: [ pod ] target_label: kubernetes_pod_name action: replace honor_timestamps: true scrape_interval: 1m scrape_timeout: 10s metrics_path: /metrics scheme: http kubernetes_sd_configs: - role: endpoints relabel_configs: - source_labels: [ __meta_kubernetes_service_annotation_prometheus_io_scrape ] separator: ; regex: "true" replacement: $1 action: keep - source_labels: [ __meta_kubernetes_service_annotation_prometheus_io_scheme ] separator: ; regex: (https?) target_label: __scheme__ action: replace - source_labels: [ __meta_kubernetes_service_annotation_prometheus_io_path ] separator: ; regex: (.+) target_label: __metrics_path__ action: replace - source_labels: [ __address__, __meta_kubernetes_service_annotation_prometheus_io_port ] separator: ; regex: ([^:]+)(?::\d+)?;(\d+) target_label: __address__ action: replace - separator: ; regex: __meta_kubernetes_service_label_(.+) action: labelmap - source_labels: [ __meta_kubernetes_namespace ] separator: ; regex: (.*) target_label: kubernetes_namespace action: replace - source_labels: [ __meta_kubernetes_service_name ] separator: ; regex: (.*) target_label: kubernetes_name action: replace - source_labels: [ __meta_kubernetes_pod_node_name ] separator: ; regex: (.*) target_label: kubernetes_node action: replace
排查建议
- 检查kube-state-metrics状态:
kube_pod_container_status_running指标来自kube-state-metrics,先确认kube-state-metrics Pod是否正常运行、是否有重启记录,查看其日志是否有异常输出。 - 验证服务发现结果:在Prometheus UI的「Service Discovery」页面找到
kubernetes-service-endpointsjob,查看是否包含kube-state-metrics的端点,确认标签__meta_kubernetes_service_annotation_prometheus_io_scrape是否为true。 - 检查relabel规则生效情况:在Prometheus UI的「Targets」页面,查看
kubernetes-service-endpointsjob下的kube-state-metrics目标,检查标签是否正确映射,比如是否保留了pod标签(用于后续metric_relabel替换)。 - 直接抓取kube-state-metrics端点:在Prometheus Pod内或集群内执行
curl <kube-state-metrics-service-ip>:8080/metrics | grep kube_pod_container_status_running,确认指标是否存在于原始metrics输出中。 - 检查资源权限:确认Prometheus ServiceAccount是否有权限访问kube-state-metrics的端点,以及是否有权限获取Pod、Service等资源的元数据(排查RBAC规则是否在3月6日前后被修改)。
- 查看集群事件:查询3月6日前后的Kubernetes事件,排查是否有kube-state-metrics相关的调度问题、网络策略变更、Service/Endpoint对象修改等情况。
- 对比环境差异:找出当前环境与正常环境的不同点,比如kube-state-metrics版本、Prometheus版本、Kubernetes版本、网络插件配置、RBAC规则等。
内容的提问来源于stack exchange,提问作者Anza
相关产品推荐
相关产品推荐

