快速检索与排查指南
不必逐行阅读所有字典表。请根据实际的可观测性诊断需求,直接查阅对应信号层级。场景与信号映射表
遥测数据流向与系统路由
Dify 导出的遥测信号完全遵循 OpenTelemetry 规范,可通过标准 OTel Collector 进行拆分与路由:传输规则与通用属性
资源属性(Resource Attributes)
附加在每一个导出的 OTel 信号上的全局通用环境信息:链路与实体定位通用属性
Span 上使用带dify. 前缀的形式;指标标签与日志中的关联键(trace_id、span_id、tenant_id、user_id)使用无前缀形式。表中并列两个名称的行即为这类成对字段。
三个
apprunner.* 属性适用于部署环境的工作流 Span(dify.workflow.run)、节点 Span(dify.node.execution)及其伴随日志,不作为指标标签。
OTel 与 Prometheus 命名转换规则
OTel 标准信号在接入 Prometheus 后会自动转换为下划线格式:Counter 增加_total 后缀;Histogram 会生成 _bucket、_sum 和 _count 序列,并追加单位后缀(单位为 s 的指标追加 _seconds),见下表示例。下表为常见指标的命名转换示例,其余指标遵循相同规则。
空值与内容门控规则
- 空值行为:在 Trace Span 中未赋值的属性将被直接省略;在结构化日志 JSON 输出中则显式展示为
null。 - 内容门控机制:包含敏感文本的属性(如 Input/Output/Query/Prompt)由部署侧的
ENTERPRISE_INCLUDE_CONTENT设置门控。内容推送关闭(默认)时,原文会被格式化引用字符串替代(如ref:{id_type}={uuid}),而不会被替换为null。 - 高基数警示:
tenant_id、app_id、trace_id属于高基数(High-Cardinality)维度,请勿将无限制的文本字段作为 Prometheus 标签存储。
链路追踪(Traces & Spans)
调用链路完整呈现了单次调用的时序与嵌套拓扑。OTeltrace_id 由业务运行 ID 确定性推导,同一次运行的所有信号共享同一个值,在 Jaeger / Tempo 中按它检索。
dify.trace_id 属性保存原始业务 UUID(如工作流运行 ID),用于与业务数据关联。
dify.workflow.run
dify.node.execution
dify.node.execution.draft
属性与dify.node.execution 相同,但仅在用户于画布中点击「单节点测试」或「草稿预览运行」时产生,用于分离生产与测试遥测数据。
监控指标(Metrics)
计数器(Counter)
所有计数器都是累积的,且不参与采样:链路采样率(ENTERPRISE_OTEL_SAMPLING_RATE,详见 环境变量参考)不影响计数器。
token 计数器
标签(Labels):
tenant_id、app_id、operation_type、model_provider、model_name、node_type(仅 node_execution)
token 层级与查询模式
token 指标在多个层级发出。理解层级结构可以防止重复计算:
workflow token 已经包含了所有 node_execution 的 token。切勿将两者相加。
- token 指标上的可用标签:
tenant_id、app_id、operation_type、model_provider、model_name、node_type。 - 应用名称 仅存在于链路侧:见「Span 伴随日志」一节中的
dify.app.name字段,不作为指标标签;指标查询使用app_id。 - 费用:仅在节点伴随日志的
dify.node.total_price字段提供(见「Span 伴随日志」),没有对应指标。
请求计数器
type 标签标识操作类型(如 dify_requests_total{type="workflow"}),其余标签随 type 而异:
错误计数器
错误计数器同样使用
type 标签,其余标签随 type 而异:
其他计数器
直方图(Histograms)
Counter 只能计算平均值,而平均值会被极端值扭曲。Histogram 支持计算 P50 / P95 / P99 分位数,更准确地描述实际分布。Prometheus 中每个 Histogram 展开为三类序列:
_bucket / _sum / _count。低流量时间窗中 P95/P99 可能返回 NaN,建议扩大时间窗口。当耗时集中在 5 秒以内时(如 TTFT 或工具调用),分位数精度有限,如需高精度评估,建议延长查询窗口或联系 Dify 团队获取 bucket 配置说明。结构化日志(Structured Logs)
结构化日志提供业务明细数据。日志分为两类:Span 伴随日志与独立业务日志。ENTERPRISE_OTEL_SAMPLING_RATE 仅影响发送到 Trace 后端(Jaeger/Tempo)的 Span 数量。结构化日志(span_detail、metric_only)始终以 100% 的频率写入 Pod 标准输出,不受采样率控制。Span 伴随日志(Span Companion Logs)
伴随 Span 的日志。信号类型:span_detail。这类日志与 Trace Span 强绑定(共享 trace_id 和 span_id),包含内容门控控制的详细上下文:
dify.workflow.run 伴随日志
通用属性:所有 Span 属性(见 Traces 部分)加上: 事件属性:dify.event.name:dify.workflow.rundify.event.signal:span_detailtrace_id、span_id、tenant_id、user_id
dify.node.execution 和 dify.node.execution.draft 伴随日志
通用属性:所有 Span 属性(见 Traces 部分)加上: 事件属性:dify.event.name:dify.node.execution或dify.node.execution.draftdify.event.signal:span_detailtrace_id、span_id、tenant_id、user_id
独立日志(Standalone Logs)
没有结构化 Span 的日志。信号类型为metric_only:事件只产生指标与这条日志,没有对应的 Span。
dify.message.run
dify.tool.execution
dify.moderation.check
dify.suggested_question.generation
dify.dataset.retrieval
dify.generate_name.execution
dify.prompt_generation.execution
dify.app.created
dify.app.updated
dify.app.deleted
dify.feedback.created
dify.telemetry.rehydration_failed
遥测管道健康诊断事件:缓冲的遥测载荷无法重建(rehydrate)处理时发出。持续出现说明遥测数据在丢失。内容门控属性(Content-Gated Attributes)
以下字段包含用户输入、模型输出、文档内容、工具参数或反馈内容。 仅当部署侧开启内容推送(ENTERPRISE_INCLUDE_CONTENT,默认 false,详见 环境变量参考)时才会发送原始值;关闭时这些属性被替换为 ref:{id_type}={uuid}。
id_type 为关联实体名(如 workflow_run_id、node_execution_id、message_id),凭该 ID 在 Dify 数据库中查询对应记录即可取回原文。
dify.node.execution.draft 的门控字段与 dify.node.execution 相同。
附录
操作类型
workflow、node_execution、message、rule_generate、code_generate、structured_output、instruction_modify
以上取值属于 token 指标的 operation_type 标签与 dify.prompt_generation.operation_type。请求与错误计数器使用独立的 type 标签,取值见「计数器」一节。
节点类型
start、end、answer、llm、knowledge-retrieval、knowledge-index、if-else、code、template-transform、question-classifier、http-request、tool、datasource、variable-aggregator、loop、iteration、parameter-extractor、assigner、document-extractor、list-operator、agent、trigger-webhook、trigger-schedule、trigger-plugin、human-input
工作流状态
running、succeeded、failed、stopped、partial-succeeded、paused
载荷类型
workflow、node、message、tool、moderation、suggested_question、dataset_retrieval、generate_name、prompt_generation、app、feedback
Invoke From 取值
- 工作流 Span(
dify.workflow.run上的dify.invoke_from):api、webapp、debug - 消息日志(
dify.message.run上的dify.invoke_from):service-api、web-app、debugger、explore
空值行为
- Spans:具有空值的属性将被省略。
- Logs:具有空值的属性在 JSON 中显示为
null。 - Content-Gated:被替换为引用字符串,而不是设置为
null。