You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ddtrace将Python定时任务日志发送至Datadog?

最简实现:直接通过Datadog Python SDK发送日志

你之前的方案依赖Datadog Agent收集日志文件,必须配置Agent的日志规则才能生效。如果要跳过配置文件环节,最简方案是直接在代码中使用Datadog官方Python SDK的日志handler,绕过Agent的文件收集流程,直接将日志发送至Datadog API。

1. 安装依赖

pip install datadog

2. 修改代码实现直连发送

替换原有代码为以下内容,无需依赖Agent配置:

import os
import logging
from datadog import initialize
from datadog.logs import LogsHandler

# 从环境变量读取Datadog API密钥(避免硬编码)
initialize(api_key=os.getenv('DD_API_KEY'))

# 配置Datadog日志handler,可自定义service和source标识
dd_handler = LogsHandler(
    service="my-cron-python-service",
    source="python"
)

# 初始化logger并绑定handler
logger = logging.getLogger(__name__)
logger.setLevel(logging.WARNING)
logger.addHandler(dd_handler)

# 发送测试日志
logger.warning("Dummy log")

关键说明

  • 无需修改或创建Datadog Agent的配置文件,直接通过API发送日志。
  • 推荐通过**环境变量DD_API_KEY**传递密钥,在cron任务执行前设置环境变量即可(比如在cron命令中添加DD_API_KEY=xxx)。
  • 该方案适配cron定时任务场景:每次任务启动时初始化SDK,发送日志后直接退出,不依赖Agent持续运行的日志收集进程。
  • 如果需要保留trace关联能力,可以结合ddtrace的日志注入:在初始化logger前添加ddtrace.patch(logging=True),即可将trace ID自动注入到日志字段中。

替代方案:无需修改代码的CLI方式

如果不想改动Python代码,也可以在cron命令中直接转发程序输出到Datadog:

* * * * * DD_API_KEY=xxx /path/to/python /path/to/script.py | datadog-agent logs send --service "my-cron-service" --source "python"

这种方式利用Datadog Agent的CLI工具直接抓取标准输出并发送,同样不需要修改Agent配置文件。

内容的提问来源于stack exchange,提问作者Murilo Sitonio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 20:10:11