Skip to main content
Temporal 是一个持久化执行平台,使开发者能够构建弹性的分布式应用程序。本指南将向您展示如何使用 OpenTelemetry 在 LangSmith 中追踪 Temporal 工作流和活动。 LangSmith 支持 OpenTelemetry (OTEL) 追踪摄取,这与 Temporal 原生的 OpenTelemetry 拦截器无缝集成。这使得您可以对工作流执行、活动以及其中的任何 LLM 调用进行完整的分布式追踪。

前提条件

  • 一个 LangSmith 账户 和 API 密钥
  • 正在运行的 Temporal 服务器(本地或云端)
  • 您所用语言的 OpenTelemetry SDK

环境变量

为所有实现设置以下环境变量:
对于欧盟区域或自托管的 LangSmith 安装,还需将 LANGCHAIN_BASE_URL 设置为您的 LangSmith 实例 URL。

设置追踪

Go 使用 langsmith-go SDK 与 Temporal 的 OpenTelemetry 拦截器来自动追踪工作流和活动。
1

安装

安装 LangSmith Go SDK、Temporal SDK 和 OpenTelemetry 拦截器:
2

初始化追踪器

初始化 LangSmith 追踪器,创建 Temporal 的 OpenTelemetry 拦截器,并将其注册到 Temporal 客户端和 worker:
3

定义工作流和活动

定义一个执行活动的工作流。该活动演示了如何为 LangSmith 可见性添加自定义跨度属性:
4

执行工作流

在单独的客户端应用程序中,初始化追踪器并执行工作流:
client.go

在 LangSmith 中查看追踪

配置完成后,追踪将出现在您的 LangSmith 项目中:
  1. 导航到您的 LangSmith 实例。
  2. 选择您的项目。
  3. 追踪 选项卡中查看追踪。
  4. 点击单个追踪以查看完整的跨度层次结构。

配置选项

设置自定义服务名称

设置自定义服务名称以区分不同的 Temporal worker 或服务:

添加自定义跨度属性

添加自定义属性以丰富您的追踪:

配置采样

对于高吞吐量的工作流,配置采样以减少追踪量:

故障排除

追踪未出现

  1. 验证 API 密钥:确保 LANGSMITH_API_KEY 设置正确
  2. 检查端点:确认您使用的是 https://api.smith.langchain.com/otel/v1/traces
  3. 关闭时刷新:在应用程序退出前调用 provider.shutdown() 以刷新待处理的跨度
  4. 检查项目:验证追踪是否发送到正确的项目(默认为 "default"

缺少活动跨度

确保在客户端和 worker 上都配置了追踪拦截器:
  • 客户端:需要拦截器来启动工作流
  • Worker:需要拦截器来执行活动

上下文传播问题

验证传播器配置是否正确:
  • Golangsmith.NewTracer() 自动配置传播器
  • Python/TypeScript:确保 OpenTelemetry SDK 使用追踪传播器正确初始化

Worker 关闭挂起

如果追踪未刷新,请确保使用适当的超时调用关闭方法:

后续步骤

附加资源