监控你的LangChain应用:使用Datadog Trace的落地指南

232 阅读3分钟

引言

在现代应用程序开发中,监控和性能优化成为确保应用程序高效运行的关键要素。Datadog 的 trace (ddtrace)集成提供了强大的工具来监控你的 LangChain 应用程序。这篇文章将带你逐步了解如何使用 ddtrace 监控 LangChain 应用程序,包括设置、代码示例、潜在问题解决方法,以及进一步学习的资源。

主要内容

ddtrace 的关键功能

Datadog 的 ddtrace 为 LangChain 提供了全面的监控功能,包括:

  • Traces:捕获 LangChain 的请求、参数、提示完成,帮助可视化 LangChain 的操作。
  • Metrics:记录请求延迟、错误和令牌/成本使用情况(特别为 OpenAI LLMs 和聊天模型设计)。
  • Logs:存储每个 LangChain 操作的提示完成数据。
  • Dashboard:结合指标、日志和跟踪数据,形成一个单一平面以监视 LangChain 请求。
  • Monitors:在 LangChain 请求延迟或错误率突增时提供警报。

安装和设置

首先,你需要确保你的 Datadog Agent 启用了 APM 和 StatsD,并持有一个有效的 Datadog API key。以下是在 Docker 中启用的示例:

docker run -d --cgroupns host \
    --pid host \
    -v /var/run/docker.sock:/var/run/docker.sock:ro \
    -v /proc/:/host/proc/:ro \
    -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
    -e DD_API_KEY=<DATADOG_API_KEY> \
    -p 127.0.0.1:8126:8126/tcp \
    -p 127.0.0.1:8125:8125/udp \
    -e DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true \
    -e DD_APM_ENABLED=true \
    gcr.io/datadoghq/agent:latest

安装 Datadog APM Python 库:

pip install ddtrace>=1.17

要启用 LangChain 集成,可以在你的 LangChain Python 应用命令前加上 ddtrace-run

DD_SERVICE="my-service" DD_ENV="staging" DD_API_KEY=<DATADOG_API_KEY> ddtrace-run python <your-app>.py

注意:如果 Agent 使用了非默认的主机名或端口,确保设置 DD_AGENT_HOSTDD_TRACE_AGENT_PORTDD_DOGSTATSD_PORT

代码示例

以下是如何在代码中以编程方式启用 ddtrace 的示例:

from ddtrace import config, patch

# 请在调用``patch()``之前配置集成
# 例如 config.langchain["logs_enabled"] = True

patch(langchain=True)

# 使用API代理服务提高访问稳定性
# trace同步 HTTP 请求
# patch(langchain=True, requests=True)

# trace异步 HTTP 请求 (到 OpenAI 库)
# patch(langchain=True, aiohttp=True)

# 包含来自 OpenAI 集成的底层 OpenAI span
# patch(langchain=True, openai=True)

常见问题和解决方案

问题:无法接收到 Datadog Agent 的数据

解决方案:

  1. 确保 Datadog Agent 运行正常,并且端口配置正确。
  2. 检查 API key 是否正确设置。
  3. 检查网络配置,特别是在某些地区,考虑使用 API 代理服务。

问题:日志数据不完整

解决方案:

  1. 确保已设置 DD_LANGCHAIN_LOGS_ENABLED=1 环境变量。
  2. 检查日志采样率配置。

总结和进一步学习资源

通过本文的讲解,你应该能够成功地在 LangChain 应用程序中使用 Datadog Trace 进行监控。为了更深入的理解,可以参考官方文档 APM Python library documentation 提供的高级用法。

参考资料

  1. Datadog 官方文档
  2. APM Python Library Documentation

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---