🐶

Datadogにログを送ろう🐶 (APIを使って)

2024/07/02に公開

TLDR

Datadogにはいくつかデータ送信用のエンドポイントが用意されており、
http POSTすることによりメトリクスやログを送ることができる。

今回はテスト用のログをDatadogに送ってみよう。

curlでログを送る

以下リンクの "Send logs"のAPIによって、ログを送信する。
https://docs.datadoghq.com/api/latest/logs/

curlコマンド例

curl -X POST "https://http-intake.logs.datadoghq.com/api/v2/logs" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "DD-API-KEY: ${DD_API_KEY}" \
-d @- << EOF
{
  "ddsource": "taromn",
  "ddtags": "env:staging,version:1.0",
  "hostname": "i-abcde",
  "message": "Taromn Awesome Log",
  "service": "taromn"
}
EOF

このようにcurlで叩いてやればオッケー。

環境変数 DD_API_KEY は事前に設定しておく。

注意すること

Datadog site

Datadogにはリージョンの概念がある。AWSでいう us-east-1 とか ap-northeast-1 みたいな感じ。
これをDatadog siteという。

Datadog siteによって、データセンターの場所が異なるため、エンドポイントのURLも適宜変更してやる必要がある。

US1の場合: https://http-intake.logs.datadoghq.com/api/v2/logs
AP1の場合: https://http-intake.logs.ap1.datadoghq.com/api/v2/logs

Timestamp

上記のcurlの例のように、Timestamp (=ログの日時) を付けずにログを送ると、
自動的にAPIエンドポイントがログを受領したタイミングのTimestampが付与される。

https://docs.datadoghq.com/logs/guide/logs-not-showing-expected-timestamp/

By default, when logs are received by the Datadog intake API, a timestamp is generated and appended as a date attribute.

Timestampを付与してログを送信した場合は、現時刻より18時間以上古いログがrejectされる場合がある。
https://docs.datadoghq.com/logs/log_collection/?tab=host

Log events can be submitted with a timestamp that is up to 18h in the past.

まとめ

Datadogでは、http POSTで簡単にログ送信できる。

Discussion