

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

# 監控任務
<a name="monitoring"></a>

您可以使用 Amazon CloudWatch Events 來追蹤在 Amazon EMR on EKS 虛擬叢集上執行的任務。您可以使用事件來追蹤在虛擬叢集上執行之作業的活動和運作狀態。以下主題說明如何有效設定監控，以維護資源的運作狀態。

**Topics**
+ [

## 使用 Amazon CloudWatch Events 監控作業
](#monitoring-cloudwatch-events)
+ [

## 使用 CloudWatch Events 來自動化 Amazon EMR on EKS
](#monitoring-automate-emr-on-eks)
+ [

## 範例：設定調用 Lambda 的規則
](#monitoring-example-rule)
+ [

## 使用 Amazon CloudWatch Events 透過重試政策來監控作業的驅動程式 Pod
](#monitor-jobs-with-retry-policies)

## 使用 Amazon CloudWatch Events 監控作業
<a name="monitoring-cloudwatch-events"></a>

當作業執行狀態變更時，Amazon EMR on EKS 會發出事件。每個事件都會提供資訊，例如事件發生的日期和時間，以及有關事件的進一步詳細資訊，例如虛擬叢集 ID 和受影響的作業執行 ID。

您可以使用事件來追蹤在虛擬叢集上執行之作業的活動和運作狀態。也可以使用 Amazon CloudWatch Events 件來定義當作業執行產生符合您指定模式的事件時要採取的動作。事件對於在作業執行的生命週期中監控特定事件非常有用。例如，可以監控作業執行狀態從 `submitted` 變更為 `running` 的時間。如需 CloudWatch Events 的詳細資訊，請參閱《*[Amazon EventBridge 使用者指南](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html)*》。

下表會列出 Amazon EMR on EKS 事件，以及該事件的狀態或狀態變更、該事件嚴重性以及事件訊息。每個事件表示做為自動傳送到事件串流的 JSON 物件。JSON 物件包含有關該事件進一步的詳細資訊。當您使用 CloudWatch Events 為事件處理設定規則時，JSON 物件尤其重要，因為規則要試圖符合 JSON 物件中的模式。如需詳細資訊，請參閱《[Amazon EventBridge 使用者指南》中的 Amazon EventBridge 事件模式](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)*[和 Amazon EventBridge ](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html#emr_event_type)*EMR on EKS 事件。


**作業執行狀態變更事件**  

| State | 嚴重性 | 訊息 | 
| --- | --- | --- | 
| SUBMITTED | INFO | 作業執行 JobRunId (JobRunName) 已於 UTC 時間 Time 順利提交至虛擬叢集 VirtualClusterId。 | 
| RUNNING (執行中) | INFO | 虛擬叢集 VirtualClusterId 中的作業執行 JobRunId (JobRunName) 已於 Time 開始執行。 | 
| COMPLETED (已完成) | INFO | 虛擬叢集 VirtualClusterId 中的作業執行 jobRunId (JobRunName) 已於 Time 完成。作業執行於 Time 開始執行並花費 Num 分鐘完成。 | 
| CANCELLED (已取消) | WARN | 虛擬叢集 VirtualClusterId 中的作業執行 JobRunId (JobRunName) 的取消請求已於 Time 成功，且作業執行現已取消。 | 
| 失敗 | ERROR | 虛擬叢集 VirtualClusterId 中的作業執行 JobRunId (JobRunName) 已於 Time 失敗。 | 

## 使用 CloudWatch Events 來自動化 Amazon EMR on EKS
<a name="monitoring-automate-emr-on-eks"></a>

您可以使用 Amazon CloudWatch Events 自動化您的 AWS 服務，以回應系統事件，例如應用程式可用性問題或資源變更。來自 AWS 服務的事件會以近乎即時的方式交付至 CloudWatch Events。您可編寫簡單的規則，來指示您在意的事件，以及當事件符合規則時所要自動執行的動作。可以自動觸發的動作如下：
+ 叫用 AWS Lambda 函數
+ 調用 Amazon EC2 執行命令
+ 將事件轉傳至 Amazon Kinesis Data Streams
+ 啟用 AWS Step Functions 狀態機器
+ 通知 Amazon Simple Notification Service (SNS) 主題或 Amazon Simple Queue Service (SQS) 佇列

下列是 CloudWatch Events 與 Amazon EMR on EKS 搭配使用的部分範例：
+ 在作業執行成功時啟動 Lambda 函數
+ 在作業執行失敗時通知 Amazon SNS 主題

針對 `SUBMITTED`、`RUNNING`、`CANCELLED`、`FAILED` 和 `COMPLETED` 狀態變更，Amazon EMR on EKS 會產生 "`detail-type:`" "`EMR Job Run State Change`" CloudWatch Events 事件。

## 範例：設定調用 Lambda 的規則
<a name="monitoring-example-rule"></a>

使用下列步驟設定 CloudWatch Events 規則，該規則會在發生「EMR 作業執行狀態變更」事件時調用 Lambda。

```
aws events put-rule \
--name cwe-test \
--event-pattern '{"detail-type": ["EMR Job Run State Change"]}'
```

新增您擁有的 Lambda 函數作為新目標，並授 CloudWatch Events 叫用 Lambda 函數的許可，如下所示。使用您的帳戶 ID 取代 *123456789012*。

```
aws events put-targets \
--rule cwe-test \
--targets Id=1,Arn=arn:aws:lambda:us-east-1:123456789012:function:MyFunction
```

```
aws lambda add-permission \
--function-name MyFunction \
--statement-id MyId \
--action 'lambda:InvokeFunction' \
--principal events.amazonaws.com
```

**注意**  
無法撰寫依賴於通知事件的順序或存在情況的程式，因為它們可能會被移出序列或遺漏。盡可能發出事件。

## 使用 Amazon CloudWatch Events 透過重試政策來監控作業的驅動程式 Pod
<a name="monitor-jobs-with-retry-policies"></a>

使用 CloudWatch Events，可監控已在具有重試政策的作業中建立的驅動程式 Pod。如需詳細資訊，請參閱本指南中的 [使用重試政策監控作業](jobruns-using-retry-policies.md#monitoring-retry)。