游乐游手机版
首页/AI热点日报/热点详情

如何将Dify运行指标接入Prometheus与Grafana进行监控详细步骤

类型:热点整理2026-07-06
通过设置环境变量开启Dify的 metrics端点,再配置Prometheus抓取指标,支持单实例或Kubernetes动态发现。此外可部署Exporter获取更细粒度Token消耗数据。最后导入Grafana看板并配置告警规则,从而实现实时监控与异常告警闭环。

在生产环境中,当Dify突然变慢、请求频繁报错、或者Token用量疯狂飙升却找不到源头的时候,那种无力感确实让人头疼。这时候,你得让系统自己“交代”状态——通过Prometheus实时抓取Dify的指标,然后在Grafana上一目了然地呈现出来,形成一个可量化、能告警、还能下钻排查的监控闭环。整个过程不需要改Dify的源码,全靠它本身暴露的/metrics端点和标准的OpenMetrics协议来对接。

确认Dify是否已启用指标暴露功能

默认情况下,Dify v0.7.0以上的镜像其实已经内置了Prometheus兼容的metrics中间件,但不会自动开启。你得让系统知道要暴露这些指标——设置环境变量 【ENABLE_METRICS=true】。如果没设置,容器启动后访问/metrics路径会直接返回404,后续的采集动作全都白搭。

验证方法很简单:在能访问Dify API服务的机器上执行 curl http://你的-dify-api地址:8080/metrics。如果返回的内容里包含类似 # HELP http_request_duration_seconds HTTP请求处理耗时分布 的OpenMetrics文本,那就说明指标已经成功暴露了。

配置Prometheus抓取Dify指标

方法一:静态配置(适用于单实例或测试环境)

如果只是单实例或者测试环境玩一玩,静态配置足够了。编辑 prometheus.yml,在 scrape_configs 下添加以下内容:

- job_name: 'dify-api'
  static_configs:
  - targets: ['dify-api:8080']
    labels:
      app: 'dify'
      env: 'prod'

需要注意:target地址必须跟Prometheus所在网络能直连。Docker Compose环境下可以直接用服务名,K8s里要用Service的完整DNS名(比如 dify-api.default.svc.cluster.local)。

方法二:Kubernetes动态发现(推荐用于生产集群)

生产集群规模大了以后,用Pod标签自动发现Dify实例会更省心:

- job_name: 'dify-otel'
  kubernetes_sd_configs:
  - role: pod
    selectors:
    - matchExpressions:
      - key: app.kubernetes.io/name
        operator: In
        values: [dify-api]
  metrics_path: '/metrics'
  relabel_configs:
  - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance]
    target_label: instance
  - source_labels: [__meta_kubernetes_pod_container_name]
    target_label: container

这种配置确保了只抓取带 app.kubernetes.io/name=dify-api 标签的Pod,不会误采其他服务的指标。

部署并验证Dify Exporter(可选增强方案)

Dify原生的/metrics端点虽然够用,但如果你需要更细粒度的维度——比如按模型、按应用名、按LLM provider拆分Token消耗——那就得引入一个独立的Exporter来补全这个短板。

第一步:启动Dify Exporter服务,执行以下命令:

docker run -d --name dify-exporter \
  -p 9876:9876 \
  -e DIFY_API_URL=http://dify-api:8080 \
  -e DIFY_API_KEY=sk-xxx \
  ghcr.io/dify-ai/exporter:latest

第二步:在Prometheus中新增一个抓取任务,指向这个Exporter:

- job_name: 'dify-exporter'
  static_configs:
  - targets: ['dify-exporter:9876']

这个Exporter会主动调用Dify的Admin API,拉取应用级的统计信息,然后转换为Prometheus格式的指标,比如 dify_app_token_usage_total{app_name="hr-bot",model="gpt-4o"}。这样一来,你就能看到每个应用、每个模型的具体消耗情况了。

导入Grafana看板并配置核心告警

① 先到Grafana里添加一个Prometheus数据源,URL填 http://prometheus:9090(或者你实际的地址)。

② 导入官方提供的Dify Dashboard(ID: 21872),这个看板里已经预置了“每秒Token消耗TOP5模型”“P95请求延迟趋势”“缓存命中率变化”这些关键视图,不需要自己从头画。

③ 配置告警规则——在Prometheus的 alerts.yml 中添加以下内容:

- alert: DifyHighTokenUsage
  expr: sum(increase(dify_token_usage_total[1h])) > 1000000
  for: 5m
  labels:
    severity: critical
  annotations:
    summary: "Token usage exceeded 1M in last hour"

④ 启用Alertmanager,配置好企业微信或钉钉的webhook,这样告警就能直接推送到你日常用的群里。

完成这一步之后,Grafana仪表盘就可以实时展示Dify各个维度的运行状态,告警规则也开始生效了。整个监控链路跑通后,无论是性能瓶颈还是资源异常,都能第一时间感知并快速定位。

来源:https://www.php.cn/faq/2775195.html?uid=1589237

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。