この記事について
AWSのEC2(なお、OSはAmazon Linux2)上に配置しているairflowのログ収集をdatadogに任せたく、チュートリアルに従って設定を行ったら本当に一瞬で終わってしまったので、メモがてら残しておく。datadog agentは参考記事1にならいdockerイメージ版を利用した。
設定にあたっては、公式ドキュメント2にある一番シンプルなスクリプトに環境変数をいくつか追加している。
やったこと
下記のシェルスクリプトを実行しただけ。本当にそれだけ。
init_dd-agent.sh
#!/bin/bash -eu
DOCKER_CONTENT_TRUST=1 \
docker run -d --name datadog-agent -v /var/run/docker.sock:/var/run/docker.sock:ro \
-v /proc/:/host/proc/:ro \
-v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
-e DD_API_KEY=$MY_DD_API_KEY \
-e DD_TAGS="<your-tag1> <your-tag2>" \
-e DD_LOGS_ENABLED=true \
-e DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true \
-e DD_AC_EXCLUDE="name:datadog-agent" \
-e SD_BACKEND="docker" \
-e NON_LOCAL_TRAFFIC=false \
datadog/agent:latest
正常に実行されていれば、datadog agentのコンテナが起動しているはずなので、docker ps
コマンドを実行して確認しよう。
また、プロセスが実行されたあとにdatadog上にサーバのメトリクスやログが飛んできているか確認しましょう。
設定のポイント
個人的には公式ドキュメントの他、datadog-agentのgithubリポジトリ3にも色々説明が乗っているので、監視したい対象に合わせて最適なオプションを探しましょう。
-
DD_API_KEY
は当然ながら必須の設定。datadogの管理画面から取得し、環境変数にでも入れておきましょう。 -
DD_TAGS
にはスペース区切りでタグを入れることでdatadogの画面上での検索性が上がる。部署名などお好きなものをどうぞ。 -
DD_LOGS_ENABLED
をtrue
に設定することにより、DatadogのLogs配下にログが飛んでくるようになる。これを設定しないとサーバのメトリクスのみが連携される。 -
DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL
これをtrueにすることで、全てのコンテナの実行ログを取ることができる。datadog agentを入れているサーバ上でコンテナアプリケーションを実行していて、そのログを収集したい場合、trueにしよう。 -
DD_AC_EXCLUDE
を設定することでログを収集しないコンテナを指定できる。今回の場合はdatadog-agent自体のログを収集しないため設定。