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
相关产品推荐
相关产品推荐

