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

Docker Compose部署Prometheus未采集Dapr指标,Grafana无数据

Dapr指标无法在Grafana仪表盘加载的问题排查

问题概述

在Docker Compose环境中配置了Prometheus采集Dapr指标,但Grafana仪表盘始终显示“NO DATA”。推测核心问题是Prometheus未正确配置Dapr指标采集目标。

Docker Compose配置

prometheus:
  image: prom/prometheus:latest
  ports:
    - "9090:9090"
  volumes:
    - ./prometheus.yml:/etc/prometheus/prometheus.yml

grafana:
  image: grafana/grafana:8.3.3
  container_name: grafana
  ports:
    - "3000:3000"
  volumes:
    - ./grafana/dashboards.yml:/etc/grafana/provisioning/dashboards/rabbitmq.yaml
    - ./grafana/datasources.yml:/etc/grafana/provisioning/datasources/prometheus.yaml
    - ./grafana/dashboards:/dashboards
    - ./grafana-plugins:/var/lib/grafana/plugins:rw

prometheus.yml配置

global:
  scrape_interval: 15s
  scrape_timeout: 10s

alerting:
  alertmanagers:
    - static_configs:
        - targets:

rule_files:

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'dapr'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'cadvisor'
    static_configs:
      - targets: ['cadvisor:8080']
        labels:
          alias: 'cadvisor'

Grafana配置情况

已在Grafana中配置指向http://prometheus:9090的名为“dapr”的数据源,仪表盘面板指定使用该数据源,但仍显示无数据。仪表盘示例配置片段如下:

{
  "annotations": {
    "list": [
      {
        "builtIn": 1,
        "datasource": "-- Grafana --",
        "enable": true,
        "hide": true,
        "iconColor": "rgba(0, 211, 255, 1)",
        "limit": 100,
        "name": "Annotations & Alerts",
        "showIn": 0,
        "type": "dashboard"
      }
    ]
  },
  "editable": true,
  "gnetId": null,
  "graphTooltip": 0,
  "id": 3,
  "iteration": 1607134134143,
  "links": [],
  "panels": [
    {
      "collapsed": false,
      "datasource": "dapr",
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 0
      },
      "id": 16,
      "panels": [],
      "title": "Health monitor",
      "type": "row"
    },
    {
      "cacheTimeout": null,
      "datasource": "dapr",
      "description": "This shows the uptime"
    }
  ]
}

核心问题分析与解决步骤

1. 修正Prometheus的Dapr采集目标配置

当前prometheus.yml中dapr job的targets配置为localhost:9090,这是错误的:

  • 在Docker容器内部,localhost指向容器自身,而非运行Dapr的容器/服务。
  • Dapr sidecar默认指标端口为9090,需将目标地址改为Dapr所在服务的容器名/服务名(Docker Compose网络内可直接访问),例如:
    - job_name: 'dapr'
      scrape_interval: 5s
      static_configs:
        - targets: ['your-dapr-service-name:9090']
    
    替换your-dapr-service-name为实际运行Dapr的服务在Docker Compose中的服务名称。

2. 确认Dapr已启用指标采集

启动Dapr时需确保开启指标功能:

  • 使用命令行启动时添加参数:dapr run --enable-metrics ...
  • 若使用配置文件,需在config.yaml中添加:
    metrics:
      enabled: true
    

3. 验证Prometheus采集状态

  • 访问Prometheus UI(http://localhost:9090),进入Targets页面,检查dapr job的状态是否为UP:
    • 若为DOWN,进入Prometheus容器内部测试连通性:
      docker exec -it <prometheus-container-id> curl <dapr-target>:9090/metrics
      
      若无法获取指标数据,需检查Dapr服务的网络连通性及端口是否开放。
  • 进入Graph页面,输入dapr_开头的指标(如dapr_http_server_requests_total),确认是否有数据返回。

4. 检查Grafana配置细节

  • 确认数据源“dapr”的测试连接成功,且地址http://prometheus:9090在Docker Compose网络内可访问。
  • 检查仪表盘面板的时间范围是否合理(建议选择最近15分钟,匹配Prometheus的采集间隔)。
  • 确认面板查询的指标名称与Dapr实际暴露的指标一致(可通过Prometheus的/metrics端点查看完整指标列表)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 04:01:19