

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

# 亚马逊 CloudWatch 代理
<a name="emr-AmazonCloudWatchAgent"></a>

亚马逊 EMR 上的亚马逊 CloudWatch 代理是一种可以监控 EMR 集群中的 Amazon EC2 实例的工具。您可以存储和查看通过 CloudWatch 代理收集的指标 CloudWatch。有关 CloudWatch 代理的更多信息，请参阅 [https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html)。

**注意**  
如果您使用其他 AWS 服务 方式发布、查询或查看 Amazon CloudWatch 代理指标，则会产生额外费用。有关更多定价信息，请参阅以下页面。  
[亚马逊 CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/)
[Amazon Managed Service for Prometheus 定价](https://aws.amazon.com/prometheus/pricing/)
[Amazon Managed Grafana 定价](https://aws.amazon.com/grafana/pricing/)
这些指标与 Amazon EMR 在`AWS/ElasticMapReduce`命名空间下提供的免费指标是分开的。 CloudWatch有关 CloudWatch 代理未发布的指标的更多信息，请参阅使用[监控 Amazon EMR 指标](https://docs.aws.amazon.com/emr/latest/ManagementGuide/UsingEMR_ViewingMetrics.html)。 CloudWatch

在 Amazon EMR 7.0 及更高版本中，您可以在集群上安装自定义版本的 Amazon CloudWatch 代理，以便从 EMR 集群中收集指标。 CloudWatchAgent 在 EMR 7.6 及更高版本的运行时角色集群上受支持。代理从集群中的所有节点收集指标，在主节点上收集这些指标，然后将该节点的指标发布到云中。

当您在控制台中创建新集群或使用 `create-cluster` API 时，您可以安装代理。有关更多信息，请参阅 [创建使用 Amazon 代理的 EMR 集群 CloudWatch](AmazonCloudWatchAgent-create.md)。默认情况下，运行 7.x 版系列的 Amazon EMR 集群以 60 秒的间隔向 CloudWatch 其发布 [34 个系统级指标](AmazonCloudWatchAgent-metrics.md)，但您可以将代理配置为发布不同的指标。另一种选择是向 Amazon Managed Service for Prometheus 发布指标，您也可以选择发布的指标。对于不同的用例和设置，您可以将代理配置为在 CloudWatch 控制台、Amazon Managed Grafana 中或通过 for 或 Amazon Prometheus 托管 APIs 服务 CloudWatch 查看和查询指标。当您使用上述方式存储和查询指标时，这些 AWS 服务 将会产生费用。

Amazon EMR 上的 CloudWatch 代理可以在您的 Amazon EMR 集群上发布以下服务的系统指标和 JMX 指标。
+ Hadoop DataNode
+ Hadoop NameNode
+ 纱线 NodeManager
+ 纱线 ResourceManager
+ HBase Master — 仅限亚马逊 EMR 7.1\$1
+ HBase RegionServer — 仅限亚马逊 EMR 7.1\$1
+ HBase ThriftServer — 仅限亚马逊 EMR 7.1\$1

有关可用指标以及如何在 Amazon EMR 上配置 CloudWatch 代理的更多信息，请参阅为 Amaz [on EMR 配置 CloudWatch 代理](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/AmazonCloudWatchAgent-config.html)。

下表列出了最新版本的 Amazon EMR 7.x 系列中 AmazonCloudWatchAgent 包含的版本，以及 Amazon EMR 随之安装的组件。 AmazonCloudWatchAgent

有关此版本 AmazonCloudWatchAgent 中安装的组件的版本，请参阅 [7.12.0 版组件版本](emr-7120-release.md)。


**AmazonCloudWatchAgent emr-7.12.0 的版本信息**  

| Amazon EMR 发行版标签 | AmazonCloudWatchAgent 版本 | 安装在一起的组件 AmazonCloudWatchAgent | 
| --- | --- | --- | 
| emr-7.12.0 | AmazonCloudWatchAgent 1.300032.2-amzn-0 | adot-java-agent, emrfs, emr-amazon-cloudwatch-agent, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-hdfs-zkfc, hadoop-httpfs-server, hadoop-kms-server, hadoop-mapred, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server | 

**Topics**
+ [创建使用 Amazon 代理的 EMR 集群 CloudWatch](AmazonCloudWatchAgent-create.md)
+ [使用 Amazon EM CloudWatch R 的代理的默认指标](AmazonCloudWatchAgent-metrics.md)
+ [为 Amazon EMR 配置 CloudWatch 代理](AmazonCloudWatchAgent-config.md)
+ [注意事项和限制](AmazonCloudWatchAgent-considerations.md)
+ [CloudWatch 代理发布历史记录](AmazonCloudWatchAgent-release-history.md)

# 创建使用 Amazon 代理的 EMR 集群 CloudWatch
<a name="AmazonCloudWatchAgent-create"></a>

本节中的过程描述了使用和中的亚马逊 CloudWatch 代理在 Amazon EMR 中创建集群 AWS 管理控制台 的步骤。 AWS CLI

**Topics**
+ [CloudWatch 代理所需的 IAM 权限](#AmazonCloudWatchAgent-permissions)
+ [所需的 CloudWatch 代理端点](#AmazonCloudWatchAgent-endpoints)
+ [创建 EMR 集群](#AmazonCloudWatchAgent-create-cluster)

## CloudWatch 代理所需的 IAM 权限
<a name="AmazonCloudWatchAgent-permissions"></a>

 CloudWatch 代理需要亚马逊 EMR 的 Amazon EC2 实例配置文件中的 AWS Identity and Access Management (IAM) `cloudwatch:PutMetricData` 权限。Amazon EMR 的默认角色已经拥有此权限。您可以使用创建默认角色`aws emr create-default-roles`。 AWS CLI 如需了解更多信息，请参阅*《Amazon EMR 管理指南》*中的[集群 EC2 实例的服务角色（EC2 实例配置文件）](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html)。

以下示例 IAM policy 包括 `cloudwatch:PutMetricData` 权限：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:PutMetricData"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowCLOUDWATCHPutmetricdata"
    }
  ]
}
```

------

## 所需的 CloudWatch 代理端点
<a name="AmazonCloudWatchAgent-endpoints"></a>

要向私有子网中的 EMR 集群发布指标，请创建 CloudWatch 代理终端节点并与私有子网所在的 VPC 关联。 CloudWatch 

有关每个 CloudWatch 终端节点的更多信息 AWS 区域，请参阅《*AWS 通用参考指南》*中的 [Amazon CloudWatch 终端节点和配额](https://docs.aws.amazon.com/general/latest/gr/cw_region.html)。

## 创建 EMR 集群
<a name="AmazonCloudWatchAgent-create-cluster"></a>

设置了与 CloudWatch 代理一起使用的所需权限和终端节点后，使用 AWS 管理控制台 或创建安装了代理的新集群。 AWS CLI 

------
#### [ Console ]

**通过控制台使用 Amazon CloudWatch 代理创建集群**

1. 导航到 Amazon EMR 控制台。

1. 选择**创建集群**。

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

1. 在 “**应用程序捆绑**包” 下，选择要安装到集群中的一个或多个应用程序，并在您的选择中加入**CloudWatch 代理**。

1. 继续创建集群以满足您的应用场景需求。

------
#### [ AWS CLI ]

在中 AWS CLI，您可以使用`--applications`参数将 Amazon CloudWatch 代理添加到集群`create-cluster`。

**要使用 Amazon CloudWatch 代理创建集群，请访问 AWS CLI**
+ 创建集群时，使用类似于以下内容的命令来包含 Amazon CloudWatch 代理。将 `myKey` 替换为您的 EC2 密钥对的名称。

  ```
  aws emr create-cluster --name "Spark cluster with CloudWatch agent" \
  --release-label emr-7.0.0 \
  --applications Name=Spark Name=AmazonCloudWatchAgent \
  --ec2-attributes KeyName=myKey --instance-type m7g.2xlarge \
  --instance-count 3 --use-default-roles
  ```

有关如何将 Amazon EMR 与配合使用的更多详细信息 AWS CLI，请参阅[AWS CLI 命令](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/emr/index.html)参考。

------

# 使用 Amazon EM CloudWatch R 的代理的默认指标
<a name="AmazonCloudWatchAgent-metrics"></a>

当您在 Amazon EMR 上安装 Amazon CloudWatch 代理时，除非您对[代理进行不同的配置，否则默认配置](AmazonCloudWatchAgent-config.md)会发布集群中所有实例的以下系统指标。有关每个[指标的定义，请参阅 *Amazon CloudWatch 用户指南*中的 CloudWatch 代理收集](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html)的指标。

------
#### [ CPU ]

**CPU 指标**
+ `cpu_usage_active`
+ `cpu_usage_guest`
+ `cpu_usage_guest_nice`
+ `cpu_usage_idle`
+ `cpu_usage_iowait`
+ `cpu_usage_irq`
+ `cpu_usage_nice`
+ `cpu_usage_softirq`
+ `cpu_usage_steal`
+ `cpu_usage_system`
+ `cpu_usage_user`

------
#### [ Disk ]

**磁盘指标**
+ `disk_free`
+ `disk_total`
+ `disk_used`
+ `disk_used_percent`

------
#### [ Memory ]

**内存指标**
+ `mem_active`
+ `mem_available`
+ `mem_available_percent`
+ `mem_free`
+ `mem_inactive`
+ `mem_total`
+ `mem_used`
+ `mem_used_percent`
+ `mem_buffered`
+ `mem_cached`

------
#### [ Network IO ]

**网络 IO 指标**
+ `net_bytes_recv`
+ `net_bytes_sent`
+ `net_packets_recv`
+ `net_packets_sent`

------
#### [ Process ]

**进程指标**
+ `processes_running`
+ `processes_total`

------
#### [ Swap ]

**交换指标**
+ `swap_free`
+ `swap_used`
+ `swap_used_percent`

------

默认情况下，代理会将所有指标发布到 CloudWatch 自定义命名空间`CWAgent`下和架构`cluster.id`、、`instance.id``node.type`、下`service.name`。使用以下步骤查看 CloudWatch 代理为 Amazon EMR 发布的这些默认指标：

1. 导航至 Amazon CloudWatch 控制台。

1. 选择**指标**选项卡，然后选择**所有指标**。

1. 在**自定义命名空间**下，选择 **`CWAgent`**。然后选择架构：**`cluster.id`、`instance.id`、`node.type`、`service.name`**。

1. 根据您的用例需要，继续从 CloudWatch 界面查询指标。

Amazon EMR 为每个指标附加以下标签：`["cluster.id", "instance.id', "node.type", "service.name"]`。关于这些标签，请考虑以下几点：
+ `cluster.id` 标签的值是生成该指标的 EMR 集群的 ID。`cluster.id` 标签的示例值为：`j-123456789ABC`。
+ `instance.id` 标签的值是生成该指标的 EMR 集群中的实例的 ID。`instance.id` 标签的示例值为 `i-01bcf5f140f3355777`。
+ `node.type` 标签的值表示生成指标的集群中实例的节点类型。该值可以是 `master`、`core` 或 `task`。
+ `service.name` 标签的值是生成该指标的服务的名称。默认系统指标的默认 `service.name` 值为 `system`。

**注意**  
Amazon EMR 发行版 7.0.0 使用的指标标签架构略有不同。`cluster.id` 为 `jobflow.id`，`node.type` 不可用。`instance.id` 和 `service.name` 可用。

# 为 Amazon EMR 配置 CloudWatch 代理
<a name="AmazonCloudWatchAgent-config"></a>

亚马逊 EMR 7.0.0 及更高版本包括亚马逊代理。 CloudWatch 以下各部分介绍了如何在 EMR 集群上配置代理，如 [创建使用 Amazon 代理的 EMR 集群 CloudWatch](AmazonCloudWatchAgent-create.md) 所述。

**Topics**
+ [为亚马逊 EMR 7.1.0 配置 CloudWatch 代理](AmazonCloudWatchAgent-config-710.md)
+ [为亚马逊 EMR 7.0.0 配置 CloudWatch 代理](AmazonCloudWatchAgent-config-700.md)

# 为亚马逊 EMR 7.1.0 配置 CloudWatch 代理
<a name="AmazonCloudWatchAgent-config-710"></a>

从 Amazon EMR 7.1.0 开始，您可以使用亚马逊 EMR 配置 API 将亚马逊 CloudWatch 代理配置为使用其他系统指标、添加应用程序指标和更改指标目标。有关如何使用 EMR 配置 API 来配置集群应用程序的更多信息，请参阅[配置应用程序](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html)。

**注意**  
7.1.0 仅支持重新配置类型 `OVERWRITE`。有关重新配置类型的更多信息，请参阅[重新配置实例组时的注意事项](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps-running-cluster.html#emr-configure-apps-running-cluster-considerations)。

**Topics**
+ [配置架构](#AmazonCloudWatchAgent-config-710-config-schema)
+ [系统指标配置示例](#AmazonCloudWatchAgent-config-710-system-examples)
+ [应用程序指标配置示例](#AmazonCloudWatchAgent-config-710-application-examples)
+ [Amazon Managed Service for Prometheus 示例](#AmazonCloudWatchAgent-config-710-prometheus-examples)

## 配置架构
<a name="AmazonCloudWatchAgent-config-710-config-schema"></a>

`emr-metrics` 具有以下分类：
+ `emr-system-metrics`：配置系统指标，如 CPU、磁盘和内存。
+ `emr-hadoop-hdfs-datanode-metrics`— 配置 Hadoop DataNode JMX 指标
+ `emr-hadoop-hdfs-namenode-metrics`— 配置 Hadoop NameNode JMX 指标
+ `emr-hadoop-yarn-nodemanager-metrics`— 配置 Yarn NodeManager JMX 指标
+ `emr-hadoop-yarn-resourcemanager-metrics`— 配置 Yarn ResourceManager JMX 指标
+ `emr-hbase-master-metrics`— 配置 HBase 主 JMX 指标
+ `emr-hbase-region-server-metrics`— 配置 HBase 区域服务器 JMX 指标
+ `emr-hbase-rest-server-metrics`— 配置 HBase REST 服务器 JMX 指标
+ `emr-hbase-thrift-server-metrics`— 配置 HBase Thrift Server JMX 指标

下表列出了所有分类的可用属性和配置。

**emr-metrics 属性**


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 注意 | 
| --- | --- | --- | --- | --- | --- | 
| metrics\$1destination | 可选 | 确定集群指标是发布到亚马逊 CloudWatch 还是发布到亚马逊 Prometheus 托管服务。 | "CLOUDWATCH" | "CLOUDWATCH"、"PROMETHEUS" | 此属性不区分大小写。例如，"Cloudwatch" 与 "CLOUDWATCH" 相同。 | 
| prometheus\$1endpoint | 可选 | 如果设置metrics\$1destination为 “PROMETHEUS”，则此属性将 CloudWatch 代理配置为向提供的亚马逊托管服务 Prometheus 远程写入端点发送指标。 | 不适用 | 任何有效的 Amazon Managed Service for Prometheus 远程写入 URL。远程写入 URL 格式为 <pre>https://aps-workspaces.<region>.amazonaws.com/workspaces/<workspace_id>/api/v1/remote_write</pre> | 如果 metrics\$1destination 设置为 "PROMETHEUS"，则该字段为必填字段。如果未提供键或如果值为空字符串，则预置将失败。 | 

**emr-system-metrics 属性**


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 注意 | 
| --- | --- | --- | --- | --- | --- | 
| metrics\$1collection\$1interval | 可选 | 从 CloudWatch 代理收集和发布指标的频率（以秒为单位）。 | "60" | 指定秒数的字符串。只接受整数。 | 您可以使用各个指标组中的 metrics\$1collection\$1interval 属性来覆盖此属性。 | 

**emr-system-metrics 配置**

------
#### [ cpu ]


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 注意 | 
| --- | --- | --- | --- | --- | --- | 
| metrics | 可选 | 代理要收集的 CPU 指标列表。 | [使用 Amazon EMR 查看 CloudWatch 代理的默认指标](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/AmazonCloudWatchAgent-metrics.html) | 以逗号分隔的有效 CPU 指标名称列表，带或不带 cpu\$1 前缀，比如 usage\$1active 和 cpu\$1time\$1idle。有关有效[指标，请参阅 CloudWatch 代理收集](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html#linux-metrics-enabled-by-CloudWatch-agent)的指标。 | 指定空字符串意味着不发布任何 CPU 指标。 | 
| metrics\$1collection\$1interval | 可选 | 代理应收集和发布 CPU 指标的频率（秒）。 | 全局 metrics\$1collection\$1interval 的值。 | 指定秒数的字符串。只接受整数。 | 此值仅会覆盖 CPU 指标的全局 metrics\$1collection\$1interval 属性。 | 
| drop\$1original\$1metrics | 可选 | 不发布未聚合指标的 CPU 指标列表。 | 不发布未聚合的 CPU 指标。 | 以逗号分隔的 CPU 指标列表，这些指标也在 metrics 属性中指定。空字符串表示发布所有 CPU 指标。 |  CloudWatch 代理按集群 ID、实例 ID、节点类型和服务名称汇总所有指标。默认情况下， CloudWatch 代理不会为具有多个资源的指标发布每种资源的指标。 | 
| resources | 可选 | 确定代理是否发布 per-core 指标。 | "\$1" | "\$1" 启用 per-core 指标。"" 禁用 per-core 指标。 | 该 CloudWatch 代理仅发布未被放入的 CPU 指标的每核指标。drop\$1original\$1metrics | 

------
#### [ disk ]


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 注意 | 
| --- | --- | --- | --- | --- | --- | 
| metrics | 可选 | 代理要收集的磁盘指标列表。 | [使用 Amazon EMR 查看 CloudWatch 代理的默认指标](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/AmazonCloudWatchAgent-metrics.html) | 以逗号分隔的有效磁盘指标名称列表，带或不带 disk\$1 前缀，比如 disk\$1total 和 used\$1percent。有关有效[指标，请参阅 CloudWatch 代理收集](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html#linux-metrics-enabled-by-CloudWatch-agent)的指标。 | 指定空字符串意味着不发布任何磁盘指标。 | 
| metrics\$1collection\$1interval | 可选 | 代理应收集和发布磁盘指标的频率（秒）。 | 全局 metrics\$1collection\$1interval 的值。 | 指定秒数的字符串。只接受整数。 | 此值仅会覆盖磁盘指标的全局 metrics\$1collection\$1interval 属性。 | 
| drop\$1original\$1metrics | 可选 | 不发布未聚合指标的磁盘指标列表。 | 不发布未聚合的磁盘指标。 | 以逗号分隔的磁盘指标列表，这些指标也在 metrics 属性中指定。空字符串表示发布所有磁盘指标。 |  CloudWatch 代理按集群 ID、实例 ID、节点类型和服务名称汇总所有指标。默认情况下， CloudWatch 代理不会为具有多个资源的指标发布每种资源的指标。 | 
| resources | 可选 | 确定代理是否将发布 per-mount-point指标。 | "\$1" | "\$1" 表示所有挂载点，"" 表示没有挂载点，或以逗号分隔的挂载点列表。例如 "/,/emr"。 |  CloudWatch 代理仅发布 per-mount-point未放入的磁盘指标的指标drop\$1original\$1metrics。 | 

------
#### [ diskio ]


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 注意 | 
| --- | --- | --- | --- | --- | --- | 
| metrics | 可选 | 代理要收集的磁盘 IO 指标列表。 | [使用 Amazon EMR 查看 CloudWatch 代理的默认指标](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/AmazonCloudWatchAgent-metrics.html) | 以逗号分隔的有效磁盘 IO 指标名称列表，带或不带 diskio\$1 前缀，比如 diskio\$1reads 和 writes。有关有效[指标，请参阅 CloudWatch 代理收集](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html#linux-metrics-enabled-by-CloudWatch-agent)的指标。 | 指定空字符串意味着不发布任何磁盘 IO 指标。 | 
| metrics\$1collection\$1interval | 可选 | 代理应收集和发布磁盘 IO 指标的频率（秒）。 | 全局 metrics\$1collection\$1interval 的值。 | 指定秒数的字符串。只接受整数。 | 此值仅会覆盖磁盘 IO 指标的全局 metrics\$1collection\$1interval 属性。 | 
| drop\$1original\$1metrics | 可选 | 不发布未聚合指标的磁盘 IO 指标列表。 | 不发布未聚合的磁盘 IO 指标。 | 以逗号分隔的磁盘 IO 指标列表，这些指标也在 metrics 属性中指定。空字符串表示发布所有磁盘 IO 指标。 |  CloudWatch 代理按集群 ID、实例 ID、节点类型和服务名称汇总所有指标。默认情况下， CloudWatch 代理不会为具有多个资源的指标发布每种资源的指标。 | 
| resources | 可选 | 确定代理是否发布 per-device 指标。 | "\$1" | "\$1" 表示所有存储设备，"" 表示没有存储设备，或以逗号分隔的设备名称列表。例如 "nvme0n1,nvme1n1"。 |  CloudWatch 代理仅发布未放入的磁盘 IO 指标的每台设备指标。drop\$1original\$1metrics | 

------
#### [ mem ]


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 注意 | 
| --- | --- | --- | --- | --- | --- | 
| metrics | 可选 | 代理要收集的内存指标列表。 | [使用 Amazon EMR 查看 CloudWatch 代理的默认指标](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/AmazonCloudWatchAgent-metrics.html) | 以逗号分隔的有效内存指标名称列表，带或不带 mem\$1 前缀，比如 mem\$1available 和 available\$1percent。有关有效[指标，请参阅 CloudWatch 代理收集](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html#linux-metrics-enabled-by-CloudWatch-agent)的指标。 | 指定空字符串意味着不发布任何内存指标。 | 
| metrics\$1collection\$1interval | 可选 | 代理应收集和发布内存指标的频率（秒）。 | 全局 metrics\$1collection\$1interval 的值。 | 指定秒数的字符串。只接受整数。 | 此值仅会覆盖内存指标的全局 metrics\$1collection\$1interval 属性。 | 

------
#### [ net ]


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 注意 | 
| --- | --- | --- | --- | --- | --- | 
| metrics | 可选 | 代理要收集的网络指标列表。 | [使用 Amazon EMR 查看 CloudWatch 代理的默认指标](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/AmazonCloudWatchAgent-metrics.html) | 以逗号分隔的有效网络指标名称列表，带或不带 net\$1 前缀，比如 net\$1packets\$1sent 和 packets\$1recv。有关有效[指标，请参阅 CloudWatch 代理收集](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html#linux-metrics-enabled-by-CloudWatch-agent)的指标。 | 指定空字符串意味着不发布任何网络指标。 | 
| metrics\$1collection\$1interval | 可选 | 代理应收集和发布网络指标的频率（秒）。 | 全局 metrics\$1collection\$1interval 的值。 | 指定秒数的字符串。只接受整数。 | 此值仅会覆盖网络指标的全局 metrics\$1collection\$1interval 属性。 | 
| drop\$1original\$1metrics | 可选 | 不发布未聚合指标的网络指标列表。 | 不发布未聚合的网络指标。 | 以逗号分隔的网络指标列表，这些指标也在 metrics 属性中指定。空字符串表示发布所有网络指标。 |  CloudWatch 代理按集群 ID、实例 ID、节点类型和服务名称汇总所有指标。默认情况下， CloudWatch 代理不会为具有多个资源的指标发布每种资源的指标。 | 
| resources | 可选 | 确定代理是否发布 per-interface 指标。 | "\$1" | "\$1" 表示所有网络接口，"" 表示没有网络接口，或以逗号分隔的接口名称列表。例如 "eth0,eth1"。 |  CloudWatch 代理仅发布未放入的网络指标的每个接口指标。drop\$1original\$1metrics | 

------
#### [ netstat ]


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 注意 | 
| --- | --- | --- | --- | --- | --- | 
| metrics | 可选 | 代理要收集的网络统计数据列表。 | [使用 Amazon EMR 查看 CloudWatch 代理的默认指标](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/AmazonCloudWatchAgent-metrics.html) | 以逗号分隔的有效内存指标名称列表，带或不带 netstat\$1 前缀，比如 tcp\$1listen 和 netstat\$1udp\$1socket。有关有效[指标，请参阅 CloudWatch 代理收集](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html#linux-metrics-enabled-by-CloudWatch-agent)的指标。 | 指定空字符串意味着不发布任何网络统计数据指标。 | 
| metrics\$1collection\$1interval | 可选 | 代理应收集和发布网络统计数据指标的频率（秒）。 | 全局 metrics\$1collection\$1interval 的值。 | 指定秒数的字符串。只接受整数。 | 此值仅会覆盖网络统计数据指标的全局 metrics\$1collection\$1interval 属性。 | 

------
#### [ processes ]


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 注意 | 
| --- | --- | --- | --- | --- | --- | 
| metrics | 可选 | 代理要收集的进程指标列表。 | [使用 Amazon EMR 查看 CloudWatch 代理的默认指标](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/AmazonCloudWatchAgent-metrics.html) | 以逗号分隔的有效内存指标名称列表，带或不带 processes\$1 前缀，比如 processes\$1running 和 total。有关有效[指标，请参阅 CloudWatch 代理收集](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html#linux-metrics-enabled-by-CloudWatch-agent)的指标。 | 指定空字符串意味着不发布任何进程指标。 | 
| metrics\$1collection\$1interval | 可选 | 代理应收集和发布系统进程指标的频率（秒）。 | 全局 metrics\$1collection\$1interval 的值。 | 指定秒数的字符串。只接受整数。 | 此值仅会覆盖系统进程指标的全局 metrics\$1collection\$1interval 属性。 | 

------
#### [ swap ]


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 注意 | 
| --- | --- | --- | --- | --- | --- | 
| metrics | 可选 | 代理要收集的交换指标列表。 | [使用 Amazon EMR 查看 CloudWatch 代理的默认指标](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/AmazonCloudWatchAgent-metrics.html) | 以逗号分隔的有效内存指标名称列表，带或不带 swap\$1 前缀，比如 swap\$1free 和 used\$1percent。有关有效[指标，请参阅 CloudWatch 代理收集](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html#linux-metrics-enabled-by-CloudWatch-agent)的指标。 | 指定空字符串意味着不发布任何交换指标。 | 
| metrics\$1collection\$1interval | 可选 | 代理应收集和发布交换指标的频率（秒）。 | 全局 metrics\$1collection\$1interval 的值。 | 指定秒数的字符串。只接受整数。 | 此值仅会覆盖交换指标的全局 metrics\$1collection\$1interval 属性。 | 

------

**emr-hadoop-hdfs-datanode-指标属性**


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 
| --- | --- | --- | --- | --- | 
| <custom\$1bean\$1name> | 可选 | 不适用 |  MBean 该 CloudWatch 代理应从中收集指标，例如Hadoop:service=DataNode,name=DataNodeActivity。您可以在 Amazon EMR 7.0 版本的 JMX YAML 文件[示例 JMX YAML 文件](https://github.com/aws-samples/aws-emr-utilities/tree/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/mappings)中找到示例 MBean 名称及其对应的指标。 | 一个字符串，其中包含与相关联的以逗号分隔的指标列表。 MBean例如 BlocksCached,BlocksRead。 | 
| otel.metric.export.interval | 可选 | 收集 Hadoop 指标的频率（以毫秒为单位）。 DataNode  | "60000" | 指定毫秒数的字符串。只接受整数。 | 

**emr-hadoop-hdfs-namenode-指标属性**


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 
| --- | --- | --- | --- | --- | 
| <custom\$1bean\$1name> | 可选 | 不适用 |  MBean 该 CloudWatch 代理应从中收集指标，例如Hadoop:service=NameNode,name=FSNamesystem。您可以在 Amazon EMR 7.0 版本的 JMX YAML 文件[示例 JMX YAML 文件](https://github.com/aws-samples/aws-emr-utilities/tree/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/mappings)中找到示例 MBean 名称及其对应的指标。 | 一个字符串，其中包含与相关联的以逗号分隔的指标列表。 MBean例如 BlockCapacity,CapacityUsedGB。 | 
| otel.metric.export.interval | 可选 | 收集 Hadoop 指标的频率（以毫秒为单位）。 NameNode  | "60000" | 指定毫秒数的字符串。只接受整数。 | 

**emr-hadoop-yarn-nodemanager-指标属性**


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 
| --- | --- | --- | --- | --- | 
| <custom\$1bean\$1name> | 可选 | 不适用 |  MBean 该 CloudWatch 代理应从中收集指标，例如Hadoop:service=NodeManager,name=NodeManagerMetrics。您可以在 Amazon EMR 7.0 版本的 JMX YAML 文件[示例 JMX YAML 文件](https://github.com/aws-samples/aws-emr-utilities/tree/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/mappings)中找到示例 MBean 名称及其对应的指标。 | 一个字符串，其中包含与相关联的以逗号分隔的指标列表。 MBean例如 MaxCapacity,AllocatedGB。 | 
| otel.metric.export.interval | 可选 | 收集 Hadoop YARN 指标的频率（以毫秒为单位）。 NodeManager  | "60000" | 指定毫秒数的字符串。只接受整数。 | 

**emr-hadoop-yarn-resourcemanager-指标属性**


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 
| --- | --- | --- | --- | --- | 
| <custom\$1bean\$1name> | 可选 | 不适用 |  MBean 该 CloudWatch 代理应从中收集指标，例如Hadoop:service=ResourceManager,name=PartitionQueueMetrics。您可以在 Amazon EMR 7.0 版本的 JMX YAML 文件[示例 JMX YAML 文件](https://github.com/aws-samples/aws-emr-utilities/tree/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/mappings)中找到示例 MBean 名称及其对应的指标。 | 一个字符串，其中包含与相关联的以逗号分隔的指标列表。 MBean例如 MaxCapacity,MaxCapacityVCores。 | 
| otel.metric.export.interval | 可选 | 收集 Hadoop YARN 指标的频率（以毫秒为单位）。 ResourceManager  | "60000" | 指定毫秒数的字符串。只接受整数。 | 

**emr-hbase-master-metrics 属性**


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 
| --- | --- | --- | --- | --- | 
| <custom\$1bean\$1name> | 可选 | 不适用 |  MBean 该 CloudWatch 代理应从中收集指标，例如Hadoop:service=HBase,name=Master,sub=AssignmentManager。您可以在 Amazon EMR 7.0 版本的 JMX YAML 文件[示例 JMX YAML 文件](https://github.com/aws-samples/aws-emr-utilities/tree/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/mappings)中找到示例 MBean 名称及其对应的指标。 | 一个字符串，其中包含与相关联的以逗号分隔的指标列表。 MBean例如 AssignFailedCount,AssignSubmittedCount。 | 
| otel.metric.export.interval | 可选 | 收集 HBase 主指标的频率（以毫秒为单位）。 | "60000" | 指定毫秒数的字符串。只接受整数。 | 

**emr-hbase-region-server-指标属性**


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 
| --- | --- | --- | --- | --- | 
| <custom\$1bean\$1name> | 可选 | 不适用 |  MBean 该 CloudWatch 代理应从中收集指标，例如Hadoop:service=HBase,name=RegionServer,sub=IPC。您可以在 Amazon EMR 7.0 版本的 JMX YAML 文件[示例 JMX YAML 文件](https://github.com/aws-samples/aws-emr-utilities/tree/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/mappings)中找到示例 MBean 名称及其对应的指标。 | 一个字符串，其中包含与相关联的以逗号分隔的指标列表。 MBean例如 numActiveHandler,numActivePriorityHandler。 | 
| otel.metric.export.interval | 可选 | 收集 HBase 区域服务器指标的频率（以毫秒为单位）。 | "60000" | 指定毫秒数的字符串。只接受整数。 | 

**emr-hbase-rest-server-指标属性**


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 
| --- | --- | --- | --- | --- | 
| <custom\$1bean\$1name> | 可选 | 不适用 |  MBean 该 CloudWatch 代理应从中收集指标，例如Hadoop:service=HBase,name=REST。您可以在 Amazon EMR 7.0 版本的 JMX YAML 文件[示例 JMX YAML 文件](https://github.com/aws-samples/aws-emr-utilities/tree/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/mappings)中找到示例 MBean 名称及其对应的指标。 | 一个字符串，其中包含与相关联的以逗号分隔的指标列表。 MBean例如 successfulPut,successfulScanCount。 | 
| otel.metric.export.interval | 可选 | 收集 HBase Rest Server 指标的频率（以毫秒为单位）。 | "60000" | 指定毫秒数的字符串。只接受整数。 | 

**emr-hbase-thrift-server-指标属性**


| 属性 | 必需 | 说明 | 默认 值 | 可能的值 | 
| --- | --- | --- | --- | --- | 
| <custom\$1bean\$1name> | 可选 | 不适用 |  MBean 该 CloudWatch 代理应从中收集指标，例如Hadoop:service=HBase,name=Thrift,sub=ThriftOne。您可以在 Amazon EMR 7.0 版本的 JMX YAML 文件[示例 JMX YAML 文件](https://github.com/aws-samples/aws-emr-utilities/tree/main/applications/cloudwatch-agent/configuration/7.0/application-metrics/mappings)中找到示例 MBean 名称及其对应的指标。 | 一个字符串，其中包含与相关联的以逗号分隔的指标列表。 MBean例如 BatchGet\$1max,BatchGet\$1mean。 | 
| otel.metric.export.interval | 可选 | 收集 T HBase hrift 服务器指标的频率（以毫秒为单位）。 | "60000" | 指定毫秒数的字符串。只接受整数。 | 

## 系统指标配置示例
<a name="AmazonCloudWatchAgent-config-710-system-examples"></a>

以下示例演示如何将 CloudWatch 代理配置为停止导出所有系统指标。

```
[
  {
    "Classification": "emr-metrics",
    "Properties": {},
    "Configurations": [
      {
        "Classification": "emr-system-metrics",
        "Properties": {},
        "Configurations": []
      }
    ]
  }
]
```

以下示例将 CloudWatch 代理配置为导出默认系统指标。如果您已至少重新配置了一次系统指标，这样是将代理重置为仅导出默认系统指标的快速方法。此重置还会删除之前重新配置的所有应用程序指标。

```
[
  {
    "Classification": "emr-metrics",
    "Properties": {},
    "Configurations": []
  }
]
```

以下示例将集群配置为导出 `cpu`、`mem` 和 `disk` 指标。

```
[
  {
    "Classification": "emr-metrics",
    "Properties": {},
    "Configurations": [
      {
        "Classification": "emr-system-metrics",
        "Properties": {
          "metrics_collection_interval": "20"
        },
        "Configurations": [
          {
            "Classification": "cpu",
            "Properties": {
              "metrics": "cpu_usage_guest,cpu_usage_idle",
              "metrics_collection_interval": "30",
              "drop_original_metrics": "cpu_usage_guest"
            }
          },
          {
            "Classification": "mem",
            "Properties": {
              "metrics": "mem_active"
            }
          },
           {
            "Classification": "disk",
            "Properties": {
              "metrics": "disk_used_percent",
              "resources": "/,/mnt",
              "drop_original_metrics": ""
            }
          }
        ]
      }
    ]
  }
]
```

前面的示例配置具有以下属性：
+ 代理每 30 秒收集一次所有人的`cpu_guest`指标 CPUs。您可以在 CloudWatch 命名空间下找到聚合指标`CWAgent > cluster.id, instance.id, node.type, service.name`。
+ 代理每 30 秒收集一次所有人的`cpu_idle`指标 CPUs。您可以在 CloudWatch 命名空间下找到聚合指标`CWAgent > cluster.id, instance.id, node.type, service.name`。代理还会收集 per-cpu 指标。可以在同一命名空间中找到。代理收集此指标是因为 `drop_original_metrics` 属性不包含 `cpu_idle`，因此代理不会忽略此指标。
+ 代理每 20 秒收集一次 `mem_active` 指标。您可以在 CloudWatch 命名空间下找到聚合指标`CWAgent > cluster.id, instance.id, node.type, service.name`。
+ 代理每 20 秒收集一次 `/` 和 `/mnt` 磁盘装载的 `disk_used_percent` 指标。您可以在 CloudWatch 命名空间下找到聚合指标`CWAgent > cluster.id, instance.id, node.type, service.name`。代理还会收集 per-mount 指标。可以在同一命名空间中找到。代理收集此指标是因为 `drop_original_metrics` 属性不包含 `disk_used_percent`，因此代理不会忽略此指标。

## 应用程序指标配置示例
<a name="AmazonCloudWatchAgent-config-710-application-examples"></a>

以下示例将 CloudWatch 代理配置为停止导出 Hadoop Namenode 服务的指标。

```
[
  {
    "Classification": "emr-metrics",
    "Properties": {},
    "Configurations": [
      {
        "Classification": "emr-hadoop-hdfs-namenode-metrics",
        "Properties": {},
        "Configurations": []
      }
    ]
  }
]
```

以下示例将集群配置为导出 Hadoop 应用程序指标。

```
[
  {
    "Classification": "emr-metrics",
    "Properties": {},
    "Configurations": [
      {
        "Classification": "emr-hadoop-hdfs-namenode-metrics",
        "Properties": {
          "Hadoop:service=NameNode,name=FSNamesystem": "BlockCapacity,CapacityUsedGB",
          "otel.metric.export.interval": "20000" 
        },
        "Configurations": []
      },
       {
        "Classification": "emr-hadoop-hdfs-datanode-metrics",
        "Properties": {
          "Hadoop:service=DataNode,name=JvmMetrics": "MemNonHeapUsedM",
          "otel.metric.export.interval": "30000" 
        },
        "Configurations": []
      },
       {
        "Classification": "emr-hadoop-yarn-resourcemanager-metrics",
        "Properties": {
          "Hadoop:service=ResourceManager,name=CapacitySchedulerMetrics": "AllocateNumOps,NodeUpdateNumOps"
        },
        "Configurations": []
      }
    ]
  }
]
```

前面的示例具有以下属性：
+ 代理每 20 秒会从运行 Hadoop Namenode 服务的实例中收集 `BlockCapacity` 和 `CapacityUsedGB` 指标。
+ 代理每 30 秒会从运行 Hadoop Datanode 服务的实例中收集 `MemNonHeapUsedM` 指标。
+ 代理每 30 秒就会从运行 Hadoop YARN 的实例收集`AllocateNumOps`和`NodeUpdateNumOps`指标。 ResourceManaager

## Amazon Managed Service for Prometheus 示例
<a name="AmazonCloudWatchAgent-config-710-prometheus-examples"></a>

以下示例演示如何配置 CloudWatch 代理以将指标导出到适用于 Prometheus 的亚马逊托管服务。

如果您当前正在将指标导出到 Amazon Managed Service for Prometheus，想要重新配置集群的指标，并继续将指标导出到 Amazon Managed Service for Prometheus，则必须包含属性 `metrics_destination` 和 `prometheus_endpoint`。

```
[
  {
    "Classification": "emr-metrics",
    "Properties": {
      "metrics_destination": "prometheus",
      "prometheus_endpoint": "http://amp-workspace/api/v1/remote_write"
    },
    "Configurations": []
  }
]
```

要使用 CloudWatch 代理将指标导出到 CloudWatch，请使用以下示例。

```
[
  {
    "Classification": "emr-metrics",
    "Properties": {
      "metrics_destination": "cloudwatch"
    },
    "Configurations": []
  }
]
```

**注意**  
 CloudWatch 代理有一个 Prometheus 导出器，可以重命名某些属性。对于默认指标标签，亚马逊 Prometheus 托管服务使用下划线字符代替亚马逊使用的句点。 CloudWatch 如果您使用 Amazon Managed Grafana 来可视化 Amazon Managed Service for Prometheus 中的默认指标，则标签将显示为 `cluster_id`、`instance_id`、`node_type` 和 `service_name`。

# 为亚马逊 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` 标签。

# 注意事项和限制
<a name="AmazonCloudWatchAgent-considerations"></a>
+ 本机 Amazon CloudWatch 代理适用于您使用 Amazon EMR 7.0.0 及更高版本创建的集群。
+ [Amazon EMR 7.0.0 中的 CloudWatch 代理配置需要使用引导操作。](AmazonCloudWatchAgent-config-700.md)在即将发布的版本中，Amazon EMR 将通过 Amazon EMR API 提供其他配置选项。
+ 如果您已经通过其他方法（例如在创建集群的区域中使用代 CloudWatch 理（SSM CloudWatch 代理）部署了 AWS Systems Manager 代理，则无法安装 Amazon EMR 代理。这样做将导致您的集群因错误终止。
+  CloudWatch GetMetricData API 每次请求最多支持 500 个指标。**如果您的 Amazon EMR 集群在实例组或队列中包含超过 250 个节点，则 EMR 中 CloudWatch 嵌入式控制面板中的相应图表将显示为空白，并显示错误指标**太多，因为这些指标**需要集群概览控制面板中的每个指标两个数据点。**但是，通过筛选**核心**或**任务实例组**（或实例集）控制面板，您将能够查看每个实例组或实例集最多 500 个节点的图表。这是因为它们不要求每个指标两个数据点。当每个实例组或实例集的节点数超过 500 时，这些控制面板中的指标也会出现**指标过多**错误。

# CloudWatch 代理发布历史记录
<a name="AmazonCloudWatchAgent-release-history"></a>

下表列出了 Amazon EMR 的每个发行版本中 AmazonCloudWatchAgent 包含的版本，以及随应用程序一起安装的组件。有关每个发行版本中的组件版本，请参阅 [Amazon EMR 7.x 发行版](emr-release-7x.md)、[Amazon EMR 6.x 发行版](emr-release-6x.md) 或 [Amazon EMR 5.x 发行版](emr-release-5x.md) 中的发行版“组件版本”部分。


**AmazonCloudWatchAgent 版本信息**  

| Amazon EMR 发行版标签 | AmazonCloudWatchAgent 版本 | 安装在一起的组件 AmazonCloudWatchAgent | 
| --- | --- | --- | 
| emr-7.12.0 | 1.300032.2-amzn-0 | adot-java-agent, emrfs, emr-amazon-cloudwatch-agent, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-hdfs-zkfc, hadoop-httpfs-server, hadoop-kms-server, hadoop-mapred, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server | 
| emr-7.11.0 | 1.300032.2-amzn-0 | adot-java-agent, emrfs, emr-amazon-cloudwatch-agent, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-hdfs-zkfc, hadoop-httpfs-server, hadoop-kms-server, hadoop-mapred, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server | 
| emr-7.10.0 | 1.300032.2-amzn-0 | adot-java-agent, emrfs, emr-amazon-cloudwatch-agent, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-mapred, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server | 
| emr-7.9.0 | 1.300032.2-amzn-0 | adot-java-agent, emrfs, emr-amazon-cloudwatch-agent, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-mapred, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server | 
| emr-7.8.0 | 1.300032.2-amzn-0 | adot-java-agent, emrfs, emr-amazon-cloudwatch-agent, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-mapred, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server | 
| emr-7.7.0 | 1.300032.2-amzn-0 | adot-java-agent, emrfs, emr-amazon-cloudwatch-agent, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-mapred, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server | 
| emr-7.6.0 | 1.300032.2-amzn-0 | adot-java-agent, emrfs, emr-amazon-cloudwatch-agent, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-mapred, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server | 
| emr-7.5.0 | 1.300032.2-amzn-0 | adot-java-agent, emrfs, emr-amazon-cloudwatch-agent, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-mapred, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server | 
| emr-7.4.0 | 1.300032.2-amzn-0 | adot-java-agent, emrfs, emr-amazon-cloudwatch-agent, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-mapred, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server | 
| emr-7.3.0 | 1.300032.2-amzn-0 | adot-java-agent, emrfs, emr-amazon-cloudwatch-agent, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-mapred, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server | 
| emr-7.2.0 | 1.300032.2-amzn-0 | adot-java-agent, emrfs, emr-amazon-cloudwatch-agent, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-mapred, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server | 
| emr-7.1.0 | 1.300032.2-amzn-0 | adot-java-agent, emrfs, emr-amazon-cloudwatch-agent, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-mapred, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server | 
| emr-7.0.0 | 1.300031.1-amzn-0 | adot-java-agent, emr-amazon-cloudwatch-agent | 