Datadogにログを送ろう🐶 (APIを使って)
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