本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为亚马逊 EMR 7.1.0 配置 CloudWatch 代理
从 Amazon EMR 7.1.0 开始,您可以使用 Amazon 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 Thrift Server JMX 指标
下表列出了所有分类的可用属性和配置。
emr-metrics 属性
属性 | 必需 | 描述 | 默认值 | 可能的值 | 备注 |
---|---|---|---|---|---|
metrics_destination |
可选 | 确定集群指标是发布到亚马逊 CloudWatch 还是发布到亚马逊 Prometheus 托管服务。 | "CLOUDWATCH" | "CLOUDWATCH"、"PROMETHEUS" | 此属性不区分大小写。例如,"Cloudwatch" 与 "CLOUDWATCH" 相同。 |
prometheus_endpoint |
可选 | 如果设置metrics_destination 为 “PROMETHEUS”,则此属性将 CloudWatch 代理配置为向提供的亚马逊托管服务 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 配置
属性 | 必需 | 描述 | 默认值 | 可能的值 | 备注 |
---|---|---|---|---|---|
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 |
可选 | 确定代理是否发布 per-core 指标。 | "*" | "*" 启用 per-core 指标。"" 禁用 per-core 指标。 | CloudWatch 代理仅发布未被放入的 CPU 指标的每核指标。drop_original_metrics |
emr-hadoop-hdfs-datanode-指标属性
属性 | 必需 | 描述 | 默认值 | 可能的值 |
---|---|---|---|---|
|
可选 | 不适用 | MBean 该 CloudWatch 代理应从中收集指标,例如Hadoop:service=DataNode,name=DataNodeActivity 。您可以在 Amazon EMR 7.0 版本的 JMX YAML 文件示例 JMX YAML 文件 |
一个字符串,其中包含与相关联的以逗号分隔的指标列表。 MBean例如,BlocksCached,BlocksRead 。 |
otel.metric.export.interval |
可选 | 收集 Hadoop 指标的频率(以毫秒为单位)。 DataNode | "60000" | 指定毫秒数的字符串。只接受整数。 |
emr-hadoop-hdfs-namenode-指标属性
属性 | 必需 | 描述 | 默认值 | 可能的值 |
---|---|---|---|---|
|
可选 | 不适用 | MBean 该 CloudWatch 代理应从中收集指标,例如Hadoop:service=NameNode,name=FSNamesystem 。您可以在 Amazon EMR 7.0 版本的 JMX YAML 文件示例 JMX YAML 文件 |
一个字符串,其中包含与相关联的以逗号分隔的指标列表。 MBean例如,BlockCapacity,CapacityUsedGB 。 |
otel.metric.export.interval |
可选 | 收集 Hadoop 指标的频率(以毫秒为单位)。 NameNode | "60000" | 指定毫秒数的字符串。只接受整数。 |
emr-hadoop-yarn-nodemanager-指标属性
属性 | 必需 | 描述 | 默认值 | 可能的值 |
---|---|---|---|---|
|
可选 | 不适用 | MBean 该 CloudWatch 代理应从中收集指标,例如Hadoop:service=NodeManager,name=NodeManagerMetrics 。您可以在 Amazon EMR 7.0 版本的 JMX YAML 文件示例 JMX YAML 文件 |
一个字符串,其中包含与相关联的以逗号分隔的指标列表。 MBean例如,MaxCapacity,AllocatedGB 。 |
otel.metric.export.interval |
可选 | 收集 Hadoop YARN 指标的频率(以毫秒为单位)。 NodeManager | "60000" | 指定毫秒数的字符串。只接受整数。 |
emr-hadoop-yarn-resourcemanager-指标属性
属性 | 必需 | 描述 | 默认值 | 可能的值 |
---|---|---|---|---|
|
可选 | 不适用 | MBean 该 CloudWatch 代理应从中收集指标,例如Hadoop:service=ResourceManager,name=PartitionQueueMetrics 。您可以在 Amazon EMR 7.0 版本的 JMX YAML 文件示例 JMX YAML 文件 |
一个字符串,其中包含与相关联的以逗号分隔的指标列表。 MBean例如,MaxCapacity,MaxCapacityVCores 。 |
otel.metric.export.interval |
可选 | 收集 Hadoop YARN 指标的频率(以毫秒为单位)。 ResourceManager | "60000" | 指定毫秒数的字符串。只接受整数。 |
emr-hbase-master-metrics 属性
属性 | 必需 | 描述 | 默认值 | 可能的值 |
---|---|---|---|---|
|
可选 | 不适用 | MBean 该 CloudWatch 代理应从中收集指标,例如Hadoop:service=HBase,name=Master,sub=AssignmentManager 。您可以在 Amazon EMR 7.0 版本的 JMX YAML 文件示例 JMX YAML 文件 |
一个字符串,其中包含与相关联的以逗号分隔的指标列表。 MBean例如,AssignFailedCount,AssignSubmittedCount 。 |
otel.metric.export.interval |
可选 | 收集 HBase 主指标的频率(以毫秒为单位)。 | "60000" | 指定毫秒数的字符串。只接受整数。 |
emr-hbase-region-server-指标属性
属性 | 必需 | 描述 | 默认值 | 可能的值 |
---|---|---|---|---|
|
可选 | 不适用 | MBean 该 CloudWatch 代理应从中收集指标,例如Hadoop:service=HBase,name=RegionServer,sub=IPC 。您可以在 Amazon EMR 7.0 版本的 JMX YAML 文件示例 JMX YAML 文件 |
一个字符串,其中包含与相关联的以逗号分隔的指标列表。 MBean例如,numActiveHandler,numActivePriorityHandler 。 |
otel.metric.export.interval |
可选 | 收集 HBase 区域服务器指标的频率(以毫秒为单位)。 | "60000" | 指定毫秒数的字符串。只接受整数。 |
emr-hbase-rest-server-指标属性
属性 | 必需 | 描述 | 默认值 | 可能的值 |
---|---|---|---|---|
|
可选 | 不适用 | MBean 该 CloudWatch 代理应从中收集指标,例如Hadoop:service=HBase,name=REST 。您可以在 Amazon EMR 7.0 版本的 JMX YAML 文件示例 JMX YAML 文件 |
一个字符串,其中包含与相关联的以逗号分隔的指标列表。 MBean例如,successfulPut,successfulScanCount 。 |
otel.metric.export.interval |
可选 | 收集 HBase Rest Server 指标的频率(以毫秒为单位)。 | "60000" | 指定毫秒数的字符串。只接受整数。 |
emr-hbase-thrift-server-指标属性
属性 | 必需 | 描述 | 默认值 | 可能的值 |
---|---|---|---|---|
|
可选 | 不适用 | MBean 该 CloudWatch 代理应从中收集指标,例如Hadoop:service=HBase,name=Thrift,sub=ThriftOne 。您可以在 Amazon EMR 7.0 版本的 JMX YAML 文件示例 JMX YAML 文件 |
一个字符串,其中包含与相关联的以逗号分隔的指标列表。 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": []
}
]
以下示例将集群配置为导出 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
,因此代理不会忽略此指标。
应用程序指标配置示例
以下示例将 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 示例
以下示例演示如何配置 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
。