为 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 Region Server JMX 指标 -
emr-hbase-rest-server-metrics:配置 HBase REST Server 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 格式为
|
如果 metrics_destination 设置为 "PROMETHEUS",则该字段为必填字段。如果未提供键或如果值为空字符串,则预置将失败。 |
emr-system-metrics 属性
| 属性 | 必需 | 描述 | 默认值 | 可能的值 | 备注 |
|---|---|---|---|---|---|
metrics_collection_interval |
可选 | 从 CloudWatch 代理收集和发布指标的频率(秒)。 | "60" | 指定秒数的字符串。只接受整数。 | 您可以使用各个指标组中的 metrics_collection_interval 属性来覆盖此属性。 |
emr-system-metrics 配置
emr-hadoop-hdfs-datanode-metrics 属性
| 属性 | 必需 | 描述 | 默认值 | 可能的值 |
|---|---|---|---|---|
|
可选 | 不适用 | CloudWatch 代理应从中收集指标的 MBean,例如 Hadoop:service=DataNode,name=DataNodeActivity。您可以在 Amazon EMR 发行版 7.0 的示例 JMX YAML 文件 |
包含与 MBean 关联的指标列表的字符串(以逗号分隔)。例如 BlocksCached,BlocksRead。 |
otel.metric.export.interval |
可选 | 收集 Hadoop DataNode 指标的频率(毫秒)。 | "60000" | 指定毫秒数的字符串。只接受整数。 |
emr-hadoop-hdfs-namenode-metrics 属性
| 属性 | 必需 | 描述 | 默认值 | 可能的值 |
|---|---|---|---|---|
|
可选 | 不适用 | CloudWatch 代理应从中收集指标的 MBean,例如 Hadoop:service=NameNode,name=FSNamesystem。您可以在 Amazon EMR 发行版 7.0 的示例 JMX YAML 文件 |
包含与 MBean 关联的指标列表的字符串(以逗号分隔)。例如 BlockCapacity,CapacityUsedGB。 |
otel.metric.export.interval |
可选 | 收集 Hadoop NameNode 指标的频率(毫秒)。 | "60000" | 指定毫秒数的字符串。只接受整数。 |
emr-hadoop-yarn-nodemanager-metrics 属性
| 属性 | 必需 | 描述 | 默认值 | 可能的值 |
|---|---|---|---|---|
|
可选 | 不适用 | CloudWatch 代理应从中收集指标的 MBean,例如 Hadoop:service=NodeManager,name=NodeManagerMetrics。您可以在 Amazon EMR 发行版 7.0 的示例 JMX YAML 文件 |
包含与 MBean 关联的指标列表的字符串(以逗号分隔)。例如 MaxCapacity,AllocatedGB。 |
otel.metric.export.interval |
可选 | 收集 Hadoop YARN NodeManager 指标的频率(毫秒)。 | "60000" | 指定毫秒数的字符串。只接受整数。 |
emr-hadoop-yarn-resourcemanager-metrics 属性
| 属性 | 必需 | 描述 | 默认值 | 可能的值 |
|---|---|---|---|---|
|
可选 | 不适用 | CloudWatch 代理应从中收集指标的 MBean,例如 Hadoop:service=ResourceManager,name=PartitionQueueMetrics。您可以在 Amazon EMR 发行版 7.0 的示例 JMX YAML 文件 |
包含与 MBean 关联的指标列表的字符串(以逗号分隔)。例如 MaxCapacity,MaxCapacityVCores。 |
otel.metric.export.interval |
可选 | 收集 Hadoop YARN ResourceManager 指标的频率(毫秒)。 | "60000" | 指定毫秒数的字符串。只接受整数。 |
emr-hbase-master-metrics 属性
| 属性 | 必需 | 描述 | 默认值 | 可能的值 |
|---|---|---|---|---|
|
可选 | 不适用 | CloudWatch 代理应从中收集指标的 MBean,例如 Hadoop:service=HBase,name=Master,sub=AssignmentManager。您可以在 Amazon EMR 发行版 7.0 的示例 JMX YAML 文件 |
包含与 MBean 关联的指标列表的字符串(以逗号分隔)。例如 AssignFailedCount,AssignSubmittedCount。 |
otel.metric.export.interval |
可选 | 收集 HBase Master 指标的频率(毫秒)。 | "60000" | 指定毫秒数的字符串。只接受整数。 |
emr-hbase-region-server-metrics 属性
| 属性 | 必需 | 描述 | 默认值 | 可能的值 |
|---|---|---|---|---|
|
可选 | 不适用 | CloudWatch 代理应从中收集指标的 MBean,例如 Hadoop:service=HBase,name=RegionServer,sub=IPC。您可以在 Amazon EMR 发行版 7.0 的示例 JMX YAML 文件 |
包含与 MBean 关联的指标列表的字符串(以逗号分隔)。例如 numActiveHandler,numActivePriorityHandler。 |
otel.metric.export.interval |
可选 | 收集 HBase 区域服务器指标的频率(毫秒)。 | "60000" | 指定毫秒数的字符串。只接受整数。 |
emr-hbase-rest-server-metrics 属性
| 属性 | 必需 | 描述 | 默认值 | 可能的值 |
|---|---|---|---|---|
|
可选 | 不适用 | CloudWatch 代理应从中收集指标的 MBean,例如 Hadoop:service=HBase,name=REST。您可以在 Amazon EMR 发行版 7.0 的示例 JMX YAML 文件 |
包含与 MBean 关联的指标列表的字符串(以逗号分隔)。例如 successfulPut,successfulScanCount。 |
otel.metric.export.interval |
可选 | 收集 HBase Rest Server 指标的频率(毫秒)。 | "60000" | 指定毫秒数的字符串。只接受整数。 |
emr-hbase-thrift-server-metrics 属性
| 属性 | 必需 | 描述 | 默认值 | 可能的值 |
|---|---|---|---|---|
|
可选 | 不适用 | CloudWatch 代理应从中收集指标的 MBean,例如 Hadoop:service=HBase,name=Thrift,sub=ThriftOne。您可以在 Amazon EMR 发行版 7.0 的示例 JMX YAML 文件 |
包含与 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": [] } ]
以下示例将集群配置为导出 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 的
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下找到聚合指标。代理还会收集 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 服务的实例中收集
BlockCapacity和CapacityUsedGB指标。 -
代理每 30 秒会从运行 Hadoop Datanode 服务的实例中收集
MemNonHeapUsedM指标。 -
代理每 30 秒会从运行 Hadoop YARN ResourceManaager 的实例中收集
AllocateNumOps和NodeUpdateNumOps指标。
Amazon Managed Service for Prometheus 示例
以下示例演示了如何配置 CloudWatch 代理以将指标导出到 Amazon Managed Service for 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 导出器,它可以重命名某些属性。对于默认指标标签,Amazon Managed Service for Prometheus 使用下划线字符代替 Amazon CloudWatch 使用的句点。如果您使用 Amazon Managed Grafana 来可视化 Amazon Managed Service for Prometheus 中的默认指标,则标签将显示为 cluster_id、instance_id、node_type 和 service_name。