チュートリアル:NGINXの使用状況レポートを設定する

NGINX | 2024年5月01日

NGINX Plus R31では、NGINX Plusの使用状況をより簡単かつ効率的にレポートできるようになりました。使用状況レポート機能がネイティブに統合されたことで、別途NGINX Agentを用意する必要がなくなり、F5のFlex Consumption Program(FCP)をご利用のお客さま、および期間契約のサブスクリプションをご利用のFCP以外のお客さまは、手間なくシームレスにレポートを作成できます。この機能はNGINX Plusに直接組み込まれているため、インスタンスはパフォーマンスに影響を与えることなく、必要な使用状況情報をNGINX Instance Managerに定期的に送信できます。この機能は仮想マシンとNGINX Ingress Controllerで利用できますが、本ブログではNGINX Plusインスタンスに焦点を当てます。NGINX Ingress ControllerからNGINX Instance Managerへのレポート方法については、こちらをご覧ください。

セットアップの簡素化、カスタマイズオプションの提供、フォールバック手段の用意により、お客さまがFCPへの準拠を実現し、維持するために必要な使用状況レポートを、効率的かつ柔軟に導入できるようにすることを目指しています。R31をまだ使用していない場合やアップグレードを予定していない場合は、NGINX AgentのインストールまたはHTTPヘルスチェックの設定により、使用状況レポートを有効にする代替手段を利用できます。

注:NGINX Plusの使用状況をレポートするには、NGINX Instance Managerを専用ホストにインストールする必要があります。さまざまなインストール方法については、インストールガイドを参照してください。

NGINX PlusインスタンスをF5に報告する方法は、3つから選択できます。

  • NGINX Plus R31ユーザー — NGINXネイティブの使用状況レポートの設定
  • R31またはR31より前のバージョンのユーザー — NGINX Agentのインストール
  • R31より前のバージョンのユーザー — NGINX PlusのHTTPヘルスチェックの設定

1つずつ見ていきましょう。

NGINXネイティブの使用状況レポートを設定

インストールすると、NGINX PlusはデフォルトのDNSエントリ「nginx-mgmt.local」を介してNGINX Instance Managerへの接続を自動的に確立します。デフォルトでは、NGINX Plusは30分ごとにNGINX Instance Managerと通信し、使用状況情報を送信します。NGINX Instance ManagerのDNSエントリやデフォルトの接続間隔を変更する必要がある場合は、NGINX設定にmgmt{}ブロックを追加してください。また、UUIDファイル、mTLS、DNSリゾルバー、使用状況の送信間隔、usage_reportエンドポイントなど、その他のデフォルトディレクティブも用意されています。カスタマイズ可能なディレクティブの一覧については、包括的なmgmtmoduleのドキュメントを参照してください。ngx_mgmt_moduleを使用すると、ディレクティブを簡単にカスタマイズでき、柔軟性と利便性が向上します。

以下のセクションでは、お使いの環境に合わせてこの機能を設定する方法について説明します。

NGINX Plusの設定

  1. システムのセキュリティを強化するため、mTLSの使用を推奨します。そのためには、NGINX PlusインスタンスとNGINX Instance Managerの両方に対して、証明書、キー、CAキー証明書を生成します。キーの生成方法について詳しくは、こちらをクリックしてください。
  2. 設定ファイルnginx.confのmanagementブロック内で、クライアント証明書と秘密鍵ファイルへのパスを指定します。
		
   mgmt {
          ssl_protocols TLSv1.2 TLSv1.3;
          ssl_ciphers DEFAULT;
          ssl_certificate          /home/ubuntu/agent.crt;
          ssl_certificate_key      /home/ubuntu/agent.key
       }
  1. 安全で信頼性の高い認証プロセスを実現するため、証明書の真正性を検証するCAチェーンへのパスを指定します。

   mgmt {
          ssl_trusted_certificate  /home/ubuntu/ca.pem;
          ssl_verify               on;
          ssl_verify_depth         2;
       }
  1. カスタムDNSリゾルバーを使用する場合は、mgmt{}block内でresolverディレクティブを使用してリゾルバーのアドレスを指定します。

   mgmt {
          resolver 3.X.X.X;
       }
  1. NGINX Instance ManagerにカスタムFQDNを設定するには、FQDNをusage_reportディレクティブで指定します。次に、ホスト名をNGINX Instance ManagerのIPアドレスに関連付けるAレコードをローカルDNSに追加します。

   mgmt {
          resolver 3.X.X.X;
          usage_report endpoint=nms.local interval=15m;
       }

NGINX Plusの設定例:


  mgmt {
         usage_report endpoint=nms.local interval=30m;
         resolver 3.X.X.X;
         ssl_protocols TLSv1.2 TLSv1.3;
         ssl_ciphers DEFAULT;
         ssl_certificate          /home/ubuntu/agent.crt;
         ssl_certificate_key      /home/ubuntu/agent.key;

         ssl_trusted_certificate  /home/ubuntu/ca.pem;
         ssl_verify               on;
         ssl_verify_depth         2;
     }

NGINXの設定を保存し、NGINX Plusを再読み込みします。

sudo nginx -s reload

NGINX Instance Managerの設定

serverブロック内の/etc/nginx/conf.d/nms-HTTP.confにSSL証明書を追加します。こちらをクリックすると、NGINX Management SuiteサーバーでSSL証明書を設定する方法を確認できます。


server {
    listen 443 ssl http2;
    root /var/www/nms;
    server_name _;
    ssl_protocols       TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ssl_session_cache   shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_certificate         /etc/nms/certs/server.crt;
    ssl_certificate_key     /etc/nms/certs/server.key;
    ssl_client_certificate  /etc/nms/certs/ca.pem;
    ssl_verify_client on;
 }

NGINX Plusの使用状況を確認するには、ブラウザーでNGINX Management Suiteにログインし、NGINX Instance Managerモジュールに移動します。次に、ページ左下にある[NGINX Plus]タブを選択します。

手順を詳しく説明したこちらの動画チュートリアルをご覧ください:

 

エラーログメッセージ

NGINX Instance Managerで使用状況データを確認できない場合に、NGINX Plusインスタンスでトラブルシューティングの対象となるエラーメッセージの例を以下に示します。

  • 動的リゾルバーのエラー:DNSリゾルバーの名前解決に失敗しました。
2024/04/02 04:02:10 [error] 574079#574079: recv() failed (111: Connection refused) while resolving, resolver: 3.17.128.165:53
2024/04/02 04:02:35 [warn] 574079#574079: usage report: nginx-mgmt.locals could not be resolved (110: Operation timed out)
  • システムリゾルバーの障害:NGINX Instance Managerのホスト名を解決できない
2024/04/02 13:20:44 [info] 103888#0: usage report: host not found in resolver "nginx-mgmt.local"
  • SSL接続エラー:SSL証明書を検証できないか、有効期限が切れています。
2024/04/02 13:13:50 [warn] 103877#0: usage report: peer SSL connection failed
  • ピア通信障害:NGINX Instance Managerに到達できません。
2024/04/02 13:15:25 [warn] 103877#0: usage report: peer connection failed (-1: Unknown error)
2024/04/02 13:23:32 [warn] 103877#0: usage report: failed (server returned: 404 Not Found)
2024/04/02 19:53:45 [warn] 4648#4648: usage report: connection timed out

NGINX Agentのインストール

まだR31に移行していない場合や、近いうちに移行する予定がない場合でも、NGINX PlusインスタンスをNGINX Instance Managerに引き続き報告できます。そのためには、お使いの環境にNGINX Agentをインストールします。インストールが完了したら、Instance Managerとの接続を確立し、使用状況データの送信を開始できます。NGINX Agentをインストールするには、こちらのリンクに記載されている手順に従ってください。

NGINX Plusの使用状況を確認するには、ブラウザーでNGINX Management Suiteにログインし、NGINX Instance Managerモジュールに移動します。次に、ページ左下にある[NGINX Plus]タブを選択します。

手順を詳しく説明したこちらの動画チュートリアルをご覧ください:

 

NGINX PlusのHTTPヘルスチェックの設定

NGINX AgentのインストールまたはR31へのアップグレードを予定していない場合でも、NGINX Plusインスタンスをレポートできます。これを行うには、NGINX構成ファイルでHTTPヘルスチェックを設定します。ただし、このオプションを利用するには、NGINX Plus構成ファイルを手動で更新する必要があります。特に複数のインスタンスがある環境では、この方法には時間と手間がかかる可能性があります。そのため、このオプションを選択する前に、これらの点を考慮することをお勧めします。

NGINX Plusの設定

  1. NGINX Plusの設定を開き、http {}ブロック内にコードを挿入します。

   keyval_zone zone=uuid:32K state=/var/lib/nginx/state/instance_uuid.json;
   keyval 1 $nginx_uuid zone=uuid;
   upstream receiver {
    zone receiver 64k;

    # REQUIRED: Update NMS_FQDN with NGINX Management Suite IP Address or hostname.
    # If configuring with hostname, please ensure to uncomment the resolver
    # directive below and define a DNS server that can resolve the hostname.
    server NMS_FQDN:443;

    # OPTIONAL: Update DNS_UP with DNS server IP address that can resolve
    # the hostname defined above.
    #resolver DNS_IP;
   }  

map CERT $repo_crt {
    # OPTIONAL: Location of client certificate
      default /home/ubuntu/agent.crt;
   }  

map KEY $repo_key {
    # OPTIONAL: Location of client certificate private key
      default /home/ubuntu/agent.key; 
   }


 server {
    location @ngx_usage_https {
        # OPTIONAL: Configure scheme (http|https) here
        proxy_pass https://receiver;

        # REQUIRED: If using NGINX APP PROTECT (NAP) on this instance, set nap=active on the following line:
proxy_set_header Nginx-Usage "Version=$nginx_version;Hostname=$hostname;uuid=$nginx_uuid;nap=active";	 

        health_check uri=/api/nginx-usage interval=1800s;       # DO NOT MODIFY
        proxy_ssl_certificate     $repo_crt;                    # DO NOT MODIFY
        proxy_ssl_certificate_key $repo_key;                    # DO NOT MODIFY
    }

    location @self {
        health_check uri=/_uuid interval=1d;
        proxy_pass http://self;
    }

    location = /_uuid {
        if ($nginx_uuid !~ .) {
            set $nginx_uuid $request_id;
        }
        return 204;
    }

    listen unix:/tmp/ngx_usage.sock;
  }

 upstream self {
    zone self 64k;
    server unix:/tmp/ngx_usage.sock;
 }
  1. NMS FQDNをInstance Managerのホスト名またはIPアドレスに更新します。プライベートDNSを使用している場合は、コメントを解除し、DNSサーバーのIPアドレスを更新します。
  2. NGINX Instance ManagerへのHTTPトラフィックのセキュリティを確保するには、map CERTブロックとmap KEYブロックでSSL証明書とキーの場所を指定する必要があります。

変更を保存し、NGINXを再読み込みします。

sudo nginx -s reload

NGINX Plusの使用状況を確認するには、ブラウザーでNGINX Management Suiteにログインし、NGINX Instance Managerモジュールに移動します。次に、ページ左下のNGINX Plusタブを選択します。

手順を詳しく説明したこちらの動画チュートリアルをご覧ください:

 

まとめ

お客さまの状況に応じて、利用状況レポートを容易に効率化・自動化できるよう支援することに注力しています。そのため、柔軟にレポートを作成できる複数のオプションを提供しています。先日リリースされたNGINX Plus R31アップデートにより、パフォーマンスに影響を与えることなく、F5の要件に準拠しながら、NGINX Plusインスタンスの月次利用状況データをさらに簡単かつ効率的にレポートできるようになりました。

共有

著者について

Akash Ananthanarayanan
Akash Ananthanarayananテクニカルマーケティングマネージャー | F5 NGINX

Akash Ananthanarayananのその他のブログ記事

関連するブログ記事

チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する
NGINX | 2024/01/18

チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する

OpenTelemetryを使用してNGINXサーバーの状態と健全性をより明確に把握することで、問題のトラブルシューティングを行い、Webアプリケーションのパフォーマンスを向上できます。

AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正
NGINX | 2023/05/31

AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正

Akita SoftwareのAPIオブザーバビリティ向け新しいNGINX Plus Certified Moduleを活用して、APIエンドポイントの問題をより迅速に特定し、修正できます。

JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法
NGINX | 2023/02/09

JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法

Red HatのシニアプリンシパルデベロッパーアドボケイトであるDaniel Oh氏が、Javaプロジェクトをゼロから構築するためのひな形を作成し、Kubernetesネイティブアプリケーションとしてビルドする方法を解説します。

F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング
NGINX | 2022/05/24

F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング

NGINXaaS for Azureは、NGINX PlusをAzureネイティブのSaaSとして利用できるサービスです。NGINXの設定を容易にリフト&シフトできるため、クラウド導入とモダンアプリの展開を加速できます。

SELinuxでNGINXおよびNGINX Plusを使用する
NGINX | 2018/08/17

SELinuxでNGINXおよびNGINX Plusを使用する

Red Hat Enterprise Linux(RHEL)および関連ディストリビューションでSecurity-Enhanced Linux(SELinux)を有効にすると、デフォルト設定によりNGINXとNGINX Plusの一部の操作が制限されます。この記事では、すべての機能を利用できるようにSELinuxの設定を変更する方法について説明します。

NGINX PlusによるAWS Auto Scalingグループの負荷分散
NGINX | 2017/03/06

NGINX PlusによるAWS Auto Scalingグループの負荷分散

新しいnginx-asg-sync統合ソフトウェアにより、NGINX PlusはAWS Auto Scalingグループの負荷を直接分散できるため、クラウドでの負荷分散がさらに柔軟になります