

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

# 使用 Amazon CloudWatch 指標監控 AWS Glue
<a name="monitoring-awsglue-with-cloudwatch-metrics"></a>

您可以使用 AWS Glue 任務分析器來分析及監控 AWS Glue 操作。它會收集來自 AWS Glue 任務的原始資料，將這些資料處理成可讀取且幾近即時的指標並存放於 Amazon CloudWatch。系統會將這些統計資料保留於 CloudWatch 中並加以彙整，以便您存取歷史資訊，讓您更深入掌握應用程式的執行情況。

**注意**  
 啟用任務指標並建立 CloudWatch 自訂指標時，您可能會產生額外費用。如需詳細資訊，請參閱 [Amazon CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing/)。

## AWS Glue 指標概觀
<a name="metrics-overview"></a>

當您與 AWS Glue 互動時，它會傳送指標至 CloudWatch。您可使用 AWS Glue 主控台 (偏好的方法)、CloudWatch 主控台儀表板或 AWS Command Line Interface (AWS CLI) 中檢視這些指標。

**使用 AWS Glue 主控台儀表板檢視指標**

您能檢視任務指標的摘要或詳細圖表，或是任務執行的詳細圖表。

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 開啟 AWS Glue 主控台。

1. 在導覽窗格中，選擇**任務執行監控**。

1. 在**任務執行**中，選擇**動作**以停止目前正在執行的任務、檢視任務或倒轉任務書籤。

1. 選取任務，然後選擇**檢視執行詳細資訊**，以檢視有關任務執行的其他資訊。

**使用 CloudWatch 主控台儀表板檢視指標**

指標會先依服務命名空間分組，再依各命名空間內不同的維度組合分類。

1. 在 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中，選擇**指標**。

1. 選擇 **Glue (Glue)** 命名空間。

**使用 檢視指標 AWS CLI**
+ 在命令提示中，使用下列命令。

  ```
  1. aws cloudwatch list-metrics --namespace Glue
  ```

AWS Glue 每 30 秒就會向 CloudWatch 回報指標，且 CloudWatch 指標儀表板也設定成每分鐘顯示一次指標。AWS Glue 指標表示先前回報數值中的差異值。適當時，指標儀表板將會彙總 (加總) 30 秒的值，以取得最後完整一分鐘的值。

### AWS Glue Spark 任務的指標行為
<a name="metrics-overview-spark"></a>

 當指令碼中的 `GlueContext` 進行初始化時，系統便已啟用 AWS Glue 指標。通常，唯有在 Apache Spark 任務快結束時，系統才會更新指標。這些指標代表目前所有完成的 Spark 任務彙總值。

但是，AWS Glue 傳遞至 CloudWatch 的 Spark 指標通常是絕對值，可代表這些指標在回報時的目前狀態。AWS Glue 每 30 秒就會向 CloudWatch 回報這些指標，且指標儀表板通常會顯示過去 1 分鐘內收到的資料點平均值。

AWS Glue 指標名稱皆有以下其中一個類型的前綴：
+ `glue.driver.` – 若是以此字首為名稱開頭，即代表該指標屬於 Spark 驅動程式中所有執行器的彙總 AWS Glue 指標，或是對應至 Spark 驅動程式的 Spark 指標。
+ `glue.`*executorId*`.` – *executorId* 是特定 Spark 執行器的數量。它對應至日誌中的執行器。
+ `glue.ALL.` – 名稱開頭為此字首的指標即是所有 Spark 執行器的彙總值。

## AWS Glue 指標
<a name="awsglue-metrics"></a>

AWS Glue 設定檔，並每 30 秒將下列指標傳送至 CloudWatch，指標 AWS Glue 儀表板每分鐘報告一次：


| 指標 | Description | 
| --- | --- | 
| `glue.driver.aggregate.bytesRead` | 由所有執行器中執行的所有已完成 Spark 任務，從所有資料來源讀取的位元組數。<br />有效維度： `JobName`( AWS Glue 任務的名稱）、 `JobRunId`(JobRun ID 或 `ALL`) 和 `Type`（計數）。<br />有效的統計數字：總和。此指標是來自上次報告值的差異值，因此在 AWS Glue 指標儀表板上，SUM 統計資料會用於彙總。<br />單位：位元組<br />可用於監控：+ 讀取位元組數。<br />+ 任務進度。<br />+ JDBC 資料來源。<br />+ 任務書籤問題。<br />+ 任務執行間的變異。<br />此指標的使用方式與 `glue.ALL.s3.filesystem.read_bytes` 指標相同，差別在於此指標會在 Spark 任務結束時更新並擷取非 S3 資料來源。 | 
| `glue.driver.aggregate.elapsedTime` | ETL 經過時間 (以毫秒為單位) (不包括任務啟動程序時間)。<br />有效維度： `JobName`( AWS Glue 任務的名稱）、 `JobRunId`(JobRun ID 或 `ALL`) 和 `Type`（計數）。<br />有效的統計數字：總和。此指標是來自上次報告值的差異值，因此在 AWS Glue 指標儀表板上，SUM 統計資料會用於彙總。<br />單位：毫秒<br />可用於判斷任務執行平均所需的時間。<br />使用資料的一些方法：+ 設定落後者的警示。<br />+ 測量任務執行間的變異。 | 
| `glue.driver.aggregate.numCompletedStages` | 任務中已完成階段的數量。<br />有效維度： `JobName`( AWS Glue 任務的名稱）、 `JobRunId`(JobRun ID 或 `ALL`) 和 `Type`（計數）。<br />有效的統計數字：總和。此指標是來自上次報告值的差異值，因此在 AWS Glue 指標儀表板上，SUM 統計資料會用於彙總。<br />單位：計數<br />可用於監控：+ 任務進度。<br />+ 任務執行的每個階段時間表 (與其他指標相關)。<br />使用資料的一些方法：+ 識別任務執行過程中要求嚴苛的階段。<br />+ 針對任務執行中的相關尖峰 (需求階段) 設定警示。 | 
| `glue.driver.aggregate.numCompletedTasks` | 任務中已完成任務的數目。<br />有效維度： `JobName`( AWS Glue 任務的名稱）、 `JobRunId`(JobRun ID 或 `ALL`) 和 `Type`（計數）。<br />有效的統計數字：總和。此指標是來自上次報告值的差異值，因此在 AWS Glue 指標儀表板上，SUM 統計資料會用於彙總。<br />單位：計數<br />可用於監控：+ 任務進度。<br />+ 階段內的平行性。 | 
| `glue.driver.aggregate.numFailedTasks` | 失敗的任務數量。<br />有效維度： `JobName`( AWS Glue 任務的名稱）、 `JobRunId`(JobRun ID 或 `ALL`) 和 `Type`（計數）。<br />有效的統計數字：總和。此指標是來自上次報告值的差異值，因此在 AWS Glue 指標儀表板上，SUM 統計資料會用於彙總。<br />單位：計數<br />可用於監控：+ 導致任務作業失敗的資料異常。<br />+ 造成任務作業失敗的叢集異常。<br />+ 導致任務作業失敗的指令碼異常。<br />這些資料可用來設定警示，以防止增加失敗，這些失敗可能會提出資料、叢集或指令碼的異常情況。 | 
| `glue.driver.aggregate.numKilledTasks` | 終止的任務數量。<br />有效維度： `JobName`( AWS Glue 任務的名稱）、 `JobRunId`(JobRun ID 或 `ALL`) 和 `Type`（計數）。<br />有效的統計數字：總和。此指標是來自上次報告值的差異值，因此在 AWS Glue 指標儀表板上，SUM 統計資料會用於彙總。<br />單位：計數<br />可用於監控：+ 導致終止任務的異常資料偏斜例外狀況 (OOM)。<br />+ 導致終止任務的例外狀況 (OOM) 的指令碼異常情況。<br />使用資料的一些方法：+ 對於指出資料異常的失敗增加設定警示。<br />+ 對於指出叢集異常的失敗增加設定警示。<br />+ 對於指出指令碼異常的失敗增加設定警示。 | 
| `glue.driver.aggregate.recordsRead` | 由所有執行器中執行的所有已完成 Spark 任務，從所有資料來源讀取的記錄數。<br />有效維度： `JobName`( AWS Glue 任務的名稱）、 `JobRunId`(JobRun ID 或 `ALL`) 和 `Type`（計數）。<br />有效的統計數字：總和。此指標是來自上次報告值的差異值，因此在 AWS Glue 指標儀表板上，SUM 統計資料會用於彙總。<br />單位：計數<br />可用於監控：+ 記錄讀取。<br />+ 任務進度。<br />+ JDBC 資料來源。<br />+ 任務書籤問題。<br />+ 任務執行中隨著天數的偏斜。<br />此指標的使用方式類似於 `glue.ALL.s3.filesystem.read_bytes` 指標，差別在於此指標會在 Spark 任務結束時更新。 | 
| `glue.driver.aggregate.shuffleBytesWritten` | 自上一個報告以來，所有執行器寫入隨機播放資料的位元組數 （由 AWS Glue 指標儀表板彙總為上一分鐘為此目的寫入的位元組數）。<br />有效維度： `JobName`( AWS Glue 任務的名稱）、 `JobRunId`(JobRun ID 或 `ALL`) 和 `Type`（計數）。<br />有效的統計數字：總和。此指標是來自上次報告值的差異值，因此在 AWS Glue 指標儀表板上，SUM 統計資料會用於彙總。<br />單位：位元組<br />可用於監視：任務中的資料隨機播放 (大型聯結、GroupBy、重新分割、聯合)。<br />使用資料的一些方法：+ 在進一步處理之前，重新分割或解壓縮大型輸入檔案。<br />+ 更均勻地重新分割資料，以避免熱鍵。<br />+ 在聯結或 GroupBy 操作之前預先篩選資料。 | 
| `glue.driver.aggregate.shuffleLocalBytesRead` | 自上一個報告以來，所有執行器讀取以在它們之間隨機播放資料的位元組數 （由 AWS Glue 指標儀表板彙總為上一分鐘為此目的讀取的位元組數）。<br />有效維度： `JobName`( AWS Glue 任務的名稱）、 `JobRunId`(JobRun ID 或 `ALL`) 和 `Type`（計數）。<br />有效的統計數字：總和。此指標是來自上次報告值的差異值，因此在 AWS Glue 指標儀表板上，SUM 統計資料會用於彙總。<br />單位：位元組<br />可用於監視：任務中的資料隨機播放 (大型聯結、GroupBy、重新分割、聯合)。<br />使用資料的一些方法：+ 在進一步處理之前，重新分割或解壓縮大型輸入檔案。<br />+ 使用熱鍵更均勻地重新分割資料。<br />+ 在聯結或 GroupBy 操作之前預先篩選資料。 | 
| `glue.driver.BlockManager.disk.diskSpaceUsed_MB` | 在所有執行器中使用的 MB 磁碟空間數目。<br />有效維度： `JobName`( AWS Glue 任務的名稱）、 `JobRunId`(JobRun ID 或 `ALL`) 和 `Type`（規格）。<br />有效的統計數字：平均。這是 Spark 指標，報告為絕對值。<br />單位：MB<br />可用於監控：+ 用於代表快取 RDD 分割區的區塊的磁碟空間。<br />+ 用於表示中間隨機輸出的區塊的磁碟空間。<br />+ 用於代表廣播的區塊的磁碟空間。<br />使用資料的一些方法：+ 識別由於磁碟使用量增加而造成的任務失敗。<br />+ 識別導致溢出或隨機播放的大型分割區。<br />+ 增加佈建的 DPU 容量以修正這些問題。 | 
| `glue.driver.ExecutorAllocationManager.executors.numberAllExecutors` | 目前正在執行中任務執行器的數量。<br />有效維度： `JobName`( AWS Glue 任務的名稱）、 `JobRunId`(JobRun ID 或 `ALL`) 和 `Type`（規格）。<br />有效的統計數字：平均。這是 Spark 指標，報告為絕對值。<br />單位：計數<br />可用於監控：+ 任務活動。<br />+ 跨越執行器 (只有幾個執行器執行中)<br />+ 目前執行器層級的平行處理原則。<br />使用資料的一些方法：+ 如果叢集未充分利用，事先重新分割或解壓縮大型輸入檔案。<br />+ 識別由於落後案例造成的階段或任務執行延遲。<br />+ • 與 numberMaxNeededExecutors 進行比較，了解積壓項目以佈建更多 DPU。 | 
| `glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors` | 滿足目前負載所需的最大值 (主動執行中和擱置中) 任務執行器數目。<br />有效維度： `JobName`( AWS Glue 任務的名稱）、 `JobRunId`(JobRun ID 或 `ALL`) 和 `Type`（規格）。<br />有效的統計數字：上限。這是 Spark 指標，報告為絕對值。<br />單位：計數<br />可用於監控：+ 任務活動。<br />+ 由於 DPU 容量或終止/失敗的執行器而無法使用的執行器，目前執行器層級並行性和待處理任務的積存尚未排程。<br />使用資料的一些方法：+ 識別排程佇列的擱置/積存。<br />+ 識別由於落後案例造成的階段或任務執行延遲。<br />+ 與 numberAllExecutors 進行比較，了解積壓項目以佈建更多 DPU。<br />+ 增加佈建的 DPU 容量，以修正擱置的執行器待處理項目。 | 
| `glue.driver.jvm.heap.usage`<br />`glue.`*executorId*`.jvm.heap.usage`<br />`glue.ALL.jvm.heap.usage` | 此驅動程式之 JVM 堆疊所使用的記憶體佔比 (比例：0-1)、由 executorId 所辨識的執行器，或所有執行器。<br />有效維度： `JobName`( AWS Glue 任務的名稱）、 `JobRunId`(JobRun ID 或 `ALL`) 和 `Type`（規格）。<br />有效的統計數字：平均。這是 Spark 指標，報告為絕對值。<br />單位：百分比<br />可用於監控：+ 使用 `glue.driver.jvm.heap.usage` 的驅動程式記憶體不足情況 (OOM)。<br />+ 使用 `glue.ALL.jvm.heap.usage` 的執行器記憶體不足情況 (OOM)。<br />使用資料的一些方法：+ 識別消耗記憶體的執行器 ID 和階段。<br />+ 識別落後的執行器 ID 和階段。<br />+ 識別驅動程式記憶體不足情況 (OOM)。<br />+ 識別執行器記憶體不足條件 (OOM) 並獲取相應的執行器 ID，以便能夠從執行器日誌中取得堆疊追蹤。<br />+ 識別可能導致資料偏差或記憶體不足狀況 (OOM) 的檔案或分割區。 | 
| `glue.driver.jvm.heap.used`<br />`glue.`*executorId*`.jvm.heap.used`<br />`glue.ALL.jvm.heap.used` | JVM 堆積針對驅動程式、由 *executorId* 識別的執行器或所有執行器，所使用的記憶體位元組數目。<br />有效維度： `JobName`( AWS Glue 任務的名稱）、 `JobRunId`(JobRun ID 或 `ALL`) 和 `Type`（規格）。<br />有效的統計數字：平均。這是 Spark 指標，報告為絕對值。<br />單位：位元組<br />可用於監控：+ 驅動程式記憶體不足情況 (OOM)。<br />+ 執行器記憶體不足情況 (OOM)。<br />使用資料的一些方法：+ 識別消耗記憶體的執行器 ID 和階段。<br />+ 識別落後的執行器 ID 和階段。<br />+ 識別驅動程式記憶體不足情況 (OOM)。<br />+ 識別執行器記憶體不足條件 (OOM) 並獲取相應的執行器 ID，以便能夠從執行器日誌中取得堆疊追蹤。<br />+ 識別可能導致資料偏差或記憶體不足狀況 (OOM) 的檔案或分割區。 | 
| `glue.driver.s3.filesystem.read_bytes`<br />`glue.`*executorId*`.s3.filesystem.read_bytes`<br />`glue.ALL.s3.filesystem.read_bytes` | 自上次報告以來，驅動程式、*executorId* 識別的執行器或 ALL 執行器從 Amazon S3 讀取的位元組數 （由 AWS Glue 指標儀表板彙總為上一分鐘讀取的位元組數）。<br />有效維度：`JobName`、`JobRunId` 以及 `Type` (計量)。<br />有效的統計數字：總和。此指標是來自上次報告值的差異值，因此在 AWS Glue 指標儀表板上，SUM 統計資料會用於彙總。 AWS Glue 指標儀表板曲線下的區域可用來視覺化比較兩個不同任務執行讀取的位元組。<br />單位：位元組。<br />可用於監控：+ ETL 資料移動。<br />+ 任務進度。<br />+ 任務書籤問題 (已處理、重新處理和略過的資料)。<br />+ 將讀取率和外部資料來源的擷取率相比較。<br />+ 任務執行間的變異。<br />產生的資料可用於：+ DPU 容量規劃。<br />+ 針對任務執行和任務階段的資料讀取中的大量尖峰或下降設定警示。 | 
| `glue.driver.s3.filesystem.write_bytes`<br />`glue.`*executorId*`.s3.filesystem.write_bytes`<br />`glue.ALL.s3.filesystem.write_bytes` | 自上次報告以來，驅動程式、*executorId* 識別的執行器或 ALL 執行器寫入 Amazon S3 的位元組數 （由 AWS Glue 指標儀表板彙總為前一分鐘內寫入的位元組數）。<br />有效維度：`JobName`、`JobRunId` 以及 `Type` (計量)。<br />有效的統計數字：總和。此指標是來自上次報告值的差異值，因此在 AWS Glue 指標儀表板上，SUM 統計資料會用於彙總。 AWS Glue 指標儀表板曲線下的區域可用來視覺化比較兩個不同任務執行所寫入的位元組。<br />單位：位元組<br />可用於監控：+ ETL 資料移動。<br />+ 任務進度。<br />+ 任務書籤問題 (已處理、重新處理和略過的資料)。<br />+ 將讀取率和外部資料來源的擷取率相比較。<br />+ 任務執行間的變異。<br />使用資料的一些方法：+ DPU 容量規劃。<br />+ 針對任務執行和任務階段的資料讀取中的大量尖峰或下降設定警示。 | 
| `glue.driver.streaming.numRecords` | 在微批次中接收的記錄數目。此指標僅適用於 2.0 版及更高 AWS Glue 版本的 AWS Glue 串流任務。<br />有效維度： `JobName`( AWS Glue 任務的名稱）、 `JobRunId`(JobRun ID 或 `ALL`) 和 `Type`（計數）。<br />有效的統計數字：總和、上限、下限、平均、百分位數<br />單位：計數<br />可用於監控：+ 記錄讀取。<br />+ 任務進度。 | 
| `glue.driver.streaming.batchProcessingTimeInMs` | 處理批次所需的時間 (以毫秒為單位)。此指標僅適用於 2.0 版及更高 AWS Glue 版本的 AWS Glue 串流任務。<br />有效維度： `JobName`( AWS Glue 任務的名稱）、 `JobRunId`(JobRun ID 或 `ALL`) 和 `Type`（計數）。<br />有效的統計數字：總和、上限、下限、平均、百分位數<br />單位：計數<br />可用於監控：+ 任務進度。<br />+ 指令碼效能。 | 
| `glue.driver.system.cpuSystemLoad`<br />`glue.`*executorId*`.system.cpuSystemLoad`<br />`glue.ALL.system.cpuSystemLoad` | 驅動程式使用的 CPU 系統負載佔比 (比例：0-1)、由 *executorId* 所辨識的執行器，或所有執行器。<br />有效維度： `JobName`( AWS Glue 任務的名稱）、 `JobRunId`(JobRun ID 或 `ALL`) 和 `Type`（規格）。<br />有效的統計數字：平均。此指標會報告為絕對值。<br />單位：百分比<br />可用於監控：+ 驅動程式 CPU 負載。<br />+ 執行器 CPU 負載。<br />+ 偵測任務中的 CPU 密集型或 IO 密集型執行器或階段。<br />使用資料的一些方法：+ DPU 容量規劃以及 IO 指標 (位元組讀取/隨機位元組、工作平行程度) 以及所需執行器指標上限的數目。<br />+ 識別 CPU /IO 密集型比率。如此可針對具有較低 CPU 使用率的分割表資料集，對長時間執行的任務進行重新分割並增加佈建容量。 | 

## AWS Glue 指標的維度
<a name="awsglue-metricdimensions"></a>

AWS Glue 指標使用 AWS Glue 命名空間，並提供下列維度的指標：


| 維度 | Description | 
| --- | --- | 
| `JobName` | 此維度會篩選特定任務之所有 AWS Glue 任務執行的指標。 | 
| `JobRunId` | 此維度會依 JobRun ID 或 篩選特定 AWS Glue 任務執行的指標`ALL`。 | 
| `Type` | 此維度會依 `count` (彙總數字) 或 `gauge` (某個時間點的值) 篩選指標。 | 

如需更多資訊，請參閱 [Amazon CloudWatch 使用者指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)。