为 Amazon EMR 7.1.0 配置 CloudWatch 代理 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

为 Amazon EMR 7.1.0 配置 CloudWatch 代理

从 Amazon EMR 7.1.0 开始,您可以使用 Amazon EMR 配置 API 将Amazon CloudWatch 代理配置为使用其他系统指标、添加应用程序指标和更改指标目标。有关如何使用 EMR 配置 API 来配置集群应用程序的更多信息,请参阅配置应用程序

注意

7.1.0 仅支持重新配置类型 OVERWRITE。有关重新配置类型的更多信息,请参阅重新配置实例组时的注意事项

配置架构

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 Master 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_destination 可选 确定是否将集群指标发布到 Amazon CloudWatch 或 Amazon Managed Service for Prometheus。 "CLOUDWATCH" "CLOUDWATCH"、"PROMETHEUS" 此属性不区分大小写。例如,"Cloudwatch" 与 "CLOUDWATCH" 相同。
prometheus_endpoint 可选 如果设置metrics_destination为 “PROMETHEUS",则此属性将 CloudWatch 代理配置为将指标发送到提供的 Amazon Managed Service for Prometheus 远程写入端点。 不适用 任何有效的 Amazon Managed Service for Prometheus 远程写入 URL。远程写入 URL 格式为
https://aps-workspaces.<region>.amazonaws.com/workspaces/<workspace_id>/api/v1/remote_write
如果 metrics_destination 设置为 "PROMETHEUS",则该字段为必填字段。如果未提供键或如果值为空字符串,则预置将失败。

emr-system-metrics 属性

属性 必需 描述 默认值 可能的值 备注
metrics_collection_interval 可选 从 CloudWatch 代理收集和发布指标的频率(秒)。 "60" 指定秒数的字符串。只接受整数。 您可以使用各个指标组中的 metrics_collection_interval 属性来覆盖此属性。

emr-system-metrics 配置

cpu
属性 必需 描述 默认值 可能的值 备注
metrics 可选 代理要收集的 CPU 指标列表。 请参阅使用 Amazon EM CloudWatch R 的代理的默认指标 以逗号分隔的有效 CPU 指标名称列表,带或不带 cpu_ 前缀,比如 usage_activecpu_time_idle。有关有效指标,请参阅 CloudWatch 代理收集的指标。 指定空字符串意味着不发布任何 CPU 指标。
metrics_collection_interval 可选 代理应收集和发布 CPU 指标的频率(秒)。 全局 metrics_collection_interval 的值。 指定秒数的字符串。只接受整数。 此值仅会覆盖 CPU 指标的全局 metrics_collection_interval 属性。
drop_original_metrics 可选 不发布未聚合指标的 CPU 指标列表。 不发布未聚合的 CPU 指标。 以逗号分隔的 CPU 指标列表,这些指标也在 metrics 属性中指定。空字符串表示发布所有 CPU 指标。 CloudWatch 代理按集群 ID、实例 ID、节点类型和服务名称聚合所有指标。默认情况下, CloudWatch 代理不会为具有多个资源的指标发布 per-resource 指标。
resources 可选 确定代理是否发布 per-core 指标。 "*" "*" 启用 per-core 指标。"" 禁用 per-core 指标。 CloudWatch 代理只发布 per-core 指标。drop_original_metrics
disk
属性 必需 描述 默认值 可能的值 备注
metrics 可选 代理要收集的磁盘指标列表。 请参阅使用 Amazon EM CloudWatch R 的代理的默认指标 以逗号分隔的有效磁盘指标名称列表,带或不带 disk_ 前缀,比如 disk_totalused_percent。有关有效指标,请参阅 CloudWatch 代理收集的指标。 指定空字符串意味着不发布任何磁盘指标。
metrics_collection_interval 可选 代理应收集和发布磁盘指标的频率(秒)。 全局 metrics_collection_interval 的值。 指定秒数的字符串。只接受整数。 此值仅会覆盖磁盘指标的全局 metrics_collection_interval 属性。
drop_original_metrics 可选 不发布未聚合指标的磁盘指标列表。 不发布未聚合的磁盘指标。 以逗号分隔的磁盘指标列表,这些指标也在 metrics 属性中指定。空字符串表示发布所有磁盘指标。 CloudWatch 代理按集群 ID、实例 ID、节点类型和服务名称聚合所有指标。默认情况下, CloudWatch 代理不会为具有多个资源的指标发布 per-resource 指标。
resources 可选 确定代理是否发布 per-interface per-mount-point 指标。 "*" "*" 表示所有挂载点,"" 表示没有挂载点,或以逗号分隔的挂载点列表。例如 "/,/emr" CloudWatch 代理只发布 per-mount-point未丢弃的磁盘指标的指标drop_original_metrics
diskio
属性 必需 描述 默认值 可能的值 备注
metrics 可选 代理要收集的磁盘 IO 指标列表。 请参阅使用 Amazon EM CloudWatch R 的代理的默认指标 以逗号分隔的有效磁盘 IO 指标名称列表,带或不带 diskio_ 前缀,比如 diskio_readswrites。有关有效指标,请参阅 CloudWatch 代理收集的指标。 指定空字符串意味着不发布任何磁盘 IO 指标。
metrics_collection_interval 可选 代理应收集和发布磁盘 IO 指标的频率(秒)。 全局 metrics_collection_interval 的值。 指定秒数的字符串。只接受整数。 此值仅会覆盖磁盘 IO 指标的全局 metrics_collection_interval 属性。
drop_original_metrics 可选 不发布未聚合指标的磁盘 IO 指标列表。 不发布未聚合的磁盘 IO 指标。 以逗号分隔的磁盘 IO 指标列表,这些指标也在 metrics 属性中指定。空字符串表示发布所有磁盘 IO 指标。 CloudWatch 代理按集群 ID、实例 ID、节点类型和服务名称聚合所有指标。默认情况下, CloudWatch 代理不会为具有多个资源的指标发布 per-resource 指标。
resources 可选 确定代理是否发布 per-device 指标。 "*" "*" 表示所有存储设备,"" 表示没有存储设备,或以逗号分隔的设备名称列表。例如 "nvme0n1,nvme1n1" CloudWatch 代理只发布 per-device 指标。drop_original_metrics
mem
属性 必需 描述 默认值 可能的值 备注
metrics 可选 代理要收集的内存指标列表。 请参阅使用 Amazon EM CloudWatch R 的代理的默认指标 以逗号分隔的有效内存指标名称列表,带或不带 mem_ 前缀,比如 mem_availableavailable_percent。有关有效指标,请参阅 CloudWatch 代理收集的指标。 指定空字符串意味着不发布任何内存指标。
metrics_collection_interval 可选 代理应收集和发布内存指标的频率(秒)。 全局 metrics_collection_interval 的值。 指定秒数的字符串。只接受整数。 此值仅会覆盖内存指标的全局 metrics_collection_interval 属性。
net
属性 必需 描述 默认值 可能的值 备注
metrics 可选 代理要收集的网络指标列表。 请参阅使用 Amazon EM CloudWatch R 的代理的默认指标 以逗号分隔的有效网络指标名称列表,带或不带 net_ 前缀,比如 net_packets_sentpackets_recv。有关有效指标,请参阅 CloudWatch 代理收集的指标。 指定空字符串意味着不发布任何网络指标。
metrics_collection_interval 可选 代理应收集和发布网络指标的频率(秒)。 全局 metrics_collection_interval 的值。 指定秒数的字符串。只接受整数。 此值仅会覆盖网络指标的全局 metrics_collection_interval 属性。
drop_original_metrics 可选 不发布未聚合指标的网络指标列表。 不发布未聚合的网络指标。 以逗号分隔的网络指标列表,这些指标也在 metrics 属性中指定。空字符串表示发布所有网络指标。 CloudWatch 代理按集群 ID、实例 ID、节点类型和服务名称聚合所有指标。默认情况下, CloudWatch 代理不会为具有多个资源的指标发布 per-resource 指标。
resources 可选 确定代理是否发布 per-interface 指标。 "*" "*" 表示所有网络接口,"" 表示没有网络接口,或以逗号分隔的接口名称列表。例如 "eth0,eth1" CloudWatch 代理只发布 per-interface 指标。drop_original_metrics
netstat
属性 必需 描述 默认值 可能的值 备注
metrics 可选 代理要收集的网络统计数据列表。 请参阅使用 Amazon EM CloudWatch R 的代理的默认指标 以逗号分隔的有效内存指标名称列表,带或不带 netstat_ 前缀,比如 tcp_listennetstat_udp_socket。有关有效指标,请参阅 CloudWatch 代理收集的指标。 指定空字符串意味着不发布任何网络统计数据指标。
metrics_collection_interval 可选 代理应收集和发布网络统计数据指标的频率(秒)。 全局 metrics_collection_interval 的值。 指定秒数的字符串。只接受整数。 此值仅会覆盖网络统计数据指标的全局 metrics_collection_interval 属性。
processes
属性 必需 描述 默认值 可能的值 备注
metrics 可选 代理要收集的进程指标列表。 请参阅使用 Amazon EM CloudWatch R 的代理的默认指标 以逗号分隔的有效内存指标名称列表,带或不带 processes_ 前缀,比如 processes_runningtotal。有关有效指标,请参阅 CloudWatch 代理收集的指标。 指定空字符串意味着不发布任何进程指标。
metrics_collection_interval 可选 代理应收集和发布系统进程指标的频率(秒)。 全局 metrics_collection_interval 的值。 指定秒数的字符串。只接受整数。 此值仅会覆盖系统进程指标的全局 metrics_collection_interval 属性。
swap
属性 必需 描述 默认值 可能的值 备注
metrics 可选 代理要收集的交换指标列表。 请参阅使用 Amazon EM CloudWatch R 的代理的默认指标 以逗号分隔的有效内存指标名称列表,带或不带 swap_ 前缀,比如 swap_freeused_percent。有关有效指标,请参阅 CloudWatch 代理收集的指标。 指定空字符串意味着不发布任何交换指标。
metrics_collection_interval 可选 代理应收集和发布交换指标的频率(秒)。 全局 metrics_collection_interval 的值。 指定秒数的字符串。只接受整数。 此值仅会覆盖交换指标的全局 metrics_collection_interval 属性。

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

属性 必需 描述 默认值 可能的值
<custom_bean_name> 可选 不适用 MBean 该 CloudWatch 代理应从中收集指标,例如Hadoop:service=DataNode,name=DataNodeActivity。您可以在 Amazon EMR 发行版 7.0 的示例 JMX YAML 文件中找到示例 MBean 名称及其相应指标。 包含与关联的指标列表的字符串(以逗号分隔)。 MBean例如 BlocksCached,BlocksRead
otel.metric.export.interval 可选 收集 Hadoop 指标的频率(毫秒)。 DataNode "60000" 指定毫秒数的字符串。只接受整数。

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

属性 必需 描述 默认值 可能的值
<custom_bean_name> 可选 不适用 MBean 该 CloudWatch 代理应从中收集指标,例如Hadoop:service=NameNode,name=FSNamesystem。您可以在 Amazon EMR 发行版 7.0 的示例 JMX YAML 文件中找到示例 MBean 名称及其相应指标。 包含与关联的指标列表的字符串(以逗号分隔)。 MBean例如 BlockCapacity,CapacityUsedGB
otel.metric.export.interval 可选 收集 Hadoop 指标的频率(毫秒)。 NameNode "60000" 指定毫秒数的字符串。只接受整数。

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

属性 必需 描述 默认值 可能的值
<custom_bean_name> 可选 不适用 MBean 该 CloudWatch 代理应从中收集指标,例如Hadoop:service=NodeManager,name=NodeManagerMetrics。您可以在 Amazon EMR 发行版 7.0 的示例 JMX YAML 文件中找到示例 MBean 名称及其相应指标。 包含与关联的指标列表的字符串(以逗号分隔)。 MBean例如 MaxCapacity,AllocatedGB
otel.metric.export.interval 可选 收集 Hadoop YARN YARN YARN YARN YARN 指标的频率(毫秒)。 NodeManager "60000" 指定毫秒数的字符串。只接受整数。

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

属性 必需 描述 默认值 可能的值
<custom_bean_name> 可选 不适用 MBean 该 CloudWatch 代理应从中收集指标,例如Hadoop:service=ResourceManager,name=PartitionQueueMetrics。您可以在 Amazon EMR 发行版 7.0 的示例 JMX YAML 文件中找到示例 MBean 名称及其相应指标。 包含与关联的指标列表的字符串(以逗号分隔)。 MBean例如 MaxCapacity,MaxCapacityVCores
otel.metric.export.interval 可选 收集 Hadoop YARN YARN YARN YARN YARN 指标的频率(毫秒)。 ResourceManager "60000" 指定毫秒数的字符串。只接受整数。

emr-hbase-master-metrics 属性

属性 必需 描述 默认值 可能的值
<custom_bean_name> 可选 不适用 MBean 该 CloudWatch 代理应从中收集指标,例如Hadoop:service=HBase,name=Master,sub=AssignmentManager。您可以在 Amazon EMR 发行版 7.0 的示例 JMX YAML 文件中找到示例 MBean 名称及其相应指标。 包含与关联的指标列表的字符串(以逗号分隔)。 MBean例如 AssignFailedCount,AssignSubmittedCount
otel.metric.export.interval 可选 收集 HBase Master 指标的频率(毫秒)。 "60000" 指定毫秒数的字符串。只接受整数。

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

属性 必需 描述 默认值 可能的值
<custom_bean_name> 可选 不适用 MBean 该 CloudWatch 代理应从中收集指标,例如Hadoop:service=HBase,name=RegionServer,sub=IPC。您可以在 Amazon EMR 发行版 7.0 的示例 JMX YAML 文件中找到示例 MBean 名称及其相应指标。 包含与关联的指标列表的字符串(以逗号分隔)。 MBean例如 numActiveHandler,numActivePriorityHandler
otel.metric.export.interval 可选 收集 HBase 区域服务器指标的频率(毫秒)。 "60000" 指定毫秒数的字符串。只接受整数。

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

属性 必需 描述 默认值 可能的值
<custom_bean_name> 可选 不适用 MBean 该 CloudWatch 代理应从中收集指标,例如Hadoop:service=HBase,name=REST。您可以在 Amazon EMR 发行版 7.0 的示例 JMX YAML 文件中找到示例 MBean 名称及其相应指标。 包含与关联的指标列表的字符串(以逗号分隔)。 MBean例如 successfulPut,successfulScanCount
otel.metric.export.interval 可选 收集 HBase Rest Server 指标的频率(毫秒)。 "60000" 指定毫秒数的字符串。只接受整数。

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

属性 必需 描述 默认值 可能的值
<custom_bean_name> 可选 不适用 MBean 该 CloudWatch 代理应从中收集指标,例如Hadoop:service=HBase,name=Thrift,sub=ThriftOne。您可以在 Amazon EMR 发行版 7.0 的示例 JMX YAML 文件中找到示例 MBean 名称及其相应指标。 包含与关联的指标列表的字符串(以逗号分隔)。 MBean例如 BatchGet_max,BatchGet_mean
otel.metric.export.interval 可选 收集 T HBase hrift 服务器指标的频率(毫秒)。 "60000" 指定毫秒数的字符串。只接受整数。

系统指标配置示例

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

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

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

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

以下示例将集群配置为导出 cpumemdisk 指标。

[ { "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,因此代理不会忽略此指标。

应用程序指标配置示例

以下示例将 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 服务的实例中收集 BlockCapacityCapacityUsedGB 指标。

  • 代理每 30 秒会从运行 Hadoop Datanode 服务的实例中收集 MemNonHeapUsedM 指标。

  • 代理每 30 秒会从运行 Hadoop YARN 的实例中收集AllocateNumOpsNodeUpdateNumOps指标。 ResourceManaager

Amazon Managed Service for Prometheus 示例

以下示例演示了如何配置 CloudWatch 代理以将指标导出到 Amazon Managed Service for Prometheus。

如果您当前正在将指标导出到 Amazon Managed Service for Prometheus,想要重新配置集群的指标,并继续将指标导出到 Amazon Managed Service for Prometheus,则必须包含属性 metrics_destinationprometheus_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 导出器,它可以重命名某些属性。对于默认指标标签,Amazon Managed Service for Prometheus 使用下划线字符代替 Amazon 使用的句点。 CloudWatch 如果您使用 Amazon Managed Grafana 来可视化 Amazon Managed Service for Prometheus 中的默认指标,则标签将显示为 cluster_idinstance_idnode_typeservice_name