##Datadogでnginxを監視する
有償の監視ツールdatadogでnginxを監視する方法。
ただし、datadogのagentはdocker-composeでセットアップする場合・・
公式ドキュメント(ほぼ役に立たない)
https://docs.datadoghq.com/ja/integrations/nginx/?tab=host
まず、これを見てnginxのstatus_moduleを入れてください。
(ここまではdocker関係ないです)
要は、localhost:81でステータスが見れてたらOK。
公式ドキュメント
docker-composeを使ってnginxを監視する設定ぐらいサンプルがあるやろ!!!
コンテナ環境の場合は、オートディスカバリーのインテグレーションテンプレートのガイドを参照して、次のパラメーターを適用してください。
で、案内されるページに行っても、docker-composeのサンプルもなにもない・・・
https://docs.datadoghq.com/ja/agent/kubernetes/integrations/?tab=kubernetes
要は、適当にコンフィグファイル.yamlを作ってコピーするなり、マウントしてやればいいらしい?
サンプルファイル?なにそれ?
conf.d/.d/conf.yaml
で、nginx用の設定はこれらしい
<インテグレーション名> nginx
<初期コンフィギュレーション> 空白または {}
<インスタンスコンフィギュレーション> {"nginx_status_url": "http://%%host%%:81/nginx_status/"}
さらにわからん!!!!<インテグレーション名>って何を入れたらいいんですか?
どこに?何というファイル名で?
公式ドキュメントが不親切すぎる!!!!
datadogは有償ツール故に試してみた的な記事も殆どない・・・
ということで、以下が正解のdocker-compose.ymlファイルです。
docker-compose.yml
version: "3.8"
services:
web:
build:
context: ./docker/nginx
ports:
- 80:80
# 関係ない設定は削除
# ここまでの設定はdatadogとは関係なし 81番ポートを開ける必要はなし
# ここからがdatadogでログを取る核心部分の設定
links:
- dd-agent:dd-agent
depends_on:
- dd-agent
labels:
com.datadoghq.ad.check_names: '["nginx"]'
com.datadoghq.ad.init_configs: '[{}]'
com.datadoghq.ad.instances: '[{"nginx_status_url": "http://%%host%%:81/nginx_status"}]'
com.datadoghq.ad.logs: '[{"source": "nginx", "service": "web"}]'
# datadogのコンテナ設定
dd-agent:
container_name: dd-agent
image: datadog/agent:7
environment:
- DD_API_KEY=ここに自分のAPIキーを書く
- DD_APM_ENABLED=true
- DD_LOGS_ENABLED=true
- DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true
- DD_AC_EXCLUDE="name:dd-agent"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /proc/:/host/proc/:ro
- /sys/fs/cgroup:/host/sys/fs/cgroup:ro
ports:
- "8126:8126/tcp"
これでコンテナを立ち上げて、docker psで生存確認。healtyになっていたらOK。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
577f6b34b971 datadog/agent:7 "/init" 39 seconds ago Up 37 seconds (healthy) 8125/udp, 0.0.0.0:8126->8126/tcp dd-agent
生きていれば、datadogのstatusチェック。
$ docker exec -it dd-agent agent status
このコマンドで、checkの中にnginxって文字列があってなにかしているようであればOK。(長いので省略)
nginx (3.9.0)
-------------
Instance ID: nginx:[OK]
Configuration Source: docker:docker://
Total Runs: 4
Metric Samples: Last Run: 7, Total: 28
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 1, Total: 4
Average Execution Time : 5ms
Last Execution Date : 2020-10-27 10:20:20.000000 UTC
Last Successful Execution Date : 2020-10-27 10:20:20.000000 UTC
metadata:
version.major: 1
version.minor: 18
version.patch: 0
version.raw: 1.18.0
version.scheme: semver
こんな基本的なアプリケーションの組み合わせのサンプルも記事も無いとかdatadog無いわ・・・・厳しいわ・・・
ハマリポイント
API_KEYじゃなくてDD_API_KEY
古いdd-agentを使っているとstatusコマンドが存在しなかった etc
多少参考になった記事
https://y-ohgi.com/2019-aws-handson/datadog/docker-compose/
https://tech.griphone.co.jp/2018/12/02/advent-calendar-20181202/
https://qiita.com/comefigo/items/4d867a39ad2fd5b9bbd2
https://qiita.com/spesnova/items/b1f2cc4e33ddf7cea285