You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prometheus未采集自定义K8s应用指标问题排查求助

排查Prometheus无法发现自定义应用指标的问题

核心配置不匹配问题

从你提供的配置看,存在两个直接导致Prometheus无法发现目标的匹配错误:

  1. ServiceMonitor标签选择器与Service标签不匹配
    ServiceMonitor的spec.selector.matchLabels指定了app: producer-app,但你的Service标签里并没有这个键值对,只有app.kubernetes.io/name: app、app.kubernetes.io/instance: producer这类标准标签。Prometheus依赖ServiceMonitor的selector定位目标Service,标签不匹配就无法建立关联。

  2. ServiceMonitor端点端口配置错误
    ServiceMonitor的endpoints[0].port填的是端口号"5000",但Service定义的端口名称是http。Prometheus要求此处填写端口名称(而非端口号),因为端口号可能变动,而名称是固定的标识。

修复配置方案

修改后的ServiceMonitor配置

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: producer-app-monitor
  namespace: default
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: app  # 匹配Service的对应标签
      app.kubernetes.io/instance: producer  # 可选,进一步精准匹配
  endpoints:
  - port: "http"  # 使用Service定义的端口名称
    path: /metrics
    interval: 15s

额外排查点(若修改后仍未解决)

  • Prometheus的命名空间扫描权限:kube-prometheus-stack默认的Prometheus可能仅监控特定命名空间,检查Prometheus资源的spec.serviceMonitorNamespaceSelector是否允许扫描default命名空间,或spec.serviceMonitorSelector是否匹配你的ServiceMonitor标签(若有额外标签)。
  • Service端点可达性:在Prometheus所在Pod内执行curl producer-app.default.svc.cluster.local:5000/metrics,确认能正常获取指标,排除网络或应用本身的问题。
  • ServiceMonitor状态:执行kubectl describe servicemonitor producer-app-monitor -n default,查看Events和Status字段,确认无报错信息。

内容的提问来源于stack exchange,提问作者sneedster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 00:16:01