

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

# 监控任务
<a name="monitoring"></a>

您可以使用 Amazon E CloudWatch vents 来跟踪在 EKS 虚拟集群上的 Amazon EMR 上运行的任务。您可以使用事件来跟踪在虚拟集群上运行的任务活动及其运行状况。以下主题展示了如何有效配置监视以维护资源运行状况。

**Topics**
+ [

## 通过 Amazon Events CloudWatch 监控作业
](#monitoring-cloudwatch-events)
+ [

## 通过事件在 EKS 上自动执行 Amazon EMR CloudWatch
](#monitoring-automate-emr-on-eks)
+ [

## 示例：设置调用 Lambda 的规则
](#monitoring-example-rule)
+ [

## 使用 Amazon CloudWatch Events 使用重试策略监控作业的驱动程序窗格
](#monitor-jobs-with-retry-policies)

## 通过 Amazon Events CloudWatch 监控作业
<a name="monitoring-cloudwatch-events"></a>

当任务运行状态发生变化时，Amazon EMR on EKS 会发出事件。每个事件都提供事件发生日期及时间等信息，以及有关事件的更多详情，如受影响的虚拟集群 ID 和任务运行 ID。

您可以使用事件来跟踪在虚拟集群上运行的任务活动及其运行状况。您还可以使用 Amazon CloudWatch Events 来定义在任务运行生成与您指定的模式相匹配的事件时要采取的操作。事件对于在任务运行的生命周期中监控特定事件非常有用。例如，您可以监控任务运行的状态何时从 `submitted` 更改为 `running`。有关 CloudWatch 活动的更多信息，请参阅 *[Amazon EventBridge 用户指南](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html)*。

下表列出了 Amazon EMR on EKS 事件，以及事件指示的状态或状态更改、事件的严重性和事件消息。每个事件都以 JSON 对象表示，后者会自动发送到事件流。JSON 对象包含有关事件的更多详情。当您使用事件设置事件处理规则时，JSON 对象尤其重要，因为规则 CloudWatch 会寻求匹配 JSON 对象中的模式。有关更多信息，请参阅[亚马逊 EventBridge 用户指南中的亚马逊 EventBridge 事件模式](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)*[和 EKS 事件上的 Ama](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html#emr_event_type)* zon EMR。


**任务运行状态更改事件**  

| 州 | 严重性 | 消息 | 
| --- | --- | --- | 
| SUBMITTED | INFO | Job Run JobRunId (JobRunName) 已VirtualClusterId在 Time UTC 成功提交到虚拟集群。 | 
| 正在运行 | INFO | 虚拟集群中的 Job Run JobRunId (JobRunName) VirtualClusterId 开始在运行Time。 | 
| COMPLETED | INFO | 虚拟群集中的 Job Run jobRunId (JobRunName) VirtualClusterId 已于完成Time。Job Run 开始运行Time并花了Num几分钟才完成。 | 
| CANCELLED | 警告 | 在的虚拟集群VirtualClusterId中，Job Run JobRunId (JobRunName) 的取消请求已成功，任务运行现已取消。Time | 
| FAILED | ERROR | 虚拟群集中的 Job Run JobRunId (JobRunName) VirtualClusterId 失败了Time。 | 

## 通过事件在 EKS 上自动执行 Amazon EMR CloudWatch
<a name="monitoring-automate-emr-on-eks"></a>

您可以使用 Amazon CloudWatch Events 自动 AWS 提供服务，以响应系统事件，例如应用程序可用性问题或资源更改。来自 AWS 服务的事件几乎实时地传递到 CloudWatch 活动。您可以编写简单规则来指示您关注的事件，并指示要在事件匹配规则时执行的自动化操作。可自动触发的操作包括：
+ 调用函数 AWS Lambda 
+ 调用 Amazon EC2 Run Command
+ 将事件中继到 Amazon Kinesis Data Streams
+ 激活 AWS Step Functions 状态机
+ 通知 Amazon Simple Notification Service (SNS) 主题或 (SQS) Amazon Simple Queue Service 队列

在 EKS 上使用 Amazon EMR CloudWatch 事件的一些示例包括：
+ 当任务运行成功时激活 Lambda 函数
+ 当任务运行失败时通知 Amazon SNS 主题

CloudWatch “” `detail-type:``EMR Job Run State Change`” 的事件由 Amazon EMR 在 EKS 上生成，用于`SUBMITTED`、`RUNNING``CANCELLED`、`FAILED`和`COMPLETED`状态变更。

## 示例：设置调用 Lambda 的规则
<a name="monitoring-example-rule"></a>

使用以下步骤设置 CloudWatch 事件规则，该规则在出现 “EMR Job 运行状态更改” 事件时调用 Lambda。

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

将您拥有的 Lambda 函数添加为新目标，并按如下方式授予 CloudWatch 事件调用 Lambda 函数的权限。请将 *123456789012* 替换为您的账户 ID。

```
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 使用重试策略监控作业的驱动程序窗格
<a name="monitor-jobs-with-retry-policies"></a>

使用 CloudWatch 事件，您可以监控在具有重试策略的作业中创建的驱动程序 Pod。有关更多信息，请参阅本指南中的[使用重试策略监控作业](jobruns-using-retry-policies.md#monitoring-retry)。