LoginSignup
4
1

More than 3 years have passed since last update.

datadogでdocker-composeを使ってnginxを監視する方法

Posted at

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

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1