監控任務 - Amazon EMR

監控任務

使用 Amazon CloudWatch Events 監控作業

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

您可以使用事件來追蹤在虛擬叢集上執行之作業的活動和運作狀態。也可以使用 Amazon CloudWatch Events 件來定義當作業執行產生符合您指定模式的事件時要採取的動作。事件對於在作業執行的生命週期中監控特定事件非常有用。例如,可以監控作業執行狀態從 submitted 變更為 running 的時間。如需 CloudWatch Events 的詳細資訊,請參閱 Amazon CloudWatch Events 使用者指南

下表會列出 Amazon EMR on EKS 事件,以及該事件的狀態或狀態變更、該事件嚴重性以及事件訊息。每個事件表示做為自動傳送到事件串流的 JSON 物件。JSON 物件包含有關該事件進一步的詳細資訊。當您使用 CloudWatch Events 為事件處理設定規則時,JSON 物件尤其重要,因為規則要試圖符合 JSON 物件中的模式。如需詳細資訊,請參閱 Amazon CloudWatch Events 使用者指南中的事件與事件模式以及 Amazon 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

可以使用 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 主題

針對 SUBMITTEDRUNNINGCANCELLEDFAILEDCOMPLETED 狀態變更,Amazon EMR on EKS 會產生 "detail-type:" "EMR Job Run State Change" CloudWatch Events 事件。

範例:設定調用 Lambda 的規則

使用下列步驟設定 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

使用 CloudWatch Events,可監控已在具有重試政策的作業中建立的驅動程式 Pod。如需詳細資訊,請參閱本指南中的 使用重試政策監控作業