

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

# 监控 EMR Serverless 应用程序和作业
<a name="app-job-metrics"></a>

借助 EMR Serverless 的 Amazon CloudWatch 指标，您可以接收 1 分钟的 CloudWatch 指标并访问 CloudWatch 控制面板，以访问 EMR 无服务器应用程序的 near-real-time操作和性能。

EMR Serverless 每分钟发送一次指标。 CloudWatch EMR Serverless 在应用程序级别以及作业、工作人员类型和级别发布这些指标。 capacity-allocation-type

要开始使用 EMR 无服务器存储库中提供的 EMR 无服务器 CloudWatch 仪表板模板并进行部[署](https://github.com/aws-samples/emr-serverless-samples/tree/main/cloudformation/emr-serverless-cloudwatch-dashboard/)。 GitHub 

**注意**  
[EMR Serverless 交互式工作负载](interactive-workloads.md)仅启用了应用程序级别监控，并具有新的工作线程类型维度 `Spark_Kernel`。要监控和调试交互式工作负载，请[在 EMR Studio Workspace 中](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-debug.html#emr-studio-debug-serverless)访问日志和 Apache Spark UI。

## 监控指标
<a name="app-job-metrics-versions"></a>

**重要**  
我们正在重组指标显示以添加 `ApplicationName` 和 `JobName` 作为维度。对于 7.10 及更高版本，旧指标将不再更新。对于 7.10 以下的 EMR 发行版，旧的指标仍然可用。

**当前维度**

下表描述了 `AWS/EMR Serverless` 命名空间中可用的 EMR Serverless 维度。


**EMR Serverless 指标的维度**  

| 维度 | 说明 | 
| --- | --- | 
| ApplicationId | 使用应用程序 ID 筛选 EMR Serverless 应用程序的所有指标。 | 
| ApplicationName | 使用名称筛选 EMR Serverless 应用程序的所有指标。如果未提供名称或包含非 ASCII 字符，则系统会将其发布为 **[未指定]**。 | 
| JobId | 筛选 EMR Serverless 作业运行 ID 的所有指标。 | 
| JobName | 使用名称筛选 EMR Serverless 作业运行的所有指标。如果未提供名称或包含非 ASCII 字符，则系统会将其发布为 **[未指定]**。 | 
| WorkerType | 筛选给定工作线程类型的所有指标。例如，您可以筛选 Spark 作业的 `SPARK_DRIVER` 和 `SPARK_EXECUTORS`。 | 
| CapacityAllocationType | 筛选给定容量分配类型的所有指标。例如，您可以筛选预初始化容量 `PreInitCapacity` 和其他容量 `OnDemandCapacity`。 | 

## 应用程序级别监控
<a name="app-level-metrics"></a>

您可以使用 Amazon 指标在 EMR 无服务器应用程序级别监控容量使用情况。 CloudWatch 您还可以设置单个显示器来监控 CloudWatch 仪表板中的应用程序容量使用情况。


**EMR Serverless 应用程序指标**  

| 指标 | 说明 | 单位 | 维度 | 
| --- | --- | --- | --- | 
| MaxCPUAllowed |  应用程序允许的最大 CPU 数。  | vCPU | ApplicationId, ApplicationName | 
| MaxMemoryAllowed |  应用程序允许的最大内存（GB）。  | 千兆字节（GB） | ApplicationId, ApplicationName | 
| MaxStorageAllowed |  应用程序允许的最大存储空间（GB）。  | 千兆字节（GB） | ApplicationId, ApplicationName | 
| CPUAllocated |  CPUs 分配的 v 的总数。  | vCPU | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| IdleWorkerCount |  空闲的工作线程总数。  | 计数 | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| MemoryAllocated |  分配的总内存（GB）。  | 千兆字节（GB） | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| PendingCreationWorkerCount |  待创建的工作线程总数。  | 计数 | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| RunningWorkerCount |  应用程序使用的工作线程总数。  | 计数 | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| StorageAllocated |  分配的总磁盘存储空间（GB）。  | 千兆字节（GB） | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| TotalWorkerCount |  可用的工作线程总数。  | 计数 | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 

## 作业级别监控
<a name="job-level-metrics"></a>

Amazon EMR Serverless 每隔一分钟向 Amazon CloudWatch 发送以下作业级别指标。您可以按作业运行状态访问聚合作业运行的指标值。每个指标的单位是*计数*。


**EMR Serverless 作业级别指标**  

| 指标 | 说明 | 维度 | 
| --- | --- | --- | 
| SubmittedJobs | 处于“已提交”状态的作业数量。 | ApplicationId, ApplicationName | 
| PendingJobs | 处于“待定”状态的作业数量。 | ApplicationId, ApplicationName | 
| ScheduledJobs | 处于“已计划”状态的作业数量。 | ApplicationId, ApplicationName | 
| RunningJobs | 处于“运行中”状态的作业数量。 | ApplicationId, ApplicationName | 
| SuccessJobs | 处于“成功”状态的作业数量。 | ApplicationId, ApplicationName | 
| FailedJobs | 处于“失败”状态的作业数量。 | ApplicationId, ApplicationName | 
| CancellingJobs | 处于“取消中”状态的作业数量。 | ApplicationId, ApplicationName | 
| CancelledJobs | 处于“已取消”状态的作业数量。 | ApplicationId, ApplicationName | 

您可以使用特定于引擎的应用程序监控特定于引擎的指标，以了解正在运行和已完成的 EMR Serverless 作业。 UIs当您访问运行中作业的 UI 时，系统会显示具有实时更新的实时应用程序 UI。当您访问已完成作业的 UI 时，系统会显示持久性应用程序 UI。

**运行作业**

对于运行中的 EMR Serverless 作业，请访问提供特定于引擎的指标的实时界面。您可以使用 Apache Spark UI 或 Hive Tez UI 来监控和调试作业。要访问这些内容 UIs，请使用 EMR Studio 控制台或使用请求安全 URL 端点。 AWS Command Line Interface

**已完成作业**

对于已完成的 EMR Serverless 作业，请使用 Spark History Server 或 Persistent Hive Tez UI 访问 Spark 或 Hive 作业运行的作业详细信息、阶段、任务和指标。要访问这些内容 UIs，请使用 EMR Studio 控制台，或者使用请求安全 URL 端点。 AWS Command Line Interface

## 作业工作线程级别监控
<a name="job-worker-level-metrics"></a>

Amazon EMR Serverless 将`AWS/EMRServerless`命名空间和指标组中可用的以下作业工作人员级别的`Job Worker Metrics`指标发送给亚马逊。 CloudWatchEMR Serverless 在作业运行期间，在作业级别、工作人员类型和级别收集单个工作人员的数据点。 capacity-allocation-type您可以使用 `ApplicationId` 作为一个维度来监控属于同一应用程序的多个作业。

**注意**  
要查看 EMR Serverless 任务在 Amazon CloudWatch 控制台中查看指标时使用的 CPU 和内存总量，请使用统计数据作为总和，将周期设置为 1 分钟。


**EMR Serverless 作业工作线程级别指标**  

| 指标 | 说明 | 单位 | 维度 | 
| --- | --- | --- | --- | 
| WorkerCpuAllocated | 作业运行中分配给工作线程的 vCPU 核心总数。 | vCPU | JobId、JobName、ApplicationId、ApplicationName、WorkerType 和 CapacityAllocationType | 
| WorkerCpuUsed | 作业运行中工作线程使用的 vCPU 核心总数。 | vCPU | JobId、JobName、ApplicationId、ApplicationName、WorkerType 和 CapacityAllocationType | 
| WorkerMemoryAllocated | 作业运行中分配给工作线程的总内存（GB）。 | 千兆字节（GB） | JobId、JobName、ApplicationId、ApplicationName、WorkerType 和 CapacityAllocationType | 
| WorkerMemoryUsed | 作业运行中工作线程使用的总内存（GB）。 | 千兆字节（GB） | JobId、JobName、ApplicationId、ApplicationName、WorkerType 和 CapacityAllocationType | 
| WorkerEphemeralStorageAllocated | 作业运行中分配给工作线程的临时存储字节数。 | 千兆字节（GB） | JobId、JobName、ApplicationId、ApplicationName、WorkerType 和 CapacityAllocationType | 
| WorkerEphemeralStorageUsed | 作业运行中工作线程使用的临时存储字节数。 | 千兆字节（GB） | JobId、JobName、ApplicationId、ApplicationName、WorkerType 和 CapacityAllocationType | 
| WorkerStorageReadBytes | 作业运行中工作线程从存储中读取的字节数。 | 字节 | JobId、JobName、ApplicationId、ApplicationName、WorkerType 和 CapacityAllocationType | 
| WorkerStorageWriteBytes | 作业运行中从工作线程写入存储的字节数。 | 字节 | JobId、JobName、ApplicationId、ApplicationName、WorkerType 和 CapacityAllocationType | 

下面的步骤介绍了如何访问各种类型的指标。

------
#### [ Console ]

**使用控制台访问应用程序 UI**

1. 按照[控制台入门](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html#gs-console)中的说明，导航到 EMR Studio 上的 EMR Serverless 应用程序。

1. 要访问特定于引擎的应用程序 UIs 和正在运行的作业的日志，请执行以下操作：

   1. 选择状态为 `RUNNING` 的作业。

   1. 在**应用程序详细信息**页面上选择作业，或导航到作业的**作业详细信息**页面。

   1. 在**显示 UI** 下拉菜单下，选择 **Spark UI** 或 **Hive Tez UI**，导航到适合您作业类型的应用程序 UI。

   1. 要访问 Spark 引擎日志，请导航到 Spark UI 中的**执行程序**选项卡，然后选择驱动程序的**日志**链接。要访问 Hive 引擎日志，请在 Hive Tez UI 中选择相应 DAG 的**日志**链接。

1. 要访问已完成作业的特定引擎应用程序 UIs 和日志，请执行以下操作：

   1. 选择状态为 `SUCCESS` 的作业。

   1. 在应用程序的**应用程序详细信息**页面上选择作业，或导航到作业的**作业详细信息**页面。

   1. 在**显示 UI** 下拉菜单下，选择 **Spark History Server** 或 **Persistent Hive Tez UI**，导航到适合您作业类型的应用程序 UI。

   1. 要访问 Spark 引擎日志，请导航到 Spark UI 中的**执行程序**选项卡，然后选择驱动程序的**日志**链接。要访问 Hive 引擎日志，请在 Hive Tez UI 中选择相应 DAG 的**日志**链接。

------
#### [ AWS CLI ]

**要使用访问您的应用程序用户界面 AWS CLI**
+ 要生成一个 URL 用于访问运行中和已完成作业的应用程序 UI，请调用 `GetDashboardForJobRun` API。

  ```
  aws emr-serverless get-dashboard-for-job-run /
  --application-id <application-id> /
  --job-run-id <job-id>
  ```

  生成的 URL 在 1 小时内有效。

------