资源属性 (Resource Attributes)
附加到每个信号(Span、Metric、Log)上。| 属性 | 类型 | 示例 |
|---|---|---|
service.name | string | dify |
host.name | string | dify-api-7f8b |
链路追踪 (Traces / Spans)
dify.workflow.run
| 属性 | 类型 | 描述 |
|---|---|---|
dify.trace_id | string | 业务 Trace ID (工作流运行 ID) |
dify.tenant_id | string | 租户标识符 |
dify.app_id | string | 应用标识符 |
dify.workflow.id | string | 工作流定义 ID |
dify.workflow.run_id | string | 本次运行的唯一 ID |
dify.workflow.status | string | succeeded (成功), failed (失败), stopped (停止) 等 |
dify.workflow.error | string | 失败时的错误信息 |
dify.workflow.elapsed_time | float | 总执行时间(秒) |
dify.invoke_from | string | api, webapp, debug |
dify.conversation.id | string | 会话 ID(可选) |
dify.message.id | string | 消息 ID(可选) |
dify.invoked_by | string | 触发运行的用户 ID |
gen_ai.usage.total_tokens | int | 所有节点的总 Token 数(可选) |
gen_ai.user.id | string | 终端用户标识符(可选) |
dify.parent.trace_id | string | 父工作流 Trace ID(可选) |
dify.parent.workflow.run_id | string | 父工作流运行 ID(可选) |
dify.parent.node.execution_id | string | 父节点执行 ID(可选) |
dify.parent.app.id | string | 父应用 ID(可选) |
dify.node.execution
| 属性 | 类型 | 描述 |
|---|---|---|
dify.trace_id | string | 业务 Trace ID |
dify.tenant_id | string | 租户标识符 |
dify.app_id | string | 应用标识符 |
dify.workflow.id | string | 工作流定义 ID |
dify.workflow.run_id | string | 工作流运行 ID |
dify.message.id | string | 消息 ID(可选) |
dify.conversation.id | string | 会话 ID(可选) |
dify.node.execution_id | string | 唯一节点执行 ID |
dify.node.id | string | 工作流图中的节点 ID |
dify.node.type | string | 节点类型(见附录) |
dify.node.title | string | 显示标题 |
dify.node.status | string | succeeded (成功), failed (失败) |
dify.node.error | string | 失败时的错误信息 |
dify.node.elapsed_time | float | 执行时间(秒) |
dify.node.index | int | 执行顺序索引 |
dify.node.predecessor_node_id | string | 触发节点 ID |
dify.node.iteration_id | string | 迭代 ID(可选) |
dify.node.loop_id | string | 循环 ID(可选) |
dify.node.parallel_id | string | 并行分支 ID(可选) |
dify.node.invoked_by | string | 触发执行的用户 ID |
gen_ai.usage.input_tokens | int | 提示词 Token 数(仅限 LLM 节点) |
gen_ai.usage.output_tokens | int | 补全 Token 数(仅限 LLM 节点) |
gen_ai.usage.total_tokens | int | 总 Token 数(仅限 LLM 节点) |
gen_ai.request.model | string | LLM 模型名称(仅限 LLM 节点) |
gen_ai.provider.name | string | LLM 提供商名称(仅限 LLM 节点) |
gen_ai.user.id | string | 终端用户标识符(可选) |
dify.node.execution.draft
属性与dify.node.execution 相同。在预览/调试运行时发出。
计数器 (Counters)
所有计数器都是累积的,并以 100% 的准确率发出。Token 计数器
| 指标 (Metric) | 单位 | 描述 |
|---|---|---|
dify.tokens.total | {token} | 消耗的总 Token 数 |
dify.tokens.input | {token} | 输入 (提示词) Token 数 |
dify.tokens.output | {token} | 输出 (补全) Token 数 |
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。
app_id (Trace 查询 — Tempo / Jaeger):
请求计数器
| 指标 (Metric) | 单位 | 描述 |
|---|---|---|
dify.requests.total | {request} | 总操作次数 |
| 类型 (Type) | 附加标签 |
|---|---|
workflow | tenant_id, app_id, status, invoke_from |
node | tenant_id, app_id, node_type, model_provider, model_name, status |
draft_node | tenant_id, app_id, node_type, model_provider, model_name, status |
message | tenant_id, app_id, model_provider, model_name, status, invoke_from |
tool | tenant_id, app_id, tool_name |
moderation | tenant_id, app_id |
suggested_question | tenant_id, app_id, model_provider, model_name |
dataset_retrieval | tenant_id, app_id |
generate_name | tenant_id, app_id |
prompt_generation | tenant_id, app_id, operation_type, model_provider, model_name, status |
错误计数器
| 指标 (Metric) | 单位 | 描述 |
|---|---|---|
dify.errors.total | {error} | 总失败操作数 |
| 类型 (Type) | 附加标签 |
|---|---|
workflow | tenant_id, app_id |
node | tenant_id, app_id, node_type, model_provider, model_name |
draft_node | tenant_id, app_id, node_type, model_provider, model_name |
message | tenant_id, app_id, model_provider, model_name |
tool | tenant_id, app_id, tool_name |
prompt_generation | tenant_id, app_id, operation_type, model_provider, model_name |
其他计数器
| 指标 (Metric) | 单位 | 标签 |
|---|---|---|
dify.feedback.total | {feedback} | tenant_id, app_id, rating |
dify.dataset.retrievals.total | {retrieval} | tenant_id, app_id, dataset_id, embedding_model_provider, embedding_model, rerank_model_provider, rerank_model |
dify.app.created.total | {app} | tenant_id, app_id, mode |
dify.app.updated.total | {app} | tenant_id, app_id |
dify.app.deleted.total | {app} | tenant_id, app_id |
直方图 (Histograms)
| 指标 (Metric) | 单位 | 标签 |
|---|---|---|
dify.workflow.duration | s | tenant_id, app_id, status |
dify.node.duration | s | tenant_id, app_id, node_type, model_provider, model_name, plugin_name |
dify.message.duration | s | tenant_id, app_id, model_provider, model_name |
dify.message.time_to_first_token | s | tenant_id, app_id, model_provider, model_name |
dify.tool.duration | s | tenant_id, app_id, tool_name |
dify.prompt_generation.duration | s | tenant_id, app_id, operation_type, model_provider, model_name |
结构化日志 (Structured Logs)
Span 伴随日志 (Span Companion Logs)
伴随 Span 的日志。信号类型:span_detail。
dify.workflow.run 伴随日志
通用属性: 所有 Span 属性(见 Traces 部分)加上: 事件属性:dify.event.name:dify.workflow.rundify.event.signal:span_detailtrace_id,span_id,tenant_id,user_id
| 附加属性 | 类型 | 始终存在 | 描述 |
|---|---|---|---|
dify.app.name | string | 否 | 应用显示名称 |
dify.workspace.name | string | 否 | 工作区显示名称 |
dify.workflow.version | string | 是 | 工作流定义版本 |
dify.workflow.inputs | string/JSON | 是 | 输入参数(受内容门控控制) |
dify.workflow.outputs | string/JSON | 是 | 输出结果(受内容门控控制) |
dify.workflow.query | string | 否 | 用户查询文本(受内容门控控制) |
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
| 附加属性 | 类型 | 始终存在 | 描述 |
|---|---|---|---|
dify.app.name | string | 否 | 应用显示名称 |
dify.workspace.name | string | 否 | 工作区显示名称 |
dify.invoke_from | string | 否 | 调用来源 |
gen_ai.tool.name | string | 否 | 工具名称(仅限工具节点) |
dify.node.total_price | float | 否 | 成本(仅限 LLM 节点) |
dify.node.currency | string | 否 | 货币代码(仅限 LLM 节点) |
dify.node.iteration_index | int | 否 | 迭代索引(迭代节点) |
dify.node.loop_index | int | 否 | 循环索引(循环节点) |
dify.plugin.name | string | 否 | 插件名称(工具/知识库节点) |
dify.credential.name | string | 否 | 凭证名称(插件节点) |
dify.credential.id | string | 否 | 凭证 ID(插件节点) |
dify.dataset.ids | JSON array | 否 | 数据集 ID(知识库节点) |
dify.dataset.names | JSON array | 否 | 数据集名称(知识库节点) |
dify.node.inputs | string/JSON | 是 | 节点输入(受内容门控控制) |
dify.node.outputs | string/JSON | 是 | 节点输出(受内容门控控制) |
dify.node.process_data | string/JSON | 否 | 处理数据(受内容门控控制) |
独立日志 (Standalone Logs)
没有结构化 Span 的日志。信号类型:metric_only。
dify.message.run
| 属性 | 类型 | 描述 |
|---|---|---|
dify.event.name | string | dify.message.run |
dify.event.signal | string | metric_only |
trace_id | string | OTEL Trace ID (32位十六进制) |
span_id | string | OTEL Span ID (16位十六进制) |
tenant_id | string | 租户标识符 |
user_id | string | 用户标识符(可选) |
dify.app_id | string | 应用标识符 |
dify.message.id | string | 消息标识符 |
dify.conversation.id | string | 会话 ID(可选) |
dify.workflow.run_id | string | 工作流运行 ID(可选) |
dify.invoke_from | string | service-api, web-app, debugger, explore |
gen_ai.provider.name | string | LLM 提供商 |
gen_ai.request.model | string | LLM 模型 |
gen_ai.usage.input_tokens | int | 输入 Token 数 |
gen_ai.usage.output_tokens | int | 输出 Token 数 |
gen_ai.usage.total_tokens | int | 总 Token 数 |
dify.message.status | string | succeeded (成功), failed (失败) |
dify.message.error | string | 错误信息(如果失败) |
dify.message.duration | float | 持续时间(秒) |
dify.message.time_to_first_token | float | 首字时间 (TTFT)(秒) |
dify.message.inputs | string/JSON | 输入(受内容门控控制) |
dify.message.outputs | string/JSON | 输出(受内容门控控制) |
dify.tool.execution
| 属性 | 类型 | 描述 |
|---|---|---|
dify.event.name | string | dify.tool.execution |
dify.event.signal | string | metric_only |
trace_id | string | OTEL Trace ID |
span_id | string | OTEL Span ID |
tenant_id | string | 租户标识符 |
dify.app_id | string | 应用标识符 |
dify.message.id | string | 消息标识符 |
dify.tool.name | string | 工具名称 |
dify.tool.duration | float | 持续时间(秒) |
dify.tool.status | string | succeeded (成功), failed (失败) |
dify.tool.error | string | 错误信息(如果失败) |
dify.tool.inputs | string/JSON | 输入(受内容门控控制) |
dify.tool.outputs | string/JSON | 输出(受内容门控控制) |
dify.tool.parameters | string/JSON | 参数(受内容门控控制) |
dify.tool.config | string/JSON | 配置(受内容门控控制) |
dify.moderation.check
| 属性 | 类型 | 描述 |
|---|---|---|
dify.event.name | string | dify.moderation.check |
dify.event.signal | string | metric_only |
trace_id | string | OTEL Trace ID |
span_id | string | OTEL Span ID |
tenant_id | string | 租户标识符 |
dify.app_id | string | 应用标识符 |
dify.message.id | string | 消息标识符 |
dify.moderation.type | string | input (输入), output (输出) |
dify.moderation.action | string | pass (通过), block (拦截), flag (标记) |
dify.moderation.flagged | boolean | 是否被标记 |
dify.moderation.categories | JSON array | 被标记的类别 |
dify.moderation.query | string | 内容(受内容门控控制) |
dify.suggested_question.generation
| 属性 | 类型 | 描述 |
|---|---|---|
dify.event.name | string | dify.suggested_question.generation |
dify.event.signal | string | metric_only |
trace_id | string | OTEL Trace ID |
span_id | string | OTEL Span ID |
tenant_id | string | 租户标识符 |
dify.app_id | string | 应用标识符 |
dify.message.id | string | 消息标识符 |
dify.suggested_question.count | int | 问题数量 |
dify.suggested_question.duration | float | 持续时间(秒) |
dify.suggested_question.status | string | succeeded (成功), failed (失败) |
dify.suggested_question.error | string | 错误信息(如果失败) |
dify.suggested_question.questions | JSON array | 问题(受内容门控控制) |
dify.dataset.retrieval
| 属性 | 类型 | 描述 |
|---|---|---|
dify.event.name | string | dify.dataset.retrieval |
dify.event.signal | string | metric_only |
trace_id | string | OTEL Trace ID |
span_id | string | OTEL Span ID |
tenant_id | string | 租户标识符 |
dify.app_id | string | 应用标识符 |
dify.message.id | string | 消息标识符 |
dify.dataset.id | string | 数据集标识符 |
dify.dataset.name | string | 数据集名称 |
dify.dataset.embedding_providers | JSON array | 嵌入模型提供商(每个数据集一个) |
dify.dataset.embedding_models | JSON array | 嵌入模型(每个数据集一个) |
dify.retrieval.rerank_provider | string | 重排模型提供商 |
dify.retrieval.rerank_model | string | 重排模型名称 |
dify.retrieval.query | string | 搜索查询(受内容门控控制) |
dify.retrieval.document_count | int | 检索到的文档数 |
dify.retrieval.duration | float | 持续时间(秒) |
dify.retrieval.status | string | succeeded (成功), failed (失败) |
dify.retrieval.error | string | 错误信息(如果失败) |
dify.dataset.documents | JSON array | 文档(受内容门控控制) |
dify.generate_name.execution
| 属性 | 类型 | 描述 |
|---|---|---|
dify.event.name | string | dify.generate_name.execution |
dify.event.signal | string | metric_only |
trace_id | string | OTEL Trace ID |
span_id | string | OTEL Span ID |
tenant_id | string | 租户标识符 |
dify.app_id | string | 应用标识符 |
dify.conversation.id | string | 会话标识符 |
dify.generate_name.duration | float | 持续时间(秒) |
dify.generate_name.status | string | succeeded (成功), failed (失败) |
dify.generate_name.error | string | 错误信息(如果失败) |
dify.generate_name.inputs | string/JSON | 输入(受内容门控控制) |
dify.generate_name.outputs | string | 生成的名称(受内容门控控制) |
dify.prompt_generation.execution
| 属性 | 类型 | 描述 |
|---|---|---|
dify.event.name | string | dify.prompt_generation.execution |
dify.event.signal | string | metric_only |
trace_id | string | OTEL Trace ID |
span_id | string | OTEL Span ID |
tenant_id | string | 租户标识符 |
dify.app_id | string | 应用标识符 |
dify.prompt_generation.operation_type | string | 操作类型(见附录) |
gen_ai.provider.name | string | LLM 提供商 |
gen_ai.request.model | string | LLM 模型 |
gen_ai.usage.input_tokens | int | 输入 Token 数 |
gen_ai.usage.output_tokens | int | 输出 Token 数 |
gen_ai.usage.total_tokens | int | 总 Token 数 |
dify.prompt_generation.duration | float | 持续时间(秒) |
dify.prompt_generation.status | string | succeeded (成功), failed (失败) |
dify.prompt_generation.error | string | 错误信息(如果失败) |
dify.prompt_generation.instruction | string | 指令(受内容门控控制) |
dify.prompt_generation.output | string/JSON | 输出(受内容门控控制) |
dify.app.created
| 属性 | 类型 | 描述 |
|---|---|---|
dify.event.name | string | dify.app.created |
dify.event.signal | string | metric_only |
tenant_id | string | 租户标识符 |
dify.app_id | string | 应用标识符 |
dify.app.mode | string | chat, completion, agent-chat, workflow |
dify.app.created_at | string | 时间戳 (ISO 8601) |
dify.app.updated
| 属性 | 类型 | 描述 |
|---|---|---|
dify.event.name | string | dify.app.updated |
dify.event.signal | string | metric_only |
tenant_id | string | 租户标识符 |
dify.app_id | string | 应用标识符 |
dify.app.updated_at | string | 时间戳 (ISO 8601) |
dify.app.deleted
| 属性 | 类型 | 描述 |
|---|---|---|
dify.event.name | string | dify.app.deleted |
dify.event.signal | string | metric_only |
tenant_id | string | 租户标识符 |
dify.app_id | string | 应用标识符 |
dify.app.deleted_at | string | 时间戳 (ISO 8601) |
dify.feedback.created
| 属性 | 类型 | 描述 |
|---|---|---|
dify.event.name | string | dify.feedback.created |
dify.event.signal | string | metric_only |
trace_id | string | OTEL Trace ID |
span_id | string | OTEL Span ID |
tenant_id | string | 租户标识符 |
dify.app_id | string | 应用标识符 |
dify.message.id | string | 消息标识符 |
dify.feedback.rating | string | like (点赞), dislike (点踩), null |
dify.feedback.content | string | 反馈文本(受内容门控控制) |
dify.feedback.created_at | string | 时间戳 (ISO 8601) |
dify.telemetry.rehydration_failed
用于遥测系统健康监控的诊断事件。| 属性 | 类型 | 描述 |
|---|---|---|
dify.event.name | string | dify.telemetry.rehydration_failed |
dify.event.signal | string | metric_only |
tenant_id | string | 租户标识符 |
dify.telemetry.error | string | 错误信息 |
dify.telemetry.payload_type | string | 载荷类型(见附录) |
dify.telemetry.correlation_id | string | 关联 ID |
内容门控属性 (Content-Gated Attributes)
当ENTERPRISE_INCLUDE_CONTENT=false 时,这些属性将被替换为引用字符串 (ref:{id_type}={uuid})。
| 属性 | 信号 |
|---|---|
dify.workflow.inputs | dify.workflow.run |
dify.workflow.outputs | dify.workflow.run |
dify.workflow.query | dify.workflow.run |
dify.node.inputs | dify.node.execution |
dify.node.outputs | dify.node.execution |
dify.node.process_data | dify.node.execution |
dify.message.inputs | dify.message.run |
dify.message.outputs | dify.message.run |
dify.tool.inputs | dify.tool.execution |
dify.tool.outputs | dify.tool.execution |
dify.tool.parameters | dify.tool.execution |
dify.tool.config | dify.tool.execution |
dify.moderation.query | dify.moderation.check |
dify.suggested_question.questions | dify.suggested_question.generation |
dify.retrieval.query | dify.dataset.retrieval |
dify.dataset.documents | dify.dataset.retrieval |
dify.generate_name.inputs | dify.generate_name.execution |
dify.generate_name.outputs | dify.generate_name.execution |
dify.prompt_generation.instruction | dify.prompt_generation.execution |
dify.prompt_generation.output | dify.prompt_generation.execution |
dify.feedback.content | dify.feedback.created |
附录 (Appendix)
操作类型 (Operation Types)
workflow, node_execution, message, rule_generate, code_generate, structured_output, instruction_modify
节点类型 (Node Types)
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
工作流状态 (Workflow Statuses)
running, succeeded, failed, stopped, partial-succeeded, paused
载荷类型 (Payload Types)
workflow, node, message, tool, moderation, suggested_question, dataset_retrieval, generate_name, prompt_generation, app, feedback
空值行为 (Null Value Behavior)
- Spans: 具有空值的属性将被省略。
- Logs: 具有空值的属性在 JSON 中显示为
null。 - Content-Gated: 被替换为引用字符串,而不是设置为 null。