Supported OS Linux Windows Mac OS

インテグレーションバージョン8.1.0

NGINX のデフォルトのダッシュボード

概要

Datadog Agent は NGINX インスタンスから、次のような多数のメトリクスを収集できます (一例)。

  • 合計リクエスト数
  • 接続数 (許可された接続、処理された接続、アクティブな接続など)

NGINX の商用版である NGINX Plus のユーザーの場合、Agent は、NGINX Plus が提供する次のような数多くのメトリクスを収集できます。

  • エラー (4xx コード、5xx コードなど)
  • 上流サーバー (アクティブな接続、5xx コード、健全性チェックなど)
  • キャッシュ (サイズ、ヒット数、ミス数など)
  • SSL (ハンドシェイクやハンドシェイクの失敗など)

セットアップ

インストール

NGINX チェックは、ローカルの NGINX ステータスエンドポイントからメトリクスを取得するため、nginx バイナリが NGINX ステータスモジュールと共にコンパイルされている必要があります。

NGINX オープンソース

オープンソース NGINX を使用している場合は、インスタンスにスタブステータスモジュールが含まれていないことがあります。コンフィグレーションを行う前に、nginx バイナリにモジュールが含まれているかを確認してください。

$ nginx -V 2>&1| grep -o http_stub_status_module
http_stub_status_module

コマンドの出力に http_stub_status_module が含まれていない場合は、このモジュールを含む NGINX パッケージをインストールする必要があります。独自の NGINX をコンパイルして、コンパイル時にモジュールを有効化することもできますが、最新の Linux ディストリビューションで提供されている代替 NGINX パッケージには、外部モジュールのさまざまな組み合わせが組み込まれています。ご使用のオペレーティングシステムの NGINX パッケージをチェックして、スタブステータスモジュールが含まれているパッケージを探してください。

NGINX Plus

リリース 13 より前の NGINX Plus パッケージにはHTTP ステータスモジュールが含まれています。リリース 13 以降の NGINX Plus では、このステータスモジュールは非推奨になり、代わりに新しい Plus API を使用する必要があります。詳細については、こちらのお知らせを参照してください。

NGINX の準備

各 NGINX サーバーで、他の NGINX 構成ファイルが含まれているディレクトリ (/etc/nginx/conf.d/ など) に status.conf ファイルを作成します。

server {
  listen 81;
  server_name localhost;

  access_log off;
  allow 127.0.0.1;
  deny all;

  location /nginx_status {
    # ステータスモジュールを選択します

    # オープンソース NGINX を自由に利用できます
    stub_status;

    # バージョン 1.7.5 以前の オープンソース NGINX で使用します
    # stub_status on;

    # NGINX Plus でのみ使用できます
    # status;

   # バージョン情報を取得できるようにします
   server_tokens on;
  }
}

NGINX Plus

NGINX Plus ユーザーは、stub_status を使用することもできますが、このモジュールで提供されるメトリクスは少ないため、status の使用をお勧めします。

NGINX Plus リリース 15 以降では、status モジュールは非推奨です。代わりに http_api_module を使用してください。たとえば、メインの NGINX 構成ファイル (/etc/nginx/conf.d/default.conf) で /api エンドポイントを有効にするには、以下のようにします。

server {
  listen 8080;
  location /api {
    api write=on;
  }
}

NGINX Plus を使用してさらに詳細なメトリクス (毎秒の 2xx / 3xx / 4xx / 5xx 応答数など) を取得するには、監視するサーバーで status_zone を設定します。たとえば、以下のとおりです。

server {
  listen 80;
  status_zone <ゾーン名>;
  ...
}

NGINX をリロードして、status または API エンドポイントを有効にします。完全な再起動は必要ありません。

sudo nginx -t && sudo nginx -s reload

以下のスニペットを構成 ConfigMaps に追加し、別のポートでメトリクスエンドポイントを公開します。

kind: ConfigMap
metadata:
  name: nginx-conf
data:
[...]
  status.conf: |
    server {
      listen 81;

      location /nginx_status {
        stub_status on;
      }

      location / {
        return 404;
      }
    }    

次に、NGINX ポッドで 81 エンドポイントを公開し、そのファイルを NGINX 構成フォルダーにマウントします。

spec:
  containers:
    - name: nginx
      ports:
        - containerPort: 81
      volumeMounts:
        - mountPath: /etc/nginx/conf.d/status.conf
          subPath: status.conf
          readOnly: true
          name: "config"
  volumes:
    - name: "config"
      configMap:
          name: "nginx-conf"

構成

ホスト

ホストで実行中の Agent に対してこのチェックを構成するには

ホストで実行されている Agent 用にこのチェックを構成する場合は、以下の手順に従ってください。コンテナ環境の場合は、DockerKubernetes、または ECS セクションを参照してください。

メトリクスの収集
  1. NGINX メトリクスの収集を開始するには、nginx.d/conf.yaml ファイルで nginx_status_url パラメーターを http://localhost:81/nginx_status/ に設定します。使用可能なすべての構成オプションの詳細については、サンプル nginx.d/conf.yaml を参照してください。

    NGINX Plus:

    • NGINX Plus リリース 13 以降の場合は、nginx.d/conf.yaml 構成ファイルでパラメーター use_plus_apitrue に設定します。

    • ストリーム統計 API 呼び出しは、NGINX Plus のデフォルトで含まれています。これを無効にしたい場合は、nginx.d/conf.yaml コンフィギュレーションファイルでパラメーター use_plus_api_streamfalse に設定します。

    • http_api_module を使用する場合は、nginx.d/conf.yaml 構成ファイルでパラメーター nginx_status_url をサーバーの /api の場所に設定します。以下に例を示します。

      nginx_status_url: http://localhost:8080/api
      
  2. オプション - NGINX の vhost_traffic_status module を使用する場合は、nginx.d/conf.yaml 構成ファイルでパラメーター use_vtstrue に設定します。

  3. Agent を再起動すると、Datadog への NGINX メトリクスの送信が開始されます。

ログ収集

Agent バージョン 6.0 以降で利用可能

  1. Datadog Agent で、ログの収集はデフォルトで無効になっています。以下のように、datadog.yaml ファイルでこれを有効にします。

    logs_enabled: true
    
  2. NGINX のログの収集を開始するには、次の構成ブロックを nginx.d/conf.yaml ファイルに追加します。

    logs:
      - type: file
        path: /var/log/nginx/access.log
        service: nginx
        source: nginx
    
      - type: file
        path: /var/log/nginx/error.log
        service: nginx
        source: nginx
    

    service パラメーターと path パラメーターの値を変更し、環境に合わせて構成します。使用可能なすべてのコンフィギュレーションオプションについては、サンプル nginx.d/conf.yaml を参照してください。

  3. Agent を再起動します

: NGINX のデフォルトのログ形式には、リクエスト応答時間が含まれていません。これをログに含めるには、NGINX 構成ファイル (/etc/nginx/nginx.conf) の http セクションに以下の構成ブロックを追加して、NGINX のログ形式を更新します。

http {
    #推奨ログフォーマット
    log_format nginx '\$remote_addr - \$remote_user [\$time_local] '
                  '"\$request" \$status \$body_bytes_sent \$request_time '
                  '"\$http_referer" "\$http_user_agent"';

    access_log /var/log/nginx/access.log;
}

Docker

コンテナで実行中の Agent に対してこのチェックを構成するには:

メトリクスの収集

アプリケーションのコンテナで、オートディスカバリーのインテグレーションテンプレートを Docker ラベルとして設定します。

LABEL "com.datadoghq.ad.check_names"='["nginx"]'
LABEL "com.datadoghq.ad.init_configs"='[{}]'
LABEL "com.datadoghq.ad.instances"='[{"nginx_status_url": "http://%%host%%:81/nginx_status/"}]'

: このインスタンスは NGINX オープンソースでのみ機能します。NGINX Plus を使用している場合は、対応するインスタンス構成をインライン化します。

ログ収集

Datadog Agent で、ログの収集はデフォルトで無効になっています。有効にする方法については、Docker ログ収集を参照してください。

次に、ログインテグレーションを Docker ラベルとして設定します。

LABEL "com.datadoghq.ad.logs"='[{"source":"nginx","service":"nginx"}]'

Kubernetes

このチェックを、Kubernetes で実行している Agent に構成します。

メトリクスの収集

メトリクスを収集するには、オートディスカバリーテンプレートに以下のパラメーターと値を設定します。これは、NGINX ポッドの Kubernetes アノテーション (下記参照) またはローカルファイル、ConfigMap、キーバリューストア、Datadog Operator マニファスト、または Helm チャートを使用して行うことができます。

パラメーター
<INTEGRATION_NAME>["nginx"]
<INIT_CONFIG>[{}]
<INSTANCE_CONFIG>[{"nginx_status_url": "http://%%host%%:18080/nginx_status"}]

Annotations v1 (Datadog Agent < v7.36 向け)

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  annotations:
    ad.datadoghq.com/nginx.check_names: '["nginx"]'
    ad.datadoghq.com/nginx.init_configs: '[{}]'
    ad.datadoghq.com/nginx.instances: |
      [
        {
          "nginx_status_url":"http://%%host%%:81/nginx_status/"
        }
      ]      
  labels:
    name: nginx

Annotations v2 (Datadog Agent v7.36+ 向け)

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  annotations:
    ad.datadoghq.com/nginx.checks: |
      {
        "nginx": {
          "init_config": {},
          "instances": [
            {
              "nginx_status_url":"http://%%host%%:81/nginx_status/"
            }
          ]
        }
      }      
  labels:
    name: nginx

: このインスタンスは NGINX オープンソースでのみ機能します。NGINX Plus を使用している場合は、対応するインスタンス構成をインライン化します。

ログ収集

Datadog Agent で、ログの収集はデフォルトで無効になっています。有効にする方法については、Kubernetes ログ収集を参照してください。

次に、オートディスカバリーテンプレートに以下のパラメーターを設定します。これは、Redis ポッドの Kubernetes アノテーション (下記参照) またはローカルファイル、ConfigMap、キーバリューストア、Datadog Operator マニファスト、または Helm チャートを使用して行うことができます。

パラメーター
<LOG_CONFIG>[{"source":"nginx","service":"nginx"}]

Annotations v1/v2

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  annotations:
    ad.datadoghq.com/nginx.logs: '[{"source":"nginx","service":"nginx"}]'
  labels:
    name: nginx

ECS

このチェックを、ECS で実行している Agent に構成するには:

メトリクスの収集

アプリケーションのコンテナで、オートディスカバリーのインテグレーションテンプレートを Docker ラベルとして設定します。

{
  "containerDefinitions": [{
    "name": "nginx",
    "image": "nginx:latest",
    "dockerLabels": {
      "com.datadoghq.ad.check_names": "[\"nginx\"]",
      "com.datadoghq.ad.init_configs": "[{}]",
      "com.datadoghq.ad.instances": "[{\"nginx_status_url\":\"http://%%host%%:81/nginx_status/\"}]"
    }
  }]
}

: このインスタンスは NGINX オープンソースでのみ機能します。NGINX Plus を使用している場合は、対応するインスタンス構成をインライン化します。

ログ収集

Datadog Agent で、ログの収集はデフォルトで無効になっています。有効にする方法については、ECS ログ収集を参照してください。

次に、ログインテグレーションを Docker ラベルとして設定します。

{
  "containerDefinitions": [{
    "name": "nginx",
    "image": "nginx:latest",
    "dockerLabels": {
      "com.datadoghq.ad.logs": "[{\"source\":\"nginx\",\"service\":\"nginx\"}]"
    }
  }]
}

検証

Agent の status サブコマンドを実行し、Checks セクションで nginx を探します。

収集データ

メトリクス

オープンソース NGINX のユーザーは、ここに示したメトリクスのすべてを利用できるわけではありません。各モジュールで提供されるメトリクスを確認するには、スタブステータス (オープンソース NGINX) と HTTP ステータス (NGINX Plus) のモジュールリファレンスを比較してください。

オープンソース NGINX と NGINX Plus では名前が異なるメトリクスがいくつかありますが、それらは同じメトリクスです。

NGINXNGINX Plus
nginx.net.connectionsnginx.connections.active
nginx.net.conn_opened_per_snginx.connections.accepted
nginx.net.conn_dropped_per_snginx.connections.dropped
nginx.net.request_per_snginx.requests.total

次のメトリクスは、正確には同じメトリクスではありませんが、関連はあります。

NGINXNGINX Plus
nginx.net.waitingnginx.connections.idle

最後に、次のメトリクスには対応するメトリクスがありません。

メトリクス説明
nginx.net.readingnginx がリクエストヘッダーを読み取っている現在の接続数。
nginx.net.writingnginx がクライアントへの応答を書き込んでいる現在の接続数。

イベント

NGINX チェックには、イベントは含まれません。

サービスチェック

トラブルシューティング

ご不明な点は、Datadog のサポートチームまでお問い合わせください。

その他の参考資料

お役に立つドキュメント、リンクや記事:

PREVIEWING: may/embedded-workflows