Datadog Log Ingestion API を使用したイベントの取り込み
Datadogのログ取り込みAPIを使用して、JSON形式のログイベントをDatadog Log Managementに直接送信できます。クラウドアプリ、マイクロサービス、あるいはテレメトリデータを出力するあらゆるシステムからのログを取り込むことができます。ログを取り込むと、数秒以内にLog Explorerで利用可能になります。 Log Pipelines を使用して、ログの処理、ルーティング、アーカイブを行うことができます。
このエンドポイントは、構造化および半構造化のJSONペイロードの、高スループットかつリアルタイムでの取り込みに対応しています。
このAPIでサポートされている操作
- Datadogエージェントをインストールすることなく、クラウドアプリから直接ログを送信できます。
- Grokパーサー、リマッパー、ルックアッププロセッサなどのパイプラインプロセッサを、受信データに適用します。
- コンテンツに基づいて、ログをインデックス、アーカイブ、またはアラート送信先に振り分けます。
- このエンドポイントをサンプリングおよびフィルタリングルールと組み合わせることで、インデックス作成のコストを削減できます。
認証情報の管理に関する詳細については、Datadog API およびアプリケーションキー を参照してください。
始める前に
以下のものが揃っていることを確認してください:
-
ログ取り込み権限を持つDatadog API キー。これは、組織設定 → API キーで確認できます。
-
Datadogのサイトアドレス。このアドレスはリージョンによって異なります:
地域 サイトのURL 米国(東部) datadoghq.comUS3(西) us3.datadoghq.comUS5(中央) us5.datadoghq.comEU(欧州) 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 ログ]
[またはマイクロサービス] -------------------> [Ingestion API]
|
v
[ログパイプライン]
(パース、エンリッチ、マスク)
|
v
[ルーティングエンジン]
(フィルター、インデックス)
|
v
{ 送信先 }
(Explorer、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 | オプション | 圧縮ペイロード形式(大容量のバッチ処理に推奨) |
リクエスト本文
リクエスト本文は、1つ以上のログオブジェクトからなる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 Unauthorized を返します。API キーが無効であるか、ログ取り込みの権限がない場合、Datadog は 403 Forbidden を返します:
{
"errors": ["Forbidden"]
}
413 ペイロードが大きすぎます
Datadog は、リクエストのペイロードが最大サイズ制限(非圧縮 JSON の場合は 5 MB、gzip 圧縮データの場合は 50 MB)を超えた場合に、このコードを返します。
{
"errors": ["Payload too large"]
}
429 リクエストが多すぎます
クライアントのリクエストレート制限を超過しました。リクエストの頻度を減らすか、ログオブジェクトを配列ペイロードにまとめて送信してください。
複数のログイベントのバッチ処理
配列を渡すことで、1回のリクエストで最大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つのログファイルの最大サイズ:1 MB
- 配列の最大要素数:1,000 個のログオブジェクト
一般的な利用例
- Datadogエージェントをデプロイせずに、マイクロサービスからのログを取り込む。
- Amazon Web Services (AWS) Lambda や Google Cloud Run などのサーバーレス関数から、構造化された JSON イベントを送信します。
- IoTデバイスやエッジサービスからのテレメトリデータのストリーミング。
- Log Pipelines を通じて、エンリッチされたイベントをセキュリティ情報およびイベント管理(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 |