

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 監控 EMR Serverless
<a name="metrics"></a>

本節涵蓋監控 Amazon EMR Serverless 應用程式和任務的方式。

**Topics**
+ [監控 EMR Serverless 應用程式和任務](app-job-metrics.md)
+ [使用 Amazon Managed Service for Prometheus 監控 Spark 指標](monitor-with-prometheus.md)
+ [EMR Serverless 用量指標](monitoring-usage.md)

# 監控 EMR Serverless 應用程式和任務
<a name="app-job-metrics"></a>

透過 EMR Serverless 的 Amazon CloudWatch 指標，您可以接收 1 分鐘的 CloudWatch 指標並存取 CloudWatch 儀表板，以存取 EMR Serverless 應用程式的near-real-time操作和效能。

EMR Serverless 每分鐘將指標傳送至 CloudWatch。EMR Serverless 會在應用程式層級以及任務、工作者類型和capacity-allocation-type層級發出這些指標。

若要開始使用，請使用 EMR Serverless [ GitHub 儲存庫中提供的 EMR Serverless](https://github.com/aws-samples/emr-serverless-samples/tree/main/cloudformation/emr-serverless-cloudwatch-dashboard/) CloudWatch 儀表板範本並進行部署。

**注意**  
[EMR Serverless 互動式工作負載](interactive-workloads.md)僅啟用應用程式層級監控，並具有新的工作者類型維度 `Spark_Kernel`。若要監控和偵錯互動式工作負載，請從 [EMR Studio 工作區中](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 指標的維度**  

| 維度 | Description | 
| --- | --- | 
| ApplicationId | 使用應用程式 ID 篩選 EMR Serverless 應用程式的所有指標。 | 
| ApplicationName | 使用 名稱篩選 EMR Serverless 應用程式的所有指標。如果未提供名稱，或包含非 ASCII 字元，則會發佈為 **【未指定】**。 | 
| JobId | 篩選任務執行 ID 的 EMR Serverless 的所有指標。 | 
| JobName | 使用 名稱篩選 EMR Serverless 任務執行的所有指標。如果未提供名稱，或包含非 ASCII 字元，則會發佈為 **【未指定】**。 | 
| WorkerType | 篩選指定工作者類型的所有指標。例如，您可以篩選 Spark 任務的 `SPARK_DRIVER`和 `SPARK_EXECUTORS` 。 | 
| CapacityAllocationType | 篩選指定容量分配類型的所有指標。例如，您可以篩選 `PreInitCapacity`的預先初始化容量和其他`OnDemandCapacity`項目。 | 

## 應用程式層級監控
<a name="app-level-metrics"></a>

您可以使用 Amazon CloudWatch 指標監控 EMR Serverless 應用程式層級的容量使用量。您也可以設定單一顯示器來監控 CloudWatch 儀表板中的應用程式容量用量。


**EMR Serverless 應用程式指標**  

| 指標 | Description | 單位 | 維度 | 
| --- | --- | --- | --- | 
| MaxCPUAllowed |  應用程式允許的 CPU 上限。  | vCPU | ApplicationId, ApplicationName | 
| MaxMemoryAllowed |  應用程式允許的記憶體上限，以 GB 為單位。  | GB (GB) | ApplicationId, ApplicationName | 
| MaxStorageAllowed |  應用程式允許的最大儲存體，以 GB 為單位。  | GB (GB) | ApplicationId, ApplicationName | 
| CPUAllocated |  配置vCPUs 總數。  | vCPU | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| IdleWorkerCount |  工作者閒置總數。  | 計數 | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| MemoryAllocated |  配置的總記憶體，以 GB 為單位。  | GB (GB) | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| PendingCreationWorkerCount |  待建立的工作者總數。  | 計數 | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| RunningWorkerCount |  應用程式正在使用的工作者總數。  | 計數 | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| StorageAllocated |  配置的總磁碟儲存體，以 GB 為單位。  | GB (GB) | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| TotalWorkerCount |  可用的工作者總數。  | 計數 | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 

## 任務層級監控
<a name="job-level-metrics"></a>

Amazon EMR Serverless Amazon CloudWatch 每一分鐘會將下列任務層級指標傳送至 。您可以存取依任務執行狀態彙總任務執行的指標值。每個指標的單位都是*計數*。


**EMR Serverless 任務層級指標**  

| 指標 | Description | 維度 | 
| --- | --- | --- | 
| SubmittedJobs | 處於已提交狀態的任務數量。 | ApplicationId, ApplicationName | 
| PendingJobs | 處於待定狀態的任務數量。 | ApplicationId, ApplicationName | 
| ScheduledJobs | 處於排程狀態的任務數量。 | ApplicationId, ApplicationName | 
| RunningJobs | 處於執行中狀態的任務數量。 | ApplicationId, ApplicationName | 
| SuccessJobs | 處於成功狀態的任務數量。 | ApplicationId, ApplicationName | 
| FailedJobs | 處於失敗狀態的任務數量。 | ApplicationId, ApplicationName | 
| CancellingJobs | 處於取消狀態的任務數量。 | ApplicationId, ApplicationName | 
| CancelledJobs | 處於已取消狀態的任務數量。 | ApplicationId, ApplicationName | 

您可以使用引擎特定應用程式 UIs 監控引擎特定指標，以執行和完成 EMR Serverless 任務。當您存取執行中任務的 UI 時，即時應用程式 UI 會顯示即時更新。當您存取已完成任務的 UI 時，會顯示持久性應用程式 UI。

**執行任務**

對於執行中的 EMR Serverless 任務，請存取提供引擎特定指標的即時界面。您可以使用 Apache Spark UI 或 Hive Tez UI 來監控和偵錯任務。若要存取這些 UIs，請使用 EMR Studio 主控台或透過 請求安全 URL 端點 AWS Command Line Interface。

**已完成的任務**

對於您已完成的 EMR Serverless 任務，請使用 Spark 歷史記錄伺服器或持久性 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`指標群組中可用的下列任務工作者層級指標傳送至 Amazon CloudWatch。EMR Serverless 會在任務層級、工作者類型和capacity-allocation-type層級的任務執行期間，收集個別工作者的資料點。您可以使用 `ApplicationId`做為維度，以監控屬於相同應用程式的多個任務。

**注意**  
若要在 Amazon CloudWatch 主控台中檢視指標時，檢視 EMR Serverless 任務所使用的 CPU 和記憶體總數，請使用統計資料總和和和期間 1 分鐘。


**EMR Serverless 任務工作者層級指標**  

| 指標 | Description | 單位 | 維度 | 
| --- | --- | --- | --- | 
| WorkerCpuAllocated | 任務執行中為工作者配置的 vCPU 核心總數。 | vCPU | JobId、JobName、ApplicationId、ApplicationName、WorkerType 和 CapacityAllocationType | 
| WorkerCpuUsed | 工作執行中工作者使用的 vCPU 核心總數。 | vCPU | JobId、JobName、ApplicationId、ApplicationName、WorkerType 和 CapacityAllocationType | 
| WorkerMemoryAllocated | 任務執行中為工作者配置的總記憶體，以 GB 為單位。 | GB (GB) | JobId、JobName、ApplicationId、ApplicationName、WorkerType 和 CapacityAllocationType | 
| WorkerMemoryUsed | 工作者在任務執行中所使用的總記憶體，以 GB 為單位。 | GB (GB) | JobId、JobName、ApplicationId、ApplicationName、WorkerType 和 CapacityAllocationType | 
| WorkerEphemeralStorageAllocated | 任務執行中為工作者配置的暫時性儲存的位元組數。 | GB (GB) | JobId、JobName、ApplicationId、ApplicationName、WorkerType 和 CapacityAllocationType | 
| WorkerEphemeralStorageUsed | 工作者在任務執行中使用的暫時性儲存的位元組數。 | GB (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 歷史記錄伺服器**或**持久性 Hive Tez UI**，以導覽至任務類型的應用程式 UI。

   1. 若要存取 Spark 引擎日誌，請導覽至 Spark UI 中的**執行器**索引標籤，然後選擇驅動程式的**日誌**連結。若要存取 Hive 引擎日誌，請在 **Hive Tez UI 中選擇適當 DAG 的日誌**連結。

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

**使用 存取您的應用程式 UI AWS CLI**
+ 若要產生 URL，以使用 存取應用程式 UI 來執行和完成的任務，請呼叫 `GetDashboardForJobRun` API。

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

  您產生的 URL 有效期為一小時。

------

# 使用 Amazon Managed Service for Prometheus 監控 Spark 指標
<a name="monitor-with-prometheus"></a>

使用 Amazon EMR 7.1.0 版和更新版本，您可以將 EMR Serverless 與 Amazon Managed Service for Prometheus 整合，以收集 EMR Serverless 任務和應用程式的 Apache Spark 指標。當您使用 AWS 主控台、EMR Serverless API 或 提交任務或建立應用程式時，即可使用此整合 AWS CLI。

## 先決條件
<a name="monitoring-with-prometheus-prereqs"></a>

在您將 Spark 指標交付至 Amazon Managed Service for Prometheus 之前，請先完成下列先決條件。
+ [建立 Amazon Managed Service for Prometheus 工作區。](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-onboard-create-workspace.html)此工作區用作擷取端點。記下針對**端點 - 遠端寫入 URL 顯示的 URL**。建立 EMR Serverless 應用程式時，您需要指定 URL。
+ 若要將任務的存取權授予 Amazon Managed Service for Prometheus 以進行監控，請將下列政策新增至您的任務執行角色。

  ```
  {
      "Sid": "AccessToPrometheus",
      "Effect": "Allow",
      "Action": ["aps:RemoteWrite"],
      "Resource": "arn:aws:aps:<AWS_REGION>:<AWS_ACCOUNT_ID>:workspace/<WORKSPACE_ID>"
  }
  ```

## 設定
<a name="monitoring-with-prometheus-setup"></a>

**使用 AWS 主控台建立與 Amazon Managed Service for Prometheus 整合的應用程式**

1. 請參閱 [Amazon EMR Serverless 入門](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html                             )以建立應用程式。

1. 當您建立應用程式時，請選擇**使用自訂設定**，然後在您要設定的欄位內指定資訊來設定應用程式。

1. 在**應用程式日誌和指標**下，選擇將**引擎指標交付至 Amazon Managed Service for Prometheus**，然後指定遠端寫入 URL。

1. 指定您想要的任何其他組態設定，然後選擇**建立和啟動應用程式**。

**使用 AWS CLI 或 EMR Serverless API**

當您執行 AWS CLI 或 `start-job-run`命令時，您也可以使用 `create-application`或 EMR Serverless API 將您的 EMR Serverless 應用程式與 Amazon Managed Service for Prometheus 整合。

------
#### [ create-application ]

```
aws emr-serverless create-application \
--release-label emr-7.1.0 \
--type "SPARK" \
--monitoring-configuration '{ 
    "prometheusMonitoringConfiguration": {
        "remoteWriteUrl": "https://aps-workspaces.<AWS_REGION>.amazonaws.com/workspaces/<WORKSPACE_ID>/api/v1/remote_write"
    }
}'
```

------
#### [ start-job-run ]

```
aws emr-serverless start-job-run \
--application-id <APPPLICATION_ID> \
--execution-role-arn <JOB_EXECUTION_ROLE> \
--job-driver '{
    "sparkSubmit": {
        "entryPoint": "local:///usr/lib/spark/examples/src/main/python/pi.py",
        "entryPointArguments": ["10000"],
        "sparkSubmitParameters": "--conf spark.dynamicAllocation.maxExecutors=10"
    }
}' \
--configuration-overrides '{
     "monitoringConfiguration": {
        "prometheusMonitoringConfiguration": {
            "remoteWriteUrl": "https://aps-workspaces.<AWS_REGION>.amazonaws.com/workspaces/<WORKSPACE_ID>/api/v1/remote_write"
        }
    }
}'
```

------

在您的命令`prometheusMonitoringConfiguration`中包含 表示 EMR Serverless 必須使用收集 Spark 指標的代理程式來執行 Spark 任務，並將其寫入 Amazon Managed Service for Prometheus 的`remoteWriteUrl`端點。然後，您可以使用 Amazon Managed Service for Prometheus 中的 Spark 指標進行視覺化、提醒和分析。

## 進階組態屬性
<a name="monitoring-with-prometheus-config-options"></a>

EMR Serverless 在 Spark 中使用名為 的元件`PrometheusServlet`來收集 Spark 指標，並將效能資料轉譯為與 Amazon Managed Service for Prometheus 相容的資料。根據預設，EMR Serverless 會在 Spark 中設定預設值，並在您使用 提交任務時剖析驅動程式和執行器指標`PrometheusMonitoringConfiguration`。

下表說明提交將指標傳送至 Amazon Managed Service for Prometheus 的 Spark 任務時設定的所有屬性。


| Spark 屬性 | 預設值 | Description | 
| --- | --- | --- | 
| spark.metrics.conf.\$1.sink.prometheusServlet.class | org.apache.spark.metrics.sink.PrometheusServlet | Spark 用來將指標傳送至 Amazon Managed Service for Prometheus 的類別。若要覆寫預設行為，請指定您自己的自訂類別。 | 
| spark.metrics.conf.\$1.source.jvm.class | org.apache.spark.metrics.source.JvmSource | 類別 Spark 使用 從基礎 Java 虛擬機器收集和傳送關鍵指標。若要停止收集 JVM 指標，請將其設定為空字串來停用此屬性，例如 `""`。若要覆寫預設行為，請指定您自己的自訂類別。 | 
| spark.metrics.conf.driver.sink.prometheusServlet.path | /metrics/prometheus | Amazon Managed Service for Prometheus 用來從驅動程式收集指標的不同 URL。若要覆寫預設行為，請指定您自己的路徑。若要停止收集驅動程式指標，請將其設定為空字串來停用此屬性，例如 `""`。 | 
| spark.metrics.conf.executor.sink.prometheusServlet.path | /metrics/executor/prometheus | Amazon Managed Service for Prometheus 用來從執行器收集指標的不同 URL。若要覆寫預設行為，請指定您自己的路徑。若要停止收集執行器指標，請將其設定為空字串來停用此屬性，例如 `""`。 | 

如需 Spark 指標的詳細資訊，請參閱 [Apache Spark 指標](https://spark.apache.org/docs/3.5.0/monitoring.html#metrics)。

## 考量和限制
<a name="monitoring-with-prometheus-limitations"></a>

使用 Amazon Managed Service for Prometheus 從 EMR Serverless 收集指標時，請考慮下列考量和限制。
+ Amazon Managed Service for Prometheus 與 EMR Serverless 搭配使用的支援僅適用於 [AWS 區域 Amazon Managed Service for Prometheus 正式推出所在的 。](https://docs.aws.amazon.com/general/latest/gr/prometheus-service.html)
+ 在 Amazon Managed Service for Prometheus 上執行代理程式以收集 Spark 指標，需要工作者提供更多資源。如果您選擇較小的工作者大小，例如一個 vCPU 工作者，您的任務執行時間可能會增加。
+ Amazon Managed Service for Prometheus 搭配 EMR Serverless 的支援僅適用於 Amazon EMR 7.1.0 版和更新版本。
+ Amazon Managed Service for Prometheus 必須部署在您執行 EMR Serverless 以收集指標的相同帳戶中。

# EMR Serverless 用量指標
<a name="monitoring-usage"></a>

您可以使用 Amazon CloudWatch 用量指標來讓您了解帳戶使用的資源。使用這些指標將 CloudWatch 圖形和儀表板上的服務用量視覺化。

EMR Serverless 用量指標對應至 Service Quotas。您可以設定警示，在您的用量接近服務配額時發出警示。如需詳細資訊，請參閱 [Service Quotas 使用者指南中的 Service Quotas 和 Amazon CloudWatch 警示](https://docs.aws.amazon.com/servicequotas/latest/userguide/configure-cloudwatch.html)。 *Service Quotas *

如需 EMR Serverless 服務配額的詳細資訊，請參閱 [的端點和配額 EMR Serverless](endpoints-quotas.md)。

## EMR Serverless 的服務配額用量指標
<a name="usage-metrics"></a>

EMR Serverless 會在 `AWS/Usage` 命名空間中發佈下列服務配額用量指標。


****  

| 指標 | Description | 
| --- | --- | 
| `ResourceCount`  | 您帳戶上執行的指定資源總數。資源是由與指標相關聯的[維度](#usage-metrics-dimensions)所定義。 | 

## EMR Serverless 服務配額用量指標的維度
<a name="usage-metrics-dimensions"></a>

您可以使用下列維度來精簡 EMR Serverless 發佈的用量指標。


****  

| 維度 | Value | Description | 
| --- | --- | --- | 
|  `Service`  |  EMR Serverless  |  AWS 服務 包含 資源的 名稱。 | 
|  `Type`  |  資源  | EMR Serverless 正在報告的實體類型。 | 
|  `Resource`  |  vCPU  | EMR Serverless 正在追蹤的資源類型。 | 
|  `Class`  |  無  | EMR Serverless 正在追蹤的資源類別。 | 