

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为亚马逊 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. 在您的 Amazon S3 账户中创建或选择一个存储桶，用于存储指定 CloudWatch 代理指标的配置文件。

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. 接下来，导航到**aws-emr-utilities**存储库 GitHub 并下载以下系统指标脚本：
   + **[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 文件并将 `amzn-s3-demo-bucket` 替换为步骤 1 中的存储桶的名称。

1. 将一个 JSON 文件和两个 SH 文件上传到 S3 存储桶。

1. 现在，您可以导航到 Amazon EMR 控制台并使用代理创建新集群。 CloudWatch 在左导航窗格中的 **EMR on EC2** 下，选择**集群**，然后选择**创建集群**。

1. 在**名称和应用程序**部分中，选择 7.0.0 或更高版本的 Amazon EMR 发行版。

1. 在**应用程序捆绑包**下，选择要安装到集群中的一个或多个应用程序，并在您的选择中包含 **Amazon A CloudWatch gent**。

1. 在**引导操作**部分中，选择**添加**。
   + 对于**名称**，请插入 **install\$1system\$1metrics\$1launcher.sh**。
   + 对于**脚本位置**，请插入 **s3://*amzn-s3-demo-bucket*/install\$1system\$1metrics\$1launcher.sh**。将 `amzn-s3-demo-bucket` 替换为 S3 存储桶的路径。
   + 将**参数**块留为空白。

1. 选择 **Add bootstrap action**（添加引导操作）。

1. 继续创建集群以满足您的工作负载需求。

当您的集群启动时， CloudWatch 代理会将您在配置文件中指定的系统指标发布到 CloudWatch。

## 使用 Amazon EMR 7.0.0 配置应用程序指标
<a name="AmazonCloudWatchAgent-config-700-app-metrics"></a>

除了系统指标外，您还可以将 Amazon CloudWatch 代理配置为发布 HDFS 和 YARN 的应用程序指标。按照以下步骤将代理配置为发布应用程序指标：

1. 在您的 Amazon S3 账户中创建或选择一个存储桶，用于存储指定 CloudWatch 代理指标的配置文件。

1. 接下来，导航到**aws-emr-utilities**存储库 GitHub 并下载以下脚本：
   + **[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. 打开每个文件并将 `amzn-s3-demo-bucket` 替换为步骤 1 中的存储桶的名称。

1. 接下来，下载以下 YAML 映射文件。有关这些 YAML 文件结构的信息，请参阅存储[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)库中的*OpenTelemetry Instrumentation for Java* GitHub 。
   + **[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**。将 `amzn-s3-demo-bucket` 替换为 S3 存储桶的路径。
   + 将**参数**块留为空白。

1. 选择 **Add bootstrap action**（添加引导操作）。

1. 继续创建集群以满足您的工作负载需求。

当您的集群启动时， CloudWatch 代理会将您指定的应用程序指标以及系统指标发布到 CloudWatch。

## 使用 Amazon EMR 7.0.0 将 Amazon Managed Service for Prometheus 配置为指标的云存储
<a name="AmazonCloudWatchAgent-config-700-prometheus"></a>

您可以将亚马逊 CloudWatch 代理配置为将指标发布到适用于 Prometheus 的亚马逊托管服务，而不是。 CloudWatch

**注意**  
您可以将指标从亚马逊 CloudWatch 代理发布到适用于 Prometheus 的亚马逊托管服务或 CloudWatch亚马逊，但不能将指标发布到同一集群的两个服务。

要将代理配置为向亚马逊 Prometheus 托管服务发布指标，您必须将 (IAM) 权限添加到`aps:RemoteWrite` AWS Identity and Access Management 亚马逊 EMR 的亚马逊 EC2 实例配置文件中。以下示例策略包含所需的权限：

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

****  

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

------

**在 EMR 集群上使用 CloudWatch 代理将指标发布到适用于 Prometheus 的亚马逊托管服务**

服务策略获得正确权限后，使用以下步骤启动一个集群，该集群使用 CloudWatch 代理将指标发布到适用于 Prometheus 的亚马逊托管服务。

1. 使用 AWS 管理控制台 或 AWS CLI 创建适用于 Prometheus 的亚马逊托管服务工作区。有关更多信息，请参阅《Amazon Managed Service for Prometheus 用户指南》**中的[创建 Workspace](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-onboard-create-workspace.html)。

1. 在您的 Amazon S3 账户中创建或选择一个存储桶，该存储桶用于存储将 Amazon Managed Service for Prometheus 指定为云存储的启动文件。

1. 接下来，导航到**aws-emr-utilities**存储库 GitHub 并下载以下脚本：
   + **[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 代理配置为发布到你在启动集群时作为参数提供的亚马逊托管服务 Prometheus 终端节点。

1. 打开每个文件并将 `amzn-s3-demo-bucket` 替换为步骤 2 中的存储桶的名称。

1. 使用创建带有`add_prometheus_endpoint_launcher.sh`引导操作的 EMR 集群。 AWS CLI 在以下命令中，将 `amzn-s3-demo-bucket` 替换为包含引导操作的存储桶，并将 `managedpro-remote-write-workspace-url` 替换为 Amazon Managed Service for Prometheus Workspace 的远程写入端点。请务必指定 `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 代理会将其收集的指标发布到适用于 Prometheus 的亚马逊托管服务。

**将 Amazon Managed Service for Prometheus 用作 Amazon Managed Grafana 的数据来源**

Amazon EMR 将集群指标发布到 Amazon Managed Service for Prometheus 后，您可以按照以下步骤使用 Amazon Managed Grafana 对指标进行可视化：

1. 使用创建亚马逊托管 Grafana 工作空间和具有相应权限的用户。 AWS 管理控制台 有关更多信息，请参阅《Amazon Managed Grafana 用户指南》**中的[创建 Workspace](https://docs.aws.amazon.com/grafana/latest/userguide/AMG-create-workspace.html)。

1. 将 Amazon Managed Service for Prometheus Workspace 添加作为 Amazon Managed Grafana 的数据来源。有关更多信息，请参阅《Amazon Managed Grafana 用户指南》**中的[使用 AWS 数据来源配置添加 Amazon Managed Service for Prometheus 作为数据来源](https://docs.aws.amazon.com/grafana/latest/userguide/AMP-adding-AWS-config.html)。

**注意**  
 CloudWatch 代理有一个 Prometheus 导出器，可以重命名某些属性。对于默认指标标签，亚马逊 Prometheus 托管服务使用下划线字符代替亚马逊使用的句点。 CloudWatch 因此，如果您使用 Amazon Managed Grafana 来可视化 Amazon Managed Service for Prometheus 中的默认指标，则标签将显示为 `jobflow_id`、`instance_id` 和 `service_name`。  
此外， CloudWatch 代理发布到亚马逊 Prometheus 托管服务的所有**应用程序**指标都使用该标签代替。`job` `service_name`但是，**系统**指标继续使用 `service_name` 标签。