

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

# 使用 “日志见解” 分析 CloudWatch 日志
<a name="cloudwatch-logs-reading"></a>

如上一节所述，向应用程序添加了 CloudWatch 日志记录选项后，您可以使用 Lo CloudWatch gs Insights 来查询日志流中的特定事件或错误。

CloudWatch Logs Insights 使您能够以交互方式搜索和分析日志中的 CloudWatch 日志数据。

有关开始使用 L CloudWatch ogs Insights 的信息，请参阅使用 Logs [Insights 分析 CloudWatch 日志数据](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html)。

## 运行示例查询
<a name="cloudwatch-logs-reading-run"></a>

本节介绍如何运行 L CloudWatch ogs Insights 查询示例。

**先决条件**
+ 在 Logs 中设置的现有日志组和 CloudWatch 日志流。
+ 存储在日志中的现有 CloudWatch 日志。

如果您使用诸如 AWS CloudTrail Amazon Route 53 或 Amazon VPC 之类的服务，则可能已经将这些服务的日志设置为进入 CloudWatch 日志。有关向日志发送 CloudWatch 日志的更多信息，请参阅[ CloudWatch 日志入门](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_GettingStarted.html)。

L CloudWatch ogs Insights 中的查询要么返回一组来自日志事件的字段，要么返回对日志事件执行的数学聚合或其他操作的结果。本节说明了一个返回一组日志事件的查询。

**运行 L CloudWatch ogs Insights 示例查询**

1. 打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航窗格中，选择 **Insights**。

   

1. 屏幕顶部附近的查询编辑器包含一个默认查询，它返回 20 个最近的日志事件。在查询编辑器上方，选择一个要查询的日志组。

   

   当您选择日志组时， CloudWatch Logs Insights 会自动检测日志组中数据中的字段，并将其显示在右侧窗格的**已发现字段**中。它还显示此日志组中的日志事件随时间变化的条形图。该条形图显示与您的查询和时间范围匹配的日志组中的事件分布情况，而不仅仅是表中显示的事件。

1. 选择**运行查询**。

   显示此查询的结果。在本示例中，结果是任何类型的最新 20 个日志事件。

1. 要查看某个返回的日志事件的所有字段，请选择该日志事件左侧的箭头。

有关如何运行和修改 CloudWatch Logs Insights 查询的更多信息，请参阅[运行和修改示例查询](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData_RunSampleQuery.html)。

## 查看示例查询
<a name="cloudwatch-logs-reading-examples"></a>

本节包含用于分析 Apache Flink 托管服务应用程序 CloudWatch 日志的 Logs Insights 示例查询。这些查询搜索一些示例错误情况，并作为模板以编写查找其他错误情况的查询。

**注意**  
将以下查询示例中的区域 (*us-west-2**012345678901*)、账户 ID (*YourApplication*) 和应用程序名称 () 替换为应用程序的区域和账户 ID。

**Topics**
+ [分析操作：分配任务](#cloudwatch-logs-reading-tm)
+ [分析操作：更改并行度](#cloudwatch-logs-reading-auto)
+ [分析错误：访问被拒绝](#cloudwatch-logs-reading-access)
+ [分析错误：找不到源或接收器](#cloudwatch-logs-reading-con)
+ [分析错误：应用程序的任务相关故障](#cloudwatch-logs-reading-apps)

### 分析操作：分配任务
<a name="cloudwatch-logs-reading-tm"></a>

以下 L CloudWatch ogs Insights 查询返回 Apache Flink Job Manager 在任务管理器之间分配的任务数。您需要设置查询的时间范围以与某个任务运行匹配，以便查询不会返回以前任务的任务。有关并行度的更多信息，请参阅[实施应用程序扩展](how-scaling.md)。

```
fields @timestamp, message
| filter message like /Deploying/
| parse message " to flink-taskmanager-*" as @tmid
| stats count(*) by @tmid
| sort @timestamp desc
| limit 2000
```

以下 CloudWatch Logs Insights 查询返回分配给每个任务管理器的子任务。子任务总数是每个任务的并行度的总和。任务并行度来自于操作符并行度，默认情况下，它与应用程序的并行度相同，除非您在代码中指定 `setParallelism` 以对其进行更改。有关设置运算符并行度的信息，请参阅 [Apache Flink 文档](https://nightlies.apache.org/flink/flink-docs-release-1.15/)中的[设置并行度：运算符](https://nightlies.apache.org/flink/flink-docs-release-1.15/dev/parallel.html#operator-level)。

```
fields @timestamp, @tmid, @subtask
| filter message like /Deploying/
| parse message "Deploying * to flink-taskmanager-*" as @subtask, @tmid
| sort @timestamp desc
| limit 2000
```

有关任务计划的更多信息，请参阅 [Apache Flink 文档](https://nightlies.apache.org/flink/flink-docs-release-1.15/)中的[任务和计划](https://nightlies.apache.org/flink/flink-docs-release-1.15/internals/job_scheduling.html)。

### 分析操作：更改并行度
<a name="cloudwatch-logs-reading-auto"></a>

以下 CloudWatch Logs Insights 查询返回应用程序并行度的变化（例如，由于自动缩放）。该查询还会返回对应用程序并行度的手动更改。有关自动扩展的更多信息，请参阅[在 Managed Service for Apache Flink 中使用自动扩展](how-scaling-auto.md)。

```
fields @timestamp, @parallelism
| filter message like /property: parallelism.default, /
| parse message "default, *" as @parallelism
| sort @timestamp asc
```

### 分析错误：访问被拒绝
<a name="cloudwatch-logs-reading-access"></a>

以下 CloudWatch Logs Insights 查询返回`Access Denied`日志。

```
fields @timestamp, @message, @messageType
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /AccessDenied/
| sort @timestamp desc
```

### 分析错误：找不到源或接收器
<a name="cloudwatch-logs-reading-con"></a>

以下 CloudWatch Logs Insights 查询返回`ResourceNotFound`日志。 `ResourceNotFound`如果找不到 Kinesis 源或接收器，则会记录结果。

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /ResourceNotFoundException/
| sort @timestamp desc
```

### 分析错误：应用程序的任务相关故障
<a name="cloudwatch-logs-reading-apps"></a>

以下 CloudWatch Logs Insights 查询返回应用程序与任务相关的失败日志。如果应用程序的状态从 `RUNNING` 转变为 `RESTARTING`，则会生成这些日志。

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /switched from RUNNING to RESTARTING/
| sort @timestamp desc
```

对于使用 Apache Flink 1.8.2 及更早版本的应用程序，与任务相关的故障将导致应用程序状态从`RUNNING`切换到`FAILED`。使用 Apache Flink 1.8.2 及更早版本时，请使用以下查询来搜索与应用程序任务相关的故障：

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /switched from RUNNING to FAILED/
| sort @timestamp desc
```