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

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

为亚马逊 EMR 7.0.0 配置 CloudWatch 代理

您可以将 Amazon CloudWatch 代理配置为使用默认 CloudWatch 代理配置提供的系统指标之外的其他系统指标。7.0.0 的配置需要使用引导操作,我们在以下各部分中提供了这些操作的示例。在即将发布的版本中,Amazon EMR 将通过 Amazon EMR API 提供其他配置选项。

使用 Amazon EMR 7.0.0 配置其他的系统指标

按照以下步骤将代理配置为使用 Amazon EMR 7.0.0 中的一组不同的系统指标:

  1. 在您的 Amazon S3 账户中创建或选择一个存储桶,用于存储指定 CloudWatch 代理指标的配置文件。

  2. 使用您指定的首选指标创建 emr-amazon-cloudwatch-agent.json 配置文件。为此,请使用创建 CloudWatch 代理配置文件中介绍的方法之一。有关 CloudWatch 代理配置文件结构的更多信息,请参阅 Amazon CloudWatch 用户指南中的手动创建或编辑 CloudWatch 代理配置文件

  3. 接下来,导航到aws-emr-utilities存储库 GitHub 并下载以下系统指标脚本:

  4. 打开每个 SH 文件并将 my-s3-bucket 替换为步骤 1 中的存储桶的名称。

  5. 将一个 JSON 文件和两个 SH 文件上传到 S3 存储桶。

  6. 现在,您可以导航到 Amazon EMR 控制台并使用代理创建新集群。 CloudWatch 在左导航窗格中的 EMR on EC2 下,选择集群,然后选择创建集群

  7. 名称和应用程序部分中,选择 7.0.0 或更高版本的 Amazon EMR 发行版。

  8. 应用程序捆绑包下,选择要安装到集群中的一个或多个应用程序,并在您的选择中包含 Amazon A CloudWatch gent

  9. 引导操作部分中,选择添加

    • 对于名称,请插入 install_system_metrics_launcher.sh

    • 对于脚本位置,请插入 s3://my-s3-bucket/install_system_metrics_launcher.sh。将 my-s3-bucket 替换为 S3 存储桶的路径。

    • 参数块留为空白。

  10. 选择 Add bootstrap action(添加引导操作)。

  11. 继续创建集群以满足您的工作负载需求。

当您的集群启动时, CloudWatch 代理会将您在配置文件中指定的系统指标发布到 CloudWatch。

使用 Amazon EMR 7.0.0 配置应用程序指标

除了系统指标外,您还可以将 Amazon CloudWatch 代理配置为发布 HDFS 和 YARN 的应用程序指标。按照以下步骤将代理配置为发布应用程序指标:

  1. 在您的 Amazon S3 账户中创建或选择一个存储桶,用于存储指定 CloudWatch 代理指标的配置文件。

  2. 接下来,导航到aws-emr-utilities存储库 GitHub 并下载以下脚本:

    • install_app_metrics_launcher.sh – 下载然后在后台运行 install_app_metrics.sh 的脚本,以便节点可以完成引导。

    • install_app_metrics.sh – 一种脚本,它等待其运行所在的实例完成引导,然后下载并应用将在下一步中下来的 YAML 文件中的配置。

  3. 打开每个文件并将 my-s3-bucket 替换为步骤 1 中的存储桶的名称。

  4. 接下来,下载以下 YAML 映射文件。有关这些 YAML 文件结构的信息,请参阅存储javaagent库中的OpenTelemetry Instrumentation for Java GitHub 。

  5. 将两个 SH 文件和四个 YAML 文件上传到 S3 存储桶。

  6. 现在,您可以导航到 Amazon EMR 控制台并使用代理创建新集群。 CloudWatch 在左导航窗格中的 EMR on EC2 下,选择集群,然后选择创建集群

  7. 名称和应用程序部分中,选择 7.0.0 或更高版本的 Amazon EMR 发行版。

  8. 在 “应用程序捆绑包” 下,选择要安装到集群的捆绑包或自定义应用程序组,并在您的选择中加入CloudWatch 代理

  9. 引导操作部分中,选择添加

    • 对于名称,请插入 install_app_metrics_launcher.sh

    • 对于脚本位置,请插入 s3://my-s3-bucket/install_app_metrics_launcher.sh。将 my-s3-bucket 替换为 S3 存储桶的路径。

    • 参数块留为空白。

  10. 选择 Add bootstrap action(添加引导操作)。

  11. 继续创建集群以满足您的工作负载需求。

当您的集群启动时, CloudWatch 代理会将您指定的应用程序指标以及系统指标发布到 CloudWatch。

使用 Amazon EMR 7.0.0 将 Amazon Managed Service for Prometheus 配置为指标的云存储

您可以将亚马逊 CloudWatch 代理配置为将指标发布到适用于 Prometheus 的亚马逊托管服务,而不是。 CloudWatch

注意

您可以将指标从亚马逊 CloudWatch 代理发布到适用于 Prometheus 的亚马逊托管服务或 CloudWatch亚马逊,但不能将指标发布到同一集群的两个服务。

要将代理配置为向亚马逊 Prometheus 托管服务发布指标,您必须将 (IAM) 权限添加到aps:RemoteWrite Amazon Identity and Access Management 亚马逊 EMR 的亚马逊 EC2 实例配置文件中。以下示例策略包含所需的权限:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "aps:RemoteWrite", "Resource": "*" } ] }
在 EMR 集群上使用 CloudWatch 代理将指标发布到适用于 Prometheus 的亚马逊托管服务

服务策略获得正确权限后,使用以下步骤启动一个集群,该集群使用 CloudWatch 代理向适用于 Prometheus 的亚马逊托管服务发布指标。

  1. 使用 Amazon Web Services Management Console 或 Amazon CLI 创建适用于 Prometheus 的亚马逊托管服务工作区。有关更多信息,请参阅《Amazon Managed Service for Prometheus 用户指南》中的创建工作区

  2. 在您的 Amazon S3 账户中创建或选择一个存储桶,该存储桶用于存储将 Amazon Managed Service for Prometheus 指定为云存储的启动文件。

  3. 接下来,导航到aws-emr-utilities存储库 GitHub 并下载以下脚本:

    • add_prometheus_endpoint_launcher.sh – 下载然后在后台运行 add_prometheus_endpoint.sh 的脚本,以便节点可以完成引导。

    • add_prometheus_endpoint.sh— 一种脚本,它等待其运行的实例完成引导,然后将 CloudWatch 代理配置为发布到你在启动集群时作为参数提供的亚马逊托管服务 Prometheus 终端节点。

  4. 打开每个文件并将 my-s3-bucket 替换为步骤 2 中的存储桶的名称。

  5. 使用创建带有add_prometheus_endpoint_launcher.sh引导操作的 EMR 集群。 Amazon CLI 在以下命令中,将 my-s3-bucket 替换为包含引导操作的存储桶,并将 managedpro-remote-write-workspace-url 替换为 Amazon Managed Service for Prometheus 工作区的远程写入端点。请务必指定 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://my-s3-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 工作空间和具有相应权限的用户。 Amazon Web Services Management Console 有关更多信息,请参阅《Amazon Managed Grafana 用户指南》中的创建工作区

  2. 将 Amazon Managed Service for Prometheus 工作区添加作为 Amazon Managed Grafana 的数据来源。有关更多信息,请参阅《Amazon Managed Grafana 用户指南》中的使用 Amazon 数据来源配置添加 Amazon Managed Service for Prometheus 作为数据来源

注意

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

此外, CloudWatch 代理发布到亚马逊 Prometheus 托管服务的所有应用程序指标都使用该标签代替。job service_name但是,系统指标继续使用 service_name 标签。