

# CloudWatch ソリューション: Amazon EC2 での NGINX ワークロード
<a name="Solution-NGINX-On-EC2"></a>

このソリューションは、EC2 インスタンスで実行されている NGINX アプリケーション用の CloudWatch エージェントを使用して、すぐに使用できるメトリクス収集を設定するのに役立ちます。すべての CloudWatch オブザーバビリティソリューションの一般的な情報については、「[CloudWatch オブザーバビリティソリューション](Monitoring-Solutions.md)」を参照してください。

**Topics**
+ [要件](#Solution-NGINX-On-EC2-Requirements)
+ [利点](#Solution-NGINX-On-EC2-Benefits)
+ [コスト](#Solution-NGINX-On-EC2-Costs)
+ [このソリューションの CloudWatch エージェント設定](#Solution-NGINX-CloudWatch-Agent)
+ [ソリューションにエージェントをデプロイする](#Solution-NGINX-Agent-Deploy)
+ [NGINX ソリューションダッシュボードを作成する](#Solution-NGINX-Dashboard)

## 要件
<a name="Solution-NGINX-On-EC2-Requirements"></a>

このソリューションは、以下の条件に適しています。
+ サポートされているバージョン: NGINX バージョン 1.24
+ コンピューティング: Amazon EC2
+ 特定の AWS リージョン のすべての NGINX ワークロードで最大 500 個の EC2 インスタンスをサポート
+ CloudWatch エージェントの最新バージョン
+ Prometheus Exporter: nginxinc/nginx-prometheus-exporter (Apache 2.0 ライセンス)
+ EC2 インスタンスにインストールされた SSM エージェント
**注記**  
AWS Systems Manager (SSM エージェント) は、AWS および信頼できるサードパーティーが提供している一部の [Amazon マシンイメージ (AMI)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) にプリインストールされています。エージェントがインストールされていない場合は、使用しているオペレーティングシステムタイプの手順を使用して、手動でインストールできます。  
 [Linux 用 EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html) 
 [macOS 用の EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-macos.html) 
 [Windows Server 用の EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-windows.html) 

## 利点
<a name="Solution-NGINX-On-EC2-Benefits"></a>

このソリューションでは NGINX をモニタリングしているため、以下のユースケースに役立つインサイトが得られます。
+ 接続メトリクスを確認して、潜在的なボトルネック、接続の問題、予期しない使用状況を特定します。
+ HTTP リクエストボリュームを分析して、NGINX の全体的なトラフィック負荷を把握します。

ソリューションの主な利点を以下に示します。
+ CloudWatch エージェント設定を使用して NGINX のメトリクス収集を自動化し、手動計測をなくします。
+ NGINX メトリクス用の事前設定済みの統合 CloudWatch ダッシュボードが用意されています。ダッシュボードは、ダッシュボードを初めて作成するときにメトリクスが存在しない場合でも、ソリューションを使用して設定された新しい NGINX EC2 インスタンスからのメトリクスを自動的に処理します。

以下の画像は、このソリューションのダッシュボードの例です。

![\[NGINX ソリューションのダッシュボードの例。\]](http://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/images/NGINXDashboard.png)


## コスト
<a name="Solution-NGINX-On-EC2-Costs"></a>

このソリューションは、アカウントでリソースを作成して使用します。標準使用には料金がかかります。これには以下を含みます。
+ このソリューションのために CloudWatch エージェントによって収集されたすべてのメトリクスは、埋め込みメトリクス形式 (EMF) を使用して CloudWatch Logs に公開されます。これらの CloudWatch ログは、ボリュームと保持期間に基づいて課金されます。したがって、このソリューションの **PutMetricData** API コールに対して課金されることはありません。ログから抽出して取り込まれたメトリクスは、カスタムメトリクスとして課金されます。このソリューションで使用されるメトリクスの数は、EC2 ホストの数によって異なります。
  + ソリューション用に設定された各 NGINX EC2 ホストは、合計 8 つのメトリクスを公開します。
+ 1 つのカスタムダッシュボード。

CloudWatch の料金の詳細については、「[Amazon CloudWatch の料金](https://aws.amazon.com/cloudwatch/pricing/)」をご覧ください。

料金計算ツールを使用すると、このソリューションを使用するためのおよその月額コストを見積もることができます。

**料金計算ツールを使用して毎月のソリューションのコストを見積もるには**

1. [Amazon CloudWatch 料金計算ツール](https://calculator.aws/#/createCalculator/CloudWatch)を開きます。

1. **[リージョンの選択]** では、ソリューションをデプロイする AWS リージョンを選択します。

1. **[メトリクス]** セクションの **[メトリクスの数]** に **8 \$1 number of EC2 instances configured for this solution** を入力します。

1. **[ログ]** セクションの **[標準ログ: 取り込まれたデータ]** に、すべての EC2 ホストで CloudWatch Agent によって生成される 1 日あたりのログのボリューム推定値を入力します。例えば、5 つの EC2 インスタンスは 1 日あたり 1000 バイト未満しか生成しません。設定したら、CloudWatch Logs から提供される ` IncomingBytes` メトリクスを使用してバイト使用量を確認できます。必ず適切なロググループを選択してください。

1. **[ログ]** セクションの **[ログストレージ/アーカイブ (標準および公開ログ)]** で、**Yes to Store Logs: Assuming 1 month retention** を選択します。保持期間にカスタム変更を加える場合は、この値を変更します。

1. **[ダッシュボードとアラーム]** セクションの **[ダッシュボードの数]** に「**1**」と入力します。

1. 毎月の見積コストは、料金計算ツールの下部に表示されます。

## このソリューションの CloudWatch エージェント設定
<a name="Solution-NGINX-CloudWatch-Agent"></a>

CloudWatch エージェントは、サーバー上およびコンテナ化された環境で継続的かつ自律的に実行されるソフトウェアです。インフラストラクチャとアプリケーションからメトリクス、ログ、トレースを収集し、CloudWatch と X-Ray に送信します。

CloudWatch エージェントの詳細については、「[CloudWatch エージェントを使用してメトリクス、ログ、トレースを収集する](Install-CloudWatch-Agent.md)」を参照してください。

このソリューションのエージェント設定では、NGINX ワークロードのモニタリングと観測を開始するのに役立つ一連のメトリクスを収集します。CloudWatch エージェントは、ダッシュボードにデフォルトで表示されるよりも多くの NGINX メトリクスを収集するように設定できます。収集できるすべての NGINX メトリクスのリストについては、「[NGINX OSS のメトリクス](https://github.com/nginxinc/nginx-prometheus-exporter?tab=readme-ov-file#exported-metrics)」を参照してください。

CloudWatch エージェントを設定する前に、まずメトリクスを公開するように NGINX を設定する必要があります。次に、サードパーティーの Prometheus メトリクスエクスポーターをインストールして設定する必要があります。

### NGINX メトリクスを公開する
<a name="Solution-NGINX-Expose-Metrics"></a>

**注記**  
 次のコマンドは、Linux 用です。Windows Server の同等のコマンドについては、[Windows 用 NGINX に関するページ](https://nginx.org/en/docs/windows.html)を確認してください。

まず、`stub_status` モジュールを有効にする必要があります。NGINX 設定ファイルに新しいロケーションブロックを追加します。NGINX の `stub_status` モジュールを有効にするには、`nginx.conf` の `server` ブロックに次の行を追加します。

```
location /nginx_status { 
          stub_status on;
          allow 127.0.0.1; # Allow only localhost to access
          deny all; # Deny all other IPs
        }
```

NGINX を再ロードする前に、NGINX 設定を次のように検証します。

```
sudo nginx -t
```

この検証コマンドは、ウェブサイトがダウンする原因となる予期しないエラーを防ぐのに役立ちます。次の例は、正常なレスポンスを示します。

```
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
```

更新された設定が正常に検証されたら、次のように NGINX を再ロードします (出力はありません)。

```
sudo systemctl reload nginx
```

このコマンドは、NGINX プロセスに設定を再ロードするように指示します。再ロードは、フル再起動より簡明です。再ロードでは、新しい設定で新しいワーカープロセスを開始し、古いワーカープロセスを的確にシャットダウンします。

NGINX ステータスエンドポイントを次のようにテストします。

```
curl http://127.0.0.1/nginx_status
```

次の例は、正常なレスポンスを示します。

```
Active connections: 1
server accepts handled requests
6 6 6
Reading: 0 Writing: 1 Waiting: 0
```

次の例は、正常でないレスポンスを示しています (続行する前にこれまでの手順を確認してください)。

```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
      <head>
          <title>The page is not found</title>
          ...
```

### Prometheus メトリクスエクスポーターを設定する
<a name="Solution-NGINX-Configure-Prometheus"></a>

[公式 GitHub リポジトリ](https://github.com/nginxinc/nginx-prometheus-exporter/releases)から最新の NGINX Prometheus エクスポーターリリースをダウンロードします。プラットフォームに適合するバイナリをダウンロードする必要があります。

次の例は、AMD64 のコマンドを示しています。

```
cd /tmp
wget https://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v1.3.0/nginx-prometheus-exporter_1.3.0_linux_amd64.tar.gz
tar -xzvf nginx-prometheus-exporter_1.3.0_linux_amd64.tar.gz
sudo cp nginx-prometheus-exporter /usr/local/bin/
rm /tmp/nginx-prometheus-exporter*
```

Prometheus エクスポーターを実行して、NGINX スタブステータスページに移動します。

```
nohup /usr/local/bin/nginx-prometheus-exporter -nginx.scrape-uri http://127.0.0.1/nginx_status &>/dev/null &
```

次の例は、レスポンス (バックグラウンドジョブ ID と PID) を示しています。

```
[1] 74699
```

### NGINX Prometheus エンドポイントをテストする
<a name="Solution-NGINX-Test-Prometheus"></a>

NGINX Prometheus エクスポーターが関連するメトリクスの公開を開始したことを次のように検証します。

```
curl http://localhost:port-number/metrics
```

次の例は、正常なレスポンスを示します。

```
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0
go_gc_duration_seconds{quantile="0.25"} 0
...
# HELP nginx_connections_accepted Accepted client connections
# TYPE nginx_connections_accepted counter
nginx_connections_accepted 14
# HELP nginx_connections_active Active client connections
# TYPE nginx_connections_active gauge
nginx_connections_active 1
...
# TYPE promhttp_metric_handler_requests_total counter
promhttp_metric_handler_requests_total{code="200"} 1
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0
```

### このソリューションのエージェント設定
<a name="Solution-NGINX-Agent-Config-Intro"></a>

エージェントによって収集されるメトリクスは、エージェント設定で定義されます。このソリューションには、ソリューションのダッシュボードに適したディメンションで推奨メトリクスを収集するためのエージェント設定が用意されています。

ソリューションをデプロイする手順については、「[ソリューションにエージェントをデプロイする](#Solution-NGINX-Agent-Deploy)」で後述します。以下の情報は、環境に合わせてエージェント設定をカスタマイズする方法を理解するのに役立ちます。

Prometheus エクスポーターで使用されるポート番号など、環境に合わせてエージェントと Prometheus の設定の一部をカスタマイズする必要があります。

Prometheus エクスポーターで使用されるポートは、次のコマンドを使用して確認できます。

```
sudo netstat -antp | grep nginx-prom
```

次の例は、レスポンスを示しています (ポート値 9113 を確認)。

```
tcp6 0 0 :::9113 :::* LISTEN 76398/nginx-prometh
```

### NGINX ホストのエージェント設定
<a name="Solution-NGINX-Agent-Config"></a>

Prometheus モニターリングを使用した CloudWatch エージェントには、Prometheus メトリクスをスクレイプするために 2 つの設定が必要です。各設定は、「[ステップ 2: 推奨 CloudWatch エージェント設定ファイルを Systems Manager パラメータストアに保存する](#Solution-NGINX-Agent-Step2)」で後述するように、SSM のパラメータストアに別々のパラメータとして保存されます。

最初の設定は、Prometheus の「[scrape\$1config](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config)」ドキュメントに記載されているように、Prometheus エクスポーター用です。2 番目の設定は、CloudWatch エージェント用です。

 **Prometheus の設定** 

*port-number* をサーバーのポートに置き換えます。

```
global:
  scrape_interval: 30s
  scrape_timeout: 10s
  
scrape_configs:
- job_name: 'nginx'
  metrics_path: /metrics
  static_configs:
    - targets: ['localhost:port-number']
  ec2_sd_configs:
    - port: port-number
  relabel_configs:
    - source_labels: ['__meta_ec2_instance_id']
      target_label: InstanceId
  metric_relabel_configs:
    - source_labels: ['__name__']
      regex: 'nginx_up|nginx_http_requests_total|nginx_connections_.*'
      action: keep
```

 **CloudWatch エージェントの設定** 

以前の CloudWatch エージェント設定では、これらのメトリクスは[埋め込みメトリクス形式 (EMF)](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format_Specification.html) を使用して CloudWatch Logs を介して公開されていました。これらのログは、ロググループ ` nginx` を使用するように設定されています。*log\$1group\$1name* は、CloudWatch ログを表す別の名前にカスタマイズできます。

 Windows Server を使用している場合は、次の設定の *prometheus\$1config\$1path* を `C:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\prometheus.yaml` に設定します。

```
{
"agent": {
  "metrics_collection_interval": 60
},
"logs": {
  "metrics_collected": {
      "prometheus": {
          "log_group_name": "nginx",
          "prometheus_config_path": "/opt/aws/amazon-cloudwatch-agent/etc/prometheus.yaml",
          "emf_processor": {
              "metric_declaration_dedup": true,
              "metric_namespace": "CWAgent",
              "metric_declaration":[
                  {
                      "source_labels":["InstanceId"],
                      "metric_selectors":["nginx_up", "nginx_http_requests_total", "nginx_connections*"],
                      "dimensions": [["InstanceId"]]
                  }
              ]
          }
      }
  }
}
}
```

## ソリューションにエージェントをデプロイする
<a name="Solution-NGINX-Agent-Deploy"></a>

ユースケースに応じて、CloudWatch エージェントをインストールするためのいくつかのアプローチがあります。このソリューションには Systems Manager を使用することをお勧めします。これにより、コンソール操作機能が提供され、1 つの AWS アカウント内のマネージドサーバーのフリートの管理が簡単になります。このセクションの手順では Systems Manager を使用し、CloudWatch エージェントを既存の設定で実行していない場合を対象としています。CloudWatch エージェントが実行されているかどうかは、「[CloudWatch エージェントが実行されていることを確認する](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running)」の手順に従って確認できます。

ワークロードがデプロイされている EC2 ホストで CloudWatch エージェントを既に実行していて、エージェント設定を管理している場合は、このセクションの手順をスキップし、既存のデプロイメカニズムに従って設定を更新できます。新しい CloudWatch エージェントと Prometheus の設定を既存の設定とマージしてから、マージされた設定をデプロイしてください。Systems Manager を使用して CloudWatch エージェントの設定を保存および管理している場合は、設定を既存のパラメータ値にマージできます。詳細については、「[CloudWatch エージェント設定ファイルの管理](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/create-store-cloudwatch-configurations.html)」を参照してください。

**注記**  
Systems Manager を使用して次の CloudWatch エージェント設定をデプロイすると、EC2 インスタンスの既存の CloudWatch エージェント設定がある場合は置き換えられるか、上書きされます。独自の環境やユースケースに合わせてこの設定を変更できます。設定で定義されているメトリクスは、ソリューションを提供するダッシュボードに最小限必要なものです。

このデプロイプロセスには、以下のステップが含まれます。
+ ステップ 1: ターゲット EC2 インスタンスに必要な IAM アクセス許可があることを確認します。
+ ステップ 2: 推奨エージェント設定ファイルを Systems Manager パラメータストアに保存します。
+ ステップ 3: CloudFormation スタックを使用して 1 つまたは複数の EC2 インスタンスに CloudWatch エージェントをインストールします。
+ ステップ 4: エージェントのセットアップが正しく設定されていることを確認します。

### ステップ 1: ターゲット EC2 インスタンスに必要な IAM アクセス許可があることを確認する
<a name="Solution-NGINX-Agent-Step1"></a>

CloudWatch エージェントをインストールして設定するためのアクセス許可を Systems Manager に付与する必要があります。EC2 インスタンスから CloudWatch にテレメトリを発行するアクセス許可を CloudWatch エージェントに付与する必要があります。また、CloudWatch エージェント EC2 読み取りアクセス権を付与する必要もあります。EC2 InstanceId をメトリクスディメンションとして追加するには、EC2 読み取りアクセス権が必要です。この追加要件は、EC2 Service Discovery を介して ` __meta_ec2_instance_id` を使用するため、上記で説明したように `prometheus.yaml` によって扱われます。

インスタンスにアタッチされた IAM ロールに **CloudWatchAgentServerPolicy**、**AmazonSSMManagedInstanceCore**、および **AmazonEC2ReadOnlyAccess** IAM ポリシーがアタッチされていることを確認します。
+ ロールを作成したら、ロールを EC2 インスタンスにアタッチします。EC2 インスタンスにロールをアタッチするには、「[インスタンスへの IAM ロールのアタッチ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/attach-iam-role.html)」の手順に従います。

### ステップ 2: 推奨 CloudWatch エージェント設定ファイルを Systems Manager パラメータストアに保存する
<a name="Solution-NGINX-Agent-Step2"></a>

パラメータストアでは、設定パラメータを安全に保存および管理することで EC2 インスタンスへの CloudWatch エージェントのインストールが簡素化され、ハードコーディングされた値が不要になります。これにより、デプロイプロセスがより安全で柔軟になり、集中管理が可能になり、複数のインスタンスで設定を簡単に更新できるようになります。

以下の手順を使用して、パラメータストアに推奨 CloudWatch エージェント設定ファイルをパラメータとして保存します。

**CloudWatch エージェント設定ファイルをパラメータとして作成するには**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. コンソールで選択したリージョンが NGINX が実行されているリージョンであることを確認します。

1. ナビゲーションペインで **[アプリケーション管理]**、**[パラメータストア]** を選択します。

1. 以下の手順に従って、設定の新しいパラメータを作成します。

   1. **[パラメータの作成]** を選択します。

   1. **[名前]** ボックスに、後のステップで CloudWatch エージェント設定ファイルを参照するために使用する名前を入力します。例えば、** AmazonCloudWatch-NGINX-CloudWatchAgent-Configuration**。

   1. (オプション) **[説明]** ボックスにパラメータの説明を入力します。

   1. **[パラメータ階層]** で、**[標準]** を選択します。

   1. **[型]** で、**[文字列]** を選択します。

   1. **[データ型]** で、**[テキスト]** を選択します。

   1. **[値]** ボックスに、[NGINX ホストのエージェント設定](#Solution-NGINX-Agent-Config) にリストされた対応する JSON ブロックを貼り付けます。必要に応じてカスタマイズしてください。例えば、関連する `log_group_name`。

   1. **[パラメータの作成]** を選択します。

**Prometheus 設定ファイルをパラメータとして作成するには**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで **[アプリケーション管理]**、**[パラメータストア]** を選択します。

1. 以下の手順に従って、設定の新しいパラメータを作成します。

   1. **[パラメータの作成]** を選択します。

   1. **[名前]** ボックスに、後のステップで設定ファイルを参照するために使用する名前を入力します。例えば、** AmazonCloudWatch-NGINX-Prometheus-Configuration**。

   1. (オプション) **[説明]** ボックスにパラメータの説明を入力します。

   1. **[パラメータ階層]** で、**[標準]** を選択します。

   1. **[型]** で、**[文字列]** を選択します。

   1. **[データ型]** で、**[テキスト]** を選択します。

   1. **[値]** ボックスに、[NGINX ホストのエージェント設定](#Solution-NGINX-Agent-Config) にリストされた対応する YAML ブロックを貼り付けます。必要に応じてカスタマイズしてください。例えば、`targets` に従った関連するポート番号。

   1. **[パラメータの作成]** を選択します。

### ステップ 3: CloudWatch エージェントをインストールし、CloudFormation テンプレートを使用して設定を適用する
<a name="Solution-NGINX-Agent-Step3"></a>

AWS CloudFormation を使用してエージェントをインストールし、これまでの手順で作成した CloudWatch エージェント設定を使用するように設定できます。

**このソリューションの CloudWatch エージェントをインストールして設定するには**

1. 次のリンクを使用して、CloudFormation **[スタックのクイック作成]** ウィザードを開きます: [https://console.aws.amazon.com/cloudformation/home?\$1/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-with-prometheus-config-1.0.0.json](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-with-prometheus-config-1.0.0.json)。

1. コンソールで選択したリージョンが NGINX ワークロードが実行されているリージョンであることを確認します。

1. **[スタック名]** にこのスタックを識別する名前 (** CWAgentInstallationStack** など) を入力します。

1. **[パラメータ]** セクションで、以下を指定します。

   1. **[CloudWatchAgentConfigSSM]** に、** AmazonCloudWatch-NGINX-CloudWatchAgent-Configuration** など、前に作成したエージェント設定の AWS Systems Manager パラメータの名前を入力します。

   1. **[PrometheusConfigSSM]** に、** AmazonCloudWatch-NGINX-Prometheus-Configuration** など、前に作成したエージェント設定の AWS Systems Manager パラメータの名前を入力します。

   1. ターゲットインスタンスを選択するには、2 つのオプションがあります。

      1. **[InstanceIds]** に、この設定で CloudWatch エージェントをインストールするインスタンス ID のカンマ区切りリストを指定します。1 つのインスタンスまたは複数のインスタンスを一覧表示できます。

      1. 大規模にデプロイする場合は、**[TagKey]** とそれに対応する **[TagValue]** を指定して、このタグと値を持つすべての EC2 インスタンスをターゲットにできます。**[TagKey]** を指定する場合は、対応する **[TagValue]** を指定する必要があります。(Auto Scaling グループの場合、Auto Scaling グループ内のすべてのインスタンスにデプロイするには、**[TagKey]** に **aws:autoscaling:groupName** を指定し、**[TagValue]** に Auto Scaling グループ名を指定します。)

1. 設定を確認し、**[スタックの作成]** を選択します。

まずテンプレートファイルを編集してカスタマイズする場合は、**[スタックの作成ウィザード]** の **[テンプレートファイルのアップロード]** オプションを選択して、編集したテンプレートをアップロードします。詳細については、「[CloudFormation コンソールからスタックを作成する](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)」を参照してください。次のリンクを使用して、テンプレートをダウンロードできます: [https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-with-prometheus-config-1.0.0.json]( https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-with-prometheus-config-1.0.0.json) 

**注記**  
このステップが完了すると、この Systems Manager パラメータは、ターゲットインスタンスで実行されている CloudWatch エージェントに関連付けられます。これにより、以下のように処理されます。  
Systems Manager パラメータが削除されると、エージェントは停止します。
Systems Manager パラメータを編集すると、設定の変更はスケジュールされた頻度 (デフォルトで 30 日) でエージェントに自動的に適用されます。
この Systems Manager パラメータに変更をすぐに適用する場合は、このステップを再度実行する必要があります。関連付けの詳細については、「[Systems Manager の関連付けの使用](https://docs.aws.amazon.com/systems-manager/latest/userguide/state-manager-associations.html)」を参照してください。

### ステップ 4: エージェントのセットアップが正しく設定されていることを確認する
<a name="Solution-NGINX-Agent-Step4"></a>

CloudWatch エージェントがインストールされているかどうかは、「[CloudWatch エージェントが実行されていることを確認する](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running)」の手順に従って確認できます。CloudWatch エージェントがインストールされておらず、実行されていない場合は、すべてが正しく設定されていることを確認してください。
+ 「[ステップ 1: ターゲット EC2 インスタンスに必要な IAM アクセス許可があることを確認する](#Solution-NGINX-Agent-Step1)」の説明に従って、EC2 インスタンスに正しいアクセス許可を持つロールがアタッチされていることを確認してください。
+ Systems Manager パラメータの JSON が正しく設定されていることを確認してください。「[CloudFormation での CloudWatch エージェントのインストールのトラブルシューティング](Install-CloudWatch-Agent-New-Instances-CloudFormation.md#CloudWatch-Agent-CloudFormation-troubleshooting)」のステップを実行してください。

すべてが正しく設定されている場合は、NGINX メトリクスが CloudWatch に公開されているはずです。CloudWatch コンソールをチェックして、公開されていることを確認します。

**NGINX メトリクスが CloudWatch に公開されていることを確認するには**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. **[メトリクス]**、**[すべてのメトリクス]** を選択します。

1. ソリューションをデプロイしたリージョンを選択したことを確認し、**[カスタム名前空間]**、**[CWAgent]** を選択します。

1. `nginx_http_requests_total` などのメトリクスを検索します。これらのメトリクスの結果が表示された場合、メトリクスは CloudWatch に公開されています。

## NGINX ソリューションダッシュボードを作成する
<a name="Solution-NGINX-Dashboard"></a>

このソリューションが提供するダッシュボードは、すべてのインスタンスでメトリクスを集約して表示することで、NGINX ワークロードメトリクスを表示します。ダッシュボードには、各メトリクスに寄与する上位の要因 (メトリクスウィジェットあたり上位 10 件) の内訳が表示されます。これにより、観測されたメトリクスに大きく寄与する外れ値やインスタンスをすばやく特定できます。

ダッシュボードを作成するには、以下のオプションを使用できます。
+ CloudWatch コンソールを使用してダッシュボードを作成します。
+ AWS CloudFormation コンソールを使用してダッシュボードをデプロイします。
+ AWS CloudFormation インフラストラクチャをコードとしてダウンロードし、継続的インテグレーション (CI) オートメーションの一部として統合します。

CloudWatch コンソールを使用してダッシュボードを作成すると、実際に作成して課金される前にダッシュボードをプレビューできます。

**注記**  
このソリューションで CloudFormation を使用して作成されたダッシュボードには、ソリューションがデプロイされたリージョンのメトリクスが表示されます。NGINX メトリクスが公開されるリージョンに CloudFormation スタックを必ず作成してください。  
CloudWatch エージェント設定で `CWAgent` 以外のカスタム名前空間を指定した場合は、ダッシュボードの CloudFormation テンプレートを変更して、`CWAgent` を、使用しているカスタマイズされた名前空間に置き換える必要があります。

**CloudWatch コンソールを使用してダッシュボードを作成するには**

1. 次のリンクを使用して CloudWatch コンソール **[ダッシュボードの作成]** を開きます: [https://console.aws.amazon.com/cloudwatch/home?\$1dashboards?dashboardTemplate=NginxOnEc2&referrer=os-catalog](https://console.aws.amazon.com/cloudwatch/home?#dashboards?dashboardTemplate=NginxOnEc2&referrer=os-catalog)。

1. コンソールで選択したリージョンが NGINX ワークロードが実行されているリージョンであることを確認します。

1. ダッシュボードの名前を入力し、**[ダッシュボードの作成]** を選択します。

   このダッシュボードを他のリージョンの類似のダッシュボードと簡単に区別するために、**NGINXDashboard-us-east-1** のように、ダッシュボード名にリージョン名を含めることをお勧めします。

1. ダッシュボードをプレビューし、**[保存]** を選択してダッシュボードを作成します。

**CloudFormation を使用してダッシュボードを作成するには**

1. 次のリンクを使用して、CloudFormation **[スタックのクイック作成]** ウィザードを開きます: [https://console.aws.amazon.com/cloudformation/home?\$1/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/NGINX\$1EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/NGINX_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json)。

1. コンソールで選択したリージョンが NGINX ワークロードが実行されているリージョンであることを確認します。

1. **[スタック名]** にこのスタックを識別する名前 (** NGINXDashboardStack** など) を入力します。

1. **[パラメータ]** セクションで、**[DashboardName]** パラメータにダッシュボードの名前を指定します。

1. このダッシュボードを他のリージョンの類似のダッシュボードと簡単に区別するために、** NGINXDashboard-us-east-1** のように、ダッシュボード名にリージョン名を含めることをお勧めします。

1. **[機能と変換]** で、変換のためのアクセス機能を承認します。CloudFormation は IAM リソースを追加しないことに注意してください。

1. 設定を確認し、**[スタックの作成]** を選択します。

1. スタックステータスが **CREATE\$1COMPLETE** になったら、作成したスタックの **[リソース]** タブを選択し、**[物理 ID]** のリンクを選択してダッシュボードに移動します。コンソールの左側のナビゲーションペインで **[ダッシュボード]** を選択し、**[カスタムダッシュボード]** でダッシュボード名を検索することで、CloudWatch コンソールでダッシュボードにアクセスすることもできます。

まずテンプレートファイルを編集してカスタマイズする場合は、**[スタックの作成ウィザード]** の **[テンプレートファイルのアップロード]** オプションを選択して、編集したテンプレートをアップロードします。詳細については、「[CloudFormation コンソールからスタックを作成する](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)」を参照してください。次のリンクを使用して、テンプレートをダウンロードできます: [https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/NGINX\$1EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json]( https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/NGINX_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json) 

### NGINX ダッシュボードの使用を開始する
<a name="Solution-NGINX-Dashboard-GetStarted"></a>

新しい NGINX ダッシュボードで試すことができるタスクをいくつか示します。これらのタスクにより、ダッシュボードが正しく機能していることの検証が可能になり、NGINX ワークロードをモニタリングするためにダッシュボードを実際に使用する経験ができます。これらを試すと、ダッシュボードの操作に慣れ、可視化されたメトリクスを解釈できるようになっていきます。

 **接続メトリクスを確認する** 

**[接続]** セクションには、NGINX サーバーのクライアント接続処理に関するインサイトを提供するいくつかの主要なメトリクスがあります。これらの接続メトリクスをモニタリングすると、潜在的なボトルネック、接続の問題、予期しない接続パターンを特定するのに役立ちます。
+ 受け付けられたクライアント接続
+ アクティブなクライアント接続
+ 処理されたクライアント接続
+ リクエストを読み取る接続
+ アイドル状態のクライアント接続
+ レスポンスを書き込む接続

 **HTTP リクエストボリュームを分析する** 

**[HTTP リクエスト]** セクションの `request` メトリクスは、NGINX サーバーによって処理された HTTP リクエストの合計数を示しています。このメトリクスを経時的に追跡することで、NGINX インフラストラクチャの全体的なトラフィック負荷を把握し、それに応じてリソースの割り当てとスケーリングを計画できます。