dify生产环境监控需通过prometheus采集其/metrics端点指标并用grafana可视化,启用需设置enable_metrics=true,支持静态配置或k8s服务发现,可选部署exporter增强维度,最后导入看板并配置告警。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当Dify在生产环境中出现响应变慢、请求失败或Token用量突增却无法定位源头时,必须让系统“说出”它的状态——这要求将Dify的运行指标实时接入Prometheus,并通过Grafana可视化呈现,形成可量化、可告警、可下钻的监控闭环。整个过程不依赖修改Dify源码,而是基于其暴露的/metrics端点与标准OpenMetrics协议完成对接。
确认Dify是否已启用指标暴露功能
默认Dify镜像(v0.7.0+)已内置Prometheus兼容的metrics中间件,但需显式启用。检查Dify服务启动时是否设置了环境变量 【ENABLE_METRICS=true】;若未设置,容器启动后/metrics路径将返回404,后续所有采集均失效。
验证方式:curl http://your-dify-api-host: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中新增抓取任务
- 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,将告警推送至企业微信或钉钉群。
这一步完成后,Grafana仪表盘将实时显示Dify各维度运行状态,告警规则开始生效。











