

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# CloudWatch 解決方案：Amazon EC2 上的 NGINX 工作負載
<a name="Solution-NGINX-On-EC2"></a>

此解決方案可協助您透過 CloudWatch 代理程式，為在 EC2 執行個體上執行的 NGINX 應用程式設定開箱即用的指標收集功能。如需所有 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 Machine Image AMIs)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) 上。如果未安裝代理程式，您可以依循適用於您作業系統類型的程序手動安裝。  
 [在適用於 Linux 的 EC2 執行個體上手動安裝和解除安裝 SSM 代理程式](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html) 
 [在適用於 macOS 的 EC2 執行個體上手動安裝和解除安裝 SSM 代理程式](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-macos.html) 
 [在適用於 Windows Server 的 EC2 執行個體上手動安裝和解除安裝 SSM 代理程式](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 指標收集，免除手動檢測需求。
+ 提供預先設定的整合式 CloudWatch 儀表板，專門用於監控 NGINX 指標。儀表板將自動處理透過此解決方案設定之新 NGINX EC2 執行個體產生的指標，即使您第一次建立儀表板時這些指標不存在。

下圖是此解決方案之儀表板的範例。

![\[NGINX 解決方案的儀表板範例。\]](http://docs.aws.amazon.com/zh_tw/AmazonCloudWatch/latest/monitoring/images/NGINXDashboard.png)


## 成本
<a name="Solution-NGINX-On-EC2-Costs"></a>

此解決方案會在您的帳戶中建立並使用資源。您需要支付標準用量的費用，包括下列項目：
+ CloudWatch 代理程式為此解決方案收集的所有指標，皆會採用內嵌指標格式 (EMF) 發布至 CloudWatch Logs。這些 CloudWatch 日誌將依據容量和保留期限計費。因此，對於此解決方案，您不需要為任何 **PutMetricData** API 呼叫付費。從您的日誌中擷取並匯入的指標將按自訂指標計費。此解決方案使用的指標數目取決於 EC2 主機的數目。
  + 為此解決方案設定的每個 NGINX EC2 主機總共可發布八個指標。
+ 一個自訂儀表板。

如需 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. 在**日誌**區段中，對於**標準日誌：資料擷取**，輸入由 CloudWatch 代理程式在所有 EC2 主機上產生的預估每日日誌量。例如，五個 EC2 執行個體每天產生的資料量少於 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，請使用下列命令。檢查 [NGINX for Windows 頁面](https://nginx.org/en/docs/windows.html)，以取得 Windows Server 中的等效指令。

必須先啟用 `stub_status` 模組。在 NGINX 設定檔中新增一個位置區塊。在 `nginx.conf` 的 `server` 區塊中新增下列行，以啟用 NGINX 的 `stub_status` 模組：

```
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 指標。每個組態將儲存為 SSM 參數儲存區中的獨立參數，如稍後的[步驟 2：將建議的 CloudWatch 代理程式設定檔儲存在 Systems Manager 參數儲存區中](#Solution-NGINX-Agent-Step2)中所述。

第一個設定針對的是 Prometheus 匯出工具，如 Prometheus 的 [scrape\$1config](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config) 文件中所述。第二個組態適用於 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`。可以使用代表 CloudWatch 日誌的不同名稱來自訂 *log\$1group\$1name*。

 如果您使用的是 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 安裝此解決方案。它提供主控台體驗，並可讓您更輕鬆地管理單一 AWS 帳戶中的受管伺服器機群。本節說明採用 Systems Manager，適用於您沒有以現有組態執行 CloudWatch 代理程式的情況。您可以依循[確認 CloudWatch 代理程式正在執行中](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running)中的步驟，檢查 CloudWatch 代理程式是否正在執行。

如果您已在部署工作負載和管理代理程式組態的 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 堆疊在一或多個 EC2 執行個體上安裝 CloudWatch 代理程式。
+ 步驟 4：確認已正確完成代理程式設定。

### 步驟 1：確定目標 EC2 執行個體具有所需的 IAM 許可
<a name="Solution-NGINX-Agent-Step1"></a>

您必須授與 Systems Manager 安裝和設定 CloudWatch 代理程式的許可。必須授與 CloudWatch 代理程式從 EC2 執行個體發布遙測到 CloudWatch 的許可。還必須授與 CloudWatch 代理程式 EC2 讀取存取權。需要 EC2 讀取存取權，才能將 EC2 InstanceId 新增為指標維度。此額外需求由 `prometheus.yaml` 驅動，如上所述，因其透過 EC2 服務探索使用 ` __meta_ec2_instance_id`。

確定連結至執行個體的 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. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 確認主控台上選取的區域是執行 NGINX 的區域。

1. 從導覽窗格中，選擇**應用程式管理**、**參數儲存區**

1. 依循下列步驟為組態建立新的參數。

   1. 選擇 **Create parameter (建立參數)**。

   1. 在**名稱**方塊中，輸入您將用於在後續步驟中引用 CloudWatch 代理程式設定檔的名稱。例如 ** AmazonCloudWatch-NGINX-CloudWatchAgent-Configuration**。

   1. (選用) 在**描述**方塊中，輸入參數描述。

   1. 對於**參數層**，選擇**標準**。

   1. 在**類型**選擇**字串**。

   1. 對於**資料類型**，選擇**文字**。

   1. 在**值**方塊中，貼上 [NGINX 主機的代理程式組態](#Solution-NGINX-Agent-Config)中列示的對應 JSON 區塊。請務必視需要進行自訂。例如相關的 `log_group_name`。

   1. 選擇 **Create parameter (建立參數)**。

**建立 Prometheus 設定檔作為參數**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 從導覽窗格中，選擇**應用程式管理**、**參數儲存區**

1. 依循下列步驟為組態建立新的參數。

   1. 選擇 **Create parameter (建立參數)**。

   1. 在**名稱**方塊中，輸入您將用於在後續步驟中引用設定檔的名稱。例如 ** AmazonCloudWatch-NGINX-Prometheus-Configuration**。

   1. (選用) 在**描述**方塊中，輸入參數描述。

   1. 對於**參數層**，選擇**標準**。

   1. 在**類型**選擇**字串**。

   1. 對於**資料類型**，選擇**文字**。

   1. 在**值**方塊中，貼上 [NGINX 主機的代理程式組態](#Solution-NGINX-Agent-Config)中列示的對應 YAML 區塊。請務必視需要進行自訂。例如，根據 `targets` 的相關連接埠號碼。

   1. 選擇 **Create parameter (建立參數)**。

### 步驟 3：安裝 CloudWatch 代理程式並使用 CloudFormation 範本套用組態
<a name="Solution-NGINX-Agent-Step3"></a>

您可以使用 AWS CloudFormation 安裝代理程式，並將其設定為使用您在先前步驟中建立的 CloudWatch 代理程式組態。

**為此解決方案安裝和設定 CloudWatch 代理程式**

1. 使用此連結開啟 CloudFormation **快速建立堆疊**精靈：https：//[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**，輸入您先前建立之代理程式組態的 AWS Systems Manager 參數名稱，例如 ** AmazonCloudWatch-NGINX-CloudWatchAgent-Configuration**。

   1. 針對 **PrometheusConfigSSM**，輸入您先前建立之代理程式組態的 AWS Systems Manager 參數名稱，例如 ** AmazonCloudWatch-NGINX-Prometheus-Configuration**。

   1. 若要選取目標執行個體，您有兩個選項。

      1. 對於 **InstanceIds**，指定以逗號分隔的執行個體 ID 清單，列出您想要使用此組態安裝 CloudWatch 代理程式的執行個體 ID。您可以列出一個或多個執行個體。

      1. 若要大規模部署，可以指定 **TagKey** 和對應的 **TagValue**，以鎖定使用此標籤和值的所有 EC2 執行個體。指定 **TagKey** 時，必須指定對應的 **TagValue**。(對於 Auto Scaling 群組，請為 **TagKey** 指定 **aws:autoscaling:groupName**，並為 **TagValue** 指定 Auto Scaling 群組名稱，以部署到 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 代理程式正在執行中](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running)中的步驟，檢查 CloudWatch 代理程式是否已安裝。若 CloudWatch 代理程式未安裝且未執行，請確認您已正確完成所有設定。
+ 請確定您已連結具有 EC2 執行個體正確許可的角色，如[步驟 1：確定目標 EC2 執行個體具有所需的 IAM 許可](#Solution-NGINX-Agent-Step1)中所述。
+ 請確定您已正確設定 Systems Manager 參數的 JSON。請遵循 [使用 安裝 CloudWatch 代理程式的故障診斷 CloudFormation](Install-CloudWatch-Agent-New-Instances-CloudFormation.md#CloudWatch-Agent-CloudFormation-troubleshooting) 中的步驟。

若所有設定皆正確無誤，您應可看到 NGINX 指標已發布至 CloudWatch。可以檢查 CloudWatch 主控台，以確認系統是否正在發布這些指標。

**驗證 NGINX 指標是否已發布至 CloudWatch**

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 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：//[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 基礎結構的整體流量負載，據此規劃資源分配與擴展方案。