使用 Datadog 日志采集 API 采集事件
使用 Datadog 日志采集应用程序接口 (API),将 JSON 日志事件直接发送到 Datadog 日志管理平台。您可以采集来自云应用、微服务或任何生成遥测数据的系统的日志。日志采集完成后,几秒钟内即可在 日志浏览器 中查看。 您可以使用 日志管道 对日志进行处理、路由和归档。
该端点支持结构化及半结构化 JSON 有效载荷的高吞吐量、实时摄取。
此 API 支持的操作
- 无需安装 Datadog 代理,即可直接从云应用发送日志。
- 对传入的数据应用管道处理器,例如 Grok 解析器、重映射器和查找处理器。
- 根据内容将日志路由到索引、归档或告警目标。
- 通过将此端点与采样和过滤规则结合使用,可降低索引成本。
有关管理凭据的更多信息,请参阅 Datadog API 和应用程序密钥。
开始之前
请确保您已准备好:
-
一个具有日志采集权限的 Datadog API 密钥。您可以在 组织设置 → API 密钥 中找到它。
-
您的 Datadog 网站地址。该地址因区域而异:
地区 网站地址 美国(东部) datadoghq.comUS3(西) us3.datadoghq.comUS5(中部) us5.datadoghq.com欧盟(欧洲) datadoghq.euAP1(日本) ap1.datadoghq.comAP2(澳大利亚) ap2.datadoghq.com -
已安装
curl或 Postman。 -
JSON格式的日志负载。
管道概述
- Mermaid (图片)
- Mermaid (代码)
- ASCII
flowchart LR
A[云应用<br/>或微服务] -->|POST /api/v2/logs| B[Datadog<br/>日志采集 API]
B --> C[日志管道<br/>• Grok 解析器<br/>• 重映射器<br/>• 查找处理器]
C --> D[路由引擎<br/>• 过滤器<br/>• 索引<br/>• 采样规则]
D --> E{{目标<br/>日志浏览器 · S3 · SIEM · 警报}}
[云应用] POST /api/v2/logs [Datadog 日志]
[或微服务] -------------------> [数据采集 API]
|
v
[日志管道]
(解析、增强、屏蔽)
|
v
[路由引擎]
(过滤器、索引)
|
v
{ 目标 }
(日志浏览器、S3、SIEM)
摄入端点
POST https://http-intake.logs.{dd_site}/api/v2/logs
请将 {dd_site} 替换为您所在地区的站点地址,例如 datadoghq.com 或 ap2.datadoghq.com。
请求头
| 页眉 | 值 | 必填 | 描述 |
|---|---|---|---|
DD-API-KEY | <your_api_key> | 是的 | 您的 Datadog API 密钥 |
Content-Type | application/json | 是的 | 有效载荷格式 |
Content-Encoding | gzip | 可选 | 压缩有效载荷格式(推荐用于大容量批次) |
请求正文
请求正文是一个包含一个或多个日志对象的 JSON 数组。每个日志对象支持以下字段:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
message | string | 是的 | 日志消息正文 |
ddsource | string | 推荐 | 日志来源的技术,例如 python 或 nginx。 |
ddtags | string | 可选 | 用逗号分隔的标签,例如 env:prod,team:payments。 |
hostname | string | 可选 | 生成该日志的主机名称 |
service | string | 推荐 | 应用或服务的名称 |
您必须包含 message 字段。所有其他字段均为可选,但 Datadog 建议使用它们。Datadog 使用 service、ddsource 和 ddtags 进行过滤、分面和管道匹配。
有效载荷示例
[
{
"message": "Transaction failed: Gateway timeout",
"ddsource": "payment-gateway",
"ddtags": "env:prod,region:us-east-1",
"hostname": "payments-host-01",
"service": "payment-gateway",
"timestamp": "2025-11-15T08:30:00Z",
"transaction_id": "txn_998877",
"customer_id": "cus_554433",
"level": "ERROR"
}
]
timestamp 必须采用国际标准化组织 (ISO) 8601 协调世界时 (UTC) 格式。Datadog 在 Log Explorer 中使用此格式进行时间线对齐。对于未包含时间戳的日志,Datadog 会根据导入时间对其进行索引。
cURL 示例
export DD_API_KEY="your_datadog_api_key_here"
export DD_SITE="datadoghq.com"
curl -X POST "https://http-intake.logs.$DD_SITE/api/v2/logs" \
-H "DD-API-KEY: $DD_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"message": "Transaction failed: Gateway timeout",
"ddsource": "payment-gateway",
"ddtags": "env:prod,region:us-east-1",
"hostname": "payments-host-01",
"service": "payment-gateway",
"level": "ERROR",
"transaction_id": "txn_998877"
}
]'
响应代码
| Code | Status | 描述 |
|---|---|---|
202 | Accepted | 已接收有效载荷并将其加入索引队列 |
400 | Bad request | 格式或验证错误 |
401 / 403 | Unauthorized / Forbidden | 缺少 API 密钥(401)或密钥无效/权限不足(403) |
413 | Payload too large | 未压缩的有效载荷超过 5 MB(gzip 压缩后为 50 MB) |
429 | Too many requests | 摄入速率超过限制 |
202 已接受
202 Accepted 响应表明 Datadog 已收到有效载荷。该响应的正文为空。日志事件将在几秒钟内显示在 Log Explorer 中。
HTTP/1.1 202 Accepted
400 请求错误
当有效负载存在格式或验证错误时,Datadog 会返回以下代码:
- JSON 语法错误或存在未转义的字符。
- 缺少必填字段
message。 - 未压缩的有效载荷超过了 5 MB 的限制。
{
"errors": ["Invalid JSON"]
}
401 未授权和 403 禁止访问
如果缺少 DD-API-KEY 头,Datadog 将返回 401 未授权。如果 API 密钥无效或缺乏日志采集权限,Datadog 将返回 403 禁止访问:
{
"errors": ["Forbidden"]
}
413 有效载荷过大
当请求负载超过最大大小限制时,Datadog 会返回此代码:未压缩的 JSON 数据为 5 MB,gzip 压缩的数据为 50 MB。
{
"errors": ["Payload too large"]
}
429 请求过多
客户端超过了请求速率限制。请降低请求频率,或将日志对象批量打包到数组负载中。
批量处理多个日志事件
您可以通过传递一个数组,在单次请求中最多发送 1,000 条日志条目。Datadog 建议高吞吐量服务采用此方法。
[
{
"message": "User login succeeded",
"service": "auth-service",
"ddsource": "python",
"ddtags": "env:prod",
"level": "INFO"
},
{
"message": "Transaction failed: Gateway timeout",
"service": "payment-gateway",
"ddsource": "python",
"ddtags": "env:prod",
"level": "ERROR",
"transaction_id": "txn_998877"
}
]
限制:
- 每个未压缩请求的最大有效载荷大小为:5 MB(使用
gzip压缩时为 50 MB) - 单个日志的最大大小:1 MB
- 数组最大条目数:1,000 个日志对象
常见用例
- 在不部署 Datadog Agent 的情况下采集微服务日志。
- 从无服务器函数(如亚马逊网络服务(AWS)Lambda 或 Google Cloud Run)发送结构化 JSON 事件。
- 从物联网设备或边缘服务流式传输遥测数据。
- 通过日志管道将经过增强的事件转发至安全信息和事件管理(SIEM)、S3 或告警目标。
- 提交来自持续集成和持续交付(CI/CD)管道或部署脚本的日志。
故障排除
| 问题 | 合理依据 | 解决方案 |
|---|---|---|
401 Unauthorized | API密钥错误或缺失 | 在 组织设置 → API 密钥 中验证 DD_API_KEY |
400 Bad Request | JSON格式不正确 | 发送前请使用 jq . payload.json 进行验证 |
| 日志未显示在资源管理器中 | 不包含日志的管道过滤器 | 清除过滤器;检查索引路由规则 |
| 时间戳顺序错误 | 非UTC或非ISO 8601格式 | 请使用 "2025-11-15T08:30:00Z" 这种格式。 |
429 Too Many Requests | 超出请求限制 | Batch log objects into a single array payload |