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

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

为亚马逊 EMR 7.1.0 配置 CloudWatch 代理

从 Amazon EMR 7.1.0 开始,您可以使用亚马逊 EMR 配置 API 将亚马逊 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 节俭服务器 JMX 指标

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

emr-metrics 属性

属性 必需 描述 默认值 可能的值 注意
metrics_destination 可选 确定集群指标是发布到亚马逊 CloudWatch 还是发布到亚马逊 Prometheus 托管服务。 “云观察” “CLOUDWATCH”、“PROMETHEUS” 此属性不区分大小写。例如,“Cloudwatch” 与 “CLOUDWATCH” 相同。
prometheus_endpoint 可选 如果设置metrics_destination为 “PROMETHEUS”,则此属性将 CloudWatch 代理配置为向提供的亚马逊托管服务 Prometheus 远程写入端点发送指标。 不适用 任何有效的亚马逊托管服务 Prometheus 远程写入 URL。远程写入 URL 格式为
https://aps-workspaces.<region>.amazonaws.com/workspaces/<workspace_id>/api/v1/remote_write
如果设置为 “PROMETHE metrics_destination US”,则此字段为必填字段。如果您不提供密钥或值为空字符串,则配置将失败。

emr-system-metrics 属性

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

emr-system-metrics 配置

cpu
属性 必需 描述 默认值 可能的值 注意
metrics 可选 代理要收集的 CPU 指标列表。 使用 Amazon EMR 查看 CloudWatch 代理的默认指标 以逗号分隔的有效 CPU 指标名称列表,带或不带cpu_前缀,例如usage_active和。cpu_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 代理不会为具有多个资源的指标发布每种资源的指标。
resources 可选 确定代理是否将发布每个内核的指标。 "*" “*” 启用每核指标。“” 禁用每内核指标。 CloudWatch 代理仅发布未放入的 CPU 指标的每核指标。drop_original_metrics
disk
属性 必需 描述 默认值 可能的值 注意
metrics 可选 代理要收集的磁盘指标列表。 使用 Amazon EMR 查看 CloudWatch 代理的默认指标 以逗号分隔的有效磁盘指标名称列表,带或不带disk_前缀,例如disk_total和。used_percent有关有效指标,请参阅 CloudWatch 代理收集的指标。 指定空字符串意味着不发布任何磁盘指标。
metrics_collection_interval 可选 代理收集和发布磁盘指标的频率(以秒为单位)。 全球的价值metrics_collection_interval 指定秒数的字符串。只接受整数。 此值仅覆盖磁盘指标的全局metrics_collection_interval属性。
drop_original_metrics 可选 不发布未聚合指标的磁盘指标列表。 未发布未汇总的磁盘指标。 以逗号分隔的磁盘指标列表,这些指标也在 metrics 属性中指定。空字符串表示发布所有磁盘指标。 CloudWatch 代理按集群 ID、实例 ID、节点类型和服务名称汇总所有指标。默认情况下, CloudWatch 代理不会为具有多个资源的指标发布每种资源的指标。
resources 可选 确定代理是否将发布 per-mount-point 指标。 "*" “*” 表示所有挂载点,“” 表示没有挂载点或以逗号分隔的挂载点列表。例如,"/,/emr" CloudWatch 代理仅发布 per-mount-point 未放入的磁盘指标的指标drop_original_metrics
diskio
属性 必需 描述 默认值 可能的值 注意
metrics 可选 代理要收集的磁盘 IO 指标列表。 使用 Amazon EMR 查看 CloudWatch 代理的默认指标 以逗号分隔的有效磁盘 IO 指标名称列表,带或不带diskio_前缀,例如diskio_reads和。writes有关有效指标,请参阅 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 代理不会为具有多个资源的指标发布每种资源的指标。
resources 可选 确定代理是否会发布每台设备的指标。 "*" “*” 表示所有存储设备,“” 表示没有存储设备或以逗号分隔的设备名称列表。例如,"nvme0n1,nvme1n1" CloudWatch 代理仅发布未放入的磁盘 IO 指标的每台设备指标。drop_original_metrics
mem
属性 必需 描述 默认值 可能的值 注意
metrics 可选 代理要收集的内存指标列表。 使用 Amazon EMR 查看 CloudWatch 代理的默认指标 以逗号分隔的有效内存指标名称列表,带或不带mem_前缀,例如mem_available和。available_percent有关有效指标,请参阅 CloudWatch 代理收集的指标。 指定空字符串意味着不发布任何内存指标。
metrics_collection_interval 可选 代理收集和发布内存指标的频率(以秒为单位)。 全球的价值metrics_collection_interval 指定秒数的字符串。只接受整数。 此值仅覆盖内存指标的全局metrics_collection_interval属性。
net
属性 必需 描述 默认值 可能的值 注意
metrics 可选 代理要收集的网络指标列表。 使用 Amazon EMR 查看 CloudWatch 代理的默认指标 以逗号分隔的有效网络指标名称列表,带或不带net_前缀,例如net_packets_sent和。packets_recv有关有效指标,请参阅 CloudWatch 代理收集的指标。 指定空字符串意味着不发布任何网络指标。
metrics_collection_interval 可选 代理收集和发布网络指标的频率(以秒为单位)。 全球的价值metrics_collection_interval 指定秒数的字符串。只接受整数。 此值仅覆盖网络指标的全局metrics_collection_interval属性。
drop_original_metrics 可选 不发布未汇总指标的网络指标列表。 未发布未汇总的网络指标。 以逗号分隔的网络指标列表,这些指标也在 metrics 属性中指定。空字符串表示发布所有网络指标。 CloudWatch 代理按集群 ID、实例 ID、节点类型和服务名称汇总所有指标。默认情况下, CloudWatch 代理不会为具有多个资源的指标发布每种资源的指标。
resources 可选 确定代理是否将发布每个接口的指标。 "*" “*” 表示所有网络接口,“” 表示没有网络接口,或者是以逗号分隔的接口名称列表。例如,"eth0,eth1" CloudWatch 代理仅发布未放入的网络指标的每个接口指标。drop_original_metrics
netstat
属性 必需 描述 默认值 可能的值 注意
metrics 可选 代理要收集的网络统计指标列表。 使用 Amazon EMR 查看 CloudWatch 代理的默认指标 以逗号分隔的有效内存指标名称列表,带或不带netstat_前缀,例如tcp_listen和。netstat_udp_socket有关有效指标,请参阅 CloudWatch 代理收集的指标。 指定空字符串意味着不发布任何网络统计指标。
metrics_collection_interval 可选 代理收集和发布网络统计指标的频率(以秒为单位)。 全球的价值metrics_collection_interval 指定秒数的字符串。只接受整数。 此值仅覆盖网络统计指标的全局metrics_collection_interval属性。
processes
属性 必需 描述 默认值 可能的值 注意
metrics 可选 代理要收集的流程指标列表。 使用 Amazon EMR 查看 CloudWatch 代理的默认指标 以逗号分隔的有效内存指标名称列表,带或不带processes_前缀,例如processes_running和。total有关有效指标,请参阅 CloudWatch 代理收集的指标。 指定空字符串意味着不发布任何流程指标。
metrics_collection_interval 可选 代理收集和发布系统进程指标的频率(以秒为单位)。 全球的价值metrics_collection_interval 指定秒数的字符串。只接受整数。 此值仅覆盖系统进程指标的全局metrics_collection_interval属性。
swap
属性 必需 描述 默认值 可能的值 注意
metrics 可选 代理要收集的交换指标列表。 使用 Amazon EMR 查看 CloudWatch 代理的默认指标 以逗号分隔的有效内存指标名称列表,带或不带swap_前缀,例如swap_free和。used_percent有关有效指标,请参阅 CloudWatch 代理收集的指标。 指定空字符串意味着不发布任何交换指标。
metrics_collection_interval 可选 代理收集和发布掉期指标的频率(以秒为单位)。 全球的价值metrics_collection_interval 指定秒数的字符串。只接受整数。 此值仅覆盖掉期指标的全局metrics_collection_interval属性。

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

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

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

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

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

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

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

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

emr-hbase-master-metrics 属性

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

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

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

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

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

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

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

系统指标配置示例

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

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

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

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

以下示例将集群配置为导出cpumem、和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 的cpu_guest指标。您可以在 CloudWatch 命名空间下找到聚合指标CWAgent > cluster.id, instance.id, node.type, service.name

  • 代理每 30 秒收集所有 CPU 的cpu_idle指标。您可以在 CloudWatch 命名空间下找到聚合指标CWAgent > cluster.id, instance.id, node.type, service.name。代理还会收集每个 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。代理还会收集每次挂载的指标。你可以在同一个命名空间中找到它们。代理收集此指标是因为该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

适用于 Prometheus 的亚马逊托管服务示例

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

如果您当前正在将指标导出到适用于 Prometheus 的亚马逊托管服务,并且想要重新配置集群的指标并继续将指标导出到适用于 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 来可视化适用于 Prometheus 的亚马逊托管服务中的默认指标,则标签将显示为、、和。cluster_id instance_id node_type service_name