Skip to main content
本页是 Dify Enterprise 通过数据推送发出的全部遥测信号的字段级参考。推送服务的配置与运维见 数据推送。

快速检索与排查指南

不必逐行阅读所有字典表。请根据实际的可观测性诊断需求,直接查阅对应信号层级。

场景与信号映射表

遥测数据流向与系统路由

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)

调用链路完整呈现了单次调用的时序与嵌套拓扑。OTel trace_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)
工作流级别的 dify.tokens.total 已包含所有 node_execution 的 token。查询时通过 operation_type 过滤,避免重复计算。
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.run
  • dify.event.signal: span_detail
  • trace_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.draft
  • dify.event.signal: span_detail
  • trace_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。