

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

# 設定 Amazon EMR 7.0.0 的 CloudWatch 代理程式
<a name="AmazonCloudWatchAgent-config-700"></a>

您可以設定 Amazon CloudWatch 代理程式，以使用[預設 CloudWatch 代理程式組態](AmazonCloudWatchAgent-metrics.md)提供的系統指標以外的其他系統指標。7.0.0 的組態需要使用引導動作，我們已在以下各節中提供相關範例。在即將發行的版本中，Amazon EMR 將透過 Amazon EMR API 提供其他組態選項。

**Topics**
+ [透過 Amazon EMR 7.0.0 設定其他系統指標](#AmazonCloudWatchAgent-config-700-add-metrics)
+ [透過 Amazon EMR 7.0.0 設定應用程式指標](#AmazonCloudWatchAgent-config-700-app-metrics)
+ [使用 Amazon EMR 7.0.0 將 Amazon Managed Service for Prometheus 設定為指標的雲端儲存空間](#AmazonCloudWatchAgent-config-700-prometheus)

## 透過 Amazon EMR 7.0.0 設定其他系統指標
<a name="AmazonCloudWatchAgent-config-700-add-metrics"></a>

使用以下步驟設定代理程式，以在 Amazon EMR 7.0.0 中使用不同組的系統指標：

1. 在您要存放指定 CloudWatch 代理程式指標之組態檔案的 Amazon S3 帳戶中，建立或選擇儲存貯體。

1. 使用指定的偏好指標來建立 `emr-amazon-cloudwatch-agent.json` 組態檔案。為此，請使用[建立 CloudWatch 代理程式組態檔案](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file.html)中所述的其中一個方法。如需有關 CloudWatch 代理程式組態檔案之結構的詳細資訊，請參閱《Amazon CloudWatch 使用者指南》中的**[手動建立或編輯 CloudWatch 代理程式組態檔案](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html)。

1. 接下來，請導覽至 GitHub 上的 **aws-emr-utilities** 儲存庫，然後下載以下系統指標指令碼：
   + **[https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/system-metrics/install_system_metrics_launcher.sh](https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/system-metrics/install_system_metrics_launcher.sh)**：下載後在背景中執行 `install_system_metrics.sh` 的指令碼，讓節點可完成引導。
   + **[https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/system-metrics/install_system_metrics.sh](https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/system-metrics/install_system_metrics.sh)**：此指令碼會等待其運作之執行個體，以完成引導，然後在 JSON 檔案中下載並套用組態。

1. 開啟各個 SH 檔案，並使用步驟 1 中儲存貯體的名稱取代 `amzn-s3-demo-bucket`。

1. 將一個 JSON 檔案和兩個 SH 檔案上傳至 S3 儲存貯體。

1. 現在，您可導覽至 Amazon EMR 主控台，並使用 CloudWatch 代理程式建立新的叢集。在左側導覽窗格中的 **EMR on EC2** 下，選取**叢集**，然後選取**建立叢集**。

1. 在**名稱和應用程式**區段下，選擇 7.0.0 或更高版本的 Amazon EMR 版本。

1. 在**應用程式套件**下，選取您要安裝至叢集的套件或應用程式，然後在您的選擇中納入 **Amazon CloudWatch 代理程式**。

1. 在**引導動作**區段中，選取**新增**。
   + 在**名稱**中插入 **install\$1system\$1metrics\$1launcher.sh**。
   + 在**指令碼位置**中插入 **s3://*amzn-s3-demo-bucket*/install\$1system\$1metrics\$1launcher.sh**。使用 S3 儲存貯體的路徑取代 `amzn-s3-demo-bucket`。
   + 將**引數**區塊留空。

1. 選取**新增引導操作**。

1. 繼續建立叢集以滿足您的工作負載需求。

在叢集啟動時，CloudWatch 代理程式會將您在組態檔案中指定的系統指標發布至 CloudWatch。

## 透過 Amazon EMR 7.0.0 設定應用程式指標
<a name="AmazonCloudWatchAgent-config-700-app-metrics"></a>

除了系統指標之外，您也可設定 Amazon CloudWatch 代理程式，以發布 HDFS 和 YARN 的應用程式指標。使用以下步驟設定代理程式，以發布應用程式指標：

1. 在您要存放指定 CloudWatch 代理程式指標之組態檔案的 Amazon S3 帳戶中，建立或選擇儲存貯體。

1. 接下來，請導覽至 GitHub 上的 **aws-emr-utilities** 儲存庫，然後下載以下指令碼：
   + **[https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/install_app_metrics_launcher.sh](https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/install_app_metrics_launcher.sh)**：下載後在背景中執行 `install_app_metrics.sh` 的指令碼，讓節點可完成引導。
   + **[https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/install_app_metrics.sh](https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/install_app_metrics.sh)**：此指令碼會等待其運作之執行個體，以完成引導，然後在 YAML 檔案 (您將於後續步驟中下載) 中下載並套用組態。

1. 開啟各個檔案，並使用步驟 1 中儲存貯體的名稱取代 `amzn-s3-demo-bucket`。

1. 接下來，請下載以下 YAML 映射檔案。如需有關這些 YAML 檔案結構化方式的詳細資訊，請參閱 *OpenTelemetry Instrumentation for Java* GitHub 儲存庫中的 [https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/jmx-metrics/javaagent](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/jmx-metrics/javaagent)。
   + **[https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/mappings/datanode-metrics.yaml](https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/mappings/datanode-metrics.yaml)**：Hadoop DataNode 指標的組態。
   + **[https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/mappings/namenode-metrics.yaml](https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/mappings/namenode-metrics.yaml)**：Hadoop NameNode 指標的組態。
   + **[https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/mappings/nodemanager-metrics.yaml](https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/mappings/nodemanager-metrics.yaml)**：Yarn NodeManager 指標的組態。
   + **[https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/mappings/resourcemanager-metrics.yaml](https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/mappings/resourcemanager-metrics.yaml)**：Yarn ResourceManager 指標的組態。

1. 將兩個 SH 檔案和四個 YAML 檔案上傳至 S3 儲存貯體。

1. 現在，您可導覽至 Amazon EMR 主控台，並使用 CloudWatch 代理程式建立新的叢集。在左側導覽窗格中的 **EMR on EC2** 下，選取**叢集**，然後選取**建立叢集**。

1. 在**名稱和應用程式**區段下，選擇 7.0.0 或更高版本的 Amazon EMR 版本。

1. 在**應用程式套件**下，選取您要安裝至叢集的套件或應用程式的自訂群組，然後在您的選擇中納入 **CloudWatch 代理程式**。

1. 在**引導動作**區段中，選取**新增**。
   + 在**名稱**中插入 **install\$1app\$1metrics\$1launcher.sh**。
   + 在**指令碼位置**中插入 **s3://*amzn-s3-demo-bucket*/install\$1app\$1metrics\$1launcher.sh**。使用 S3 儲存貯體的路徑取代 `amzn-s3-demo-bucket`。
   + 將**引數**區塊留空。

1. 選取**新增引導操作**。

1. 繼續建立叢集以滿足您的工作負載需求。

在叢集啟動時，CloudWatch 代理程式會將您隨系統指標指定的應用程式指標發布至 CloudWatch。

## 使用 Amazon EMR 7.0.0 將 Amazon Managed Service for Prometheus 設定為指標的雲端儲存空間
<a name="AmazonCloudWatchAgent-config-700-prometheus"></a>

您可設定 Amazon CloudWatch 代理程式，以將指標發布至 Amazon Managed Service for Prometheus (而非 CloudWatch)。

**注意**  
您可將指標從 Amazon CloudWatch 代理程式發布至 Amazon Managed Service for Prometheus 或 Amazon CloudWatch，但無法將指標發布至同一個叢集的兩個服務。

若要設定代理程式將指標發佈至 Amazon Managed Service for Prometheus，您必須將 `aps:RemoteWrite` AWS Identity and Access Management (IAM) 許可新增至 Amazon EMR 的 Amazon EC2 執行個體描述檔。下列政策範例包含必要許可：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aps:RemoteWrite"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowAPSRemotewrite"
    }
  ]
}
```

------

**使用 EMR 叢集上的 CloudWatch 代理程式，以將指標發布至 Amazon Managed Service for Prometheus**

在服務政策具有正確許可後，請使用以下步驟啟動叢集，該叢集會使用 CloudWatch 代理程式將指標發布至 Amazon Managed Service for Prometheus。

1. 使用 AWS 管理主控台 或 AWS CLI 建立 Amazon Managed Service for Prometheus 工作區。如需詳細資訊，請參閱 *Amazon Managed Service for Prometheus User Guide* 中的 [Create a workspace](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-onboard-create-workspace.html)。

1. 在您要存放將 Amazon Managed Service for Prometheus 指定為雲端儲存空間之啟動檔案的 Amazon S3 帳戶中，建立或選擇儲存貯體。

1. 接下來，請導覽至 GitHub 上的 **aws-emr-utilities** 儲存庫，然後下載以下指令碼：
   + **[https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/prometheus/add_prometheus_endpoint_launcher.sh](https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/prometheus/add_prometheus_endpoint_launcher.sh)**：下載後在背景中執行 `add_prometheus_endpoint.sh` 的指令碼，讓節點可完成引導。
   + **[https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/prometheus/add_prometheus_endpoint.sh](https://github.com/aws-samples/aws-emr-utilities/blob/main/applications/cloudwatch-agent/configuration/7.0/prometheus/add_prometheus_endpoint.sh)**：此指令碼會等待其運作之執行個體，以完成引導，然後設定 CloudWatch 代理程式以發布至 Amazon Managed Service for Prometheus 端點，其為您在啟動叢集時提供作為引數的端點。

1. 開啟各個檔案，並使用步驟 2 中儲存貯體的名稱取代 `amzn-s3-demo-bucket`。

1. 使用 AWS CLI 建立具有`add_prometheus_endpoint_launcher.sh`引導操作的 EMR 叢集。在以下命令中，使用包含引導動作的儲存貯體取代 `amzn-s3-demo-bucket`，並使用適合 Amazon Managed Service for Prometheus 工作區的遠端寫入端點取代 `managedpro-remote-write-workspace-url`。請務必指定 `emr-7.0.0` 或更高版本的 Amazon EMR 發行標籤。

   ```
   aws emr create-cluster --name managedpro-cluster \
       --release-label emr-7.0.0 \
       --applications Name=Hadoop Name=AmazonCloudWatchAgent \
       --ec2-attributes KeyName=myKey --instance-type m7g.2xlarge \
       --instance-count 3 --use-default-roles
      --bootstrap-actions Name='Add Prometheus Endpoint',Path=s3://amzn-s3-demo-bucket/add_prometheus_endpoint_launcher.sh,Args='managedpro-remote-write-workspace-url'
   ```

在叢集啟動時，CloudWatch 代理程式會將其收集的指標發布至 Amazon Managed Service for Prometheus。

**將 Amazon Managed Service for Prometheus 用作 Amazon Managed Grafana 的資料來源**

在 Amazon EMR 將叢集指標發布至 Amazon Managed Service for Prometheus 後，您便可使用以下步驟利用 Amazon Managed Grafana 將指標視覺化：

1. 使用 AWS 管理主控台 建立具有適當許可的 Amazon Managed Grafana 工作區和使用者。如需詳細資訊，請參閱 *Amazon Managed Grafana User Guide* 中的 [Create a workspace](https://docs.aws.amazon.com/grafana/latest/userguide/AMG-create-workspace.html)。

1. 將您的 Amazon Managed Service for Prometheus 工作區作為資料來源新增至 Amazon Managed Grafana。如需詳細資訊，請參閱 *Amazon Managed Grafana User Guide* 中的 [Use AWS data source configuration to add Amazon Managed Service for Prometheus as a data source](https://docs.aws.amazon.com/grafana/latest/userguide/AMP-adding-AWS-config.html)。

**注意**  
CloudWatch 代理程式具有可重新命名特定屬性的 Prometheus 匯出工具。針對預設指標標籤，Amazon Managed Service for Prometheus 會使用底線字元來取代 Amazon CloudWatch 使用的期間。因此，如果您在 Amazon Managed Service for Prometheus 中使用 Amazon Managed Grafana 來視覺化預設指標，則標籤會顯示為 `jobflow_id`、`instance_id` 和 `service_name`。  
此外，CloudWatch 代理程式發布至 Amazon Managed Service for Prometheus 的任何**應用程式**指標，皆會使用 `job` 標籤而非 `service_name`。然而，**系統**指標仍會繼續使用 `service_name` 標籤。