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

Traefik 2.1.6接入Prometheus监控无数据问题排查求助

问题分析与解决方案

咱们先拆解你遇到的两个核心问题:Prometheus无法抓取到Traefik指标,以及Grafana面板适配旧版Traefik指标导致无数据,一步步来解决:

1. 先解决Prometheus抓取不到指标的问题

你已经确认Pod内部能通过curl 172.30.184.11:8080/metrics拿到数据,说明Traefik的metrics服务本身是正常的,问题出在Prometheus的抓取链路或配置上:

检查Prometheus的自动发现配置

你给Traefik Service加了prometheus.io/scrape: 'true'和prometheus.io/port: '8080'注解,但要确保你的Prometheus实例已经启用了基于Kubernetes Service注解的自动发现。

  • 如果是Helm安装的Prometheus,需要在values.yaml里开启Service自动发现:
    kubeServiceDiscovery:
      enabled: true
    
  • 如果是自定义Prometheus配置,要确保scrape_configs里包含如下规则:
    scrape_configs:
      - job_name: 'kubernetes-services'
        kubernetes_sd_configs:
          - role: service
        relabel_configs:
          - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
            action: keep
            regex: true
          - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_port]
            action: replace
            target_label: __address__
            regex: ([^:]+)(?::\d+)?;(\d+)
            replacement: $1:$2
    

验证Prometheus的服务发现状态

登录Prometheus UI,进入Status -> Service Discovery,搜索traefik相关条目:

  • 如果没有找到traefik的target:说明自动发现配置未生效,检查上述配置是否正确应用
  • 如果有target但状态为down:检查集群是否有网络策略阻止Prometheus访问Traefik的8080端口,或者确认Traefik Service的selector和Pod标签匹配(你的配置里app: traefik是匹配的,这部分没问题)

2. 解决Grafana面板无数据的问题

你使用的Grafana面板(gnetId: 9682)是针对Traefik 1.x设计的,而你用的是Traefik 2.1.6,两者指标名称完全不兼容:

  • Traefik 1.x指标:traefik_backend_requests_total
  • Traefik 2.x指标:traefik_service_requests_total(对应服务请求)、traefik_entrypoint_requests_total(对应入口请求)

你有两个修复选项:

选项一:替换为Traefik 2.x兼容的面板

直接导入Grafana官方推荐的Traefik 2.x监控面板(ID:12756),它原生适配2.x的指标体系,无需手动修改查询语句。

选项二:手动修改现有面板的PromQL查询

把面板里的旧指标替换为2.x的对应指标,比如:

  • 原查询:sum(traefik_backend_requests_total{k8scluster =~ "^$Cluster$", backend=~"^$backend$"}) by (backend)
    替换为:sum(traefik_service_requests_total{k8scluster =~ "^$Cluster$", service=~"^$backend$"}) by (service)
  • 同时把面板变量backend的查询语句从label_values({k8scluster="$Cluster"},backend)改为label_values({k8scluster="$Cluster"},service)

3. 额外的Traefik配置优化

你的启动参数里有几个和Traefik 2.x不匹配的地方,虽然不影响metrics,但建议修正:

  • 去掉--web参数:Traefik 2.x启用Dashboard需要用--api.dashboard=true,如果需要开放API端点,测试环境可加--api.insecure=true(生产环境建议用安全认证方式)
  • 确认traefik.yaml配置文件里没有和启动参数冲突的设置,比如是否误禁用了Prometheus metrics

最后,修改完配置后重启Prometheus和Traefik DaemonSet,等待几分钟再检查指标数据即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:17:53