使用 “日志见解” 分析 CloudWatch 日志 - Managed Service for Apache Flink
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon Managed Service for Apache Flink 之前称为 Amazon Kinesis Data Analytics for Apache Flink。

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

使用 “日志见解” 分析 CloudWatch 日志

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

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

有关开始使用 L CloudWatch ogs Insights 的信息,请参阅使用 Logs Insights 分析 CloudWatch 日志数据

运行示例查询

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

先决条件

  • 在 Logs 中设置的现有日志组和 CloudWatch 日志流。

  • 存储在日志中的现有 CloudWatch 日志。

如果您使用诸如 Amazon CloudTrail Amazon Route 53 或 Amazon VPC 之类的服务,则可能已经将这些服务的日志设置为进入 CloudWatch 日志。有关向日志发送 CloudWatch 日志的更多信息,请参阅 CloudWatch 日志入门

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

运行 L CloudWatch ogs Insights 示例查询
  1. 打开 CloudWatch 控制台,网址为 https://console.aws.amazon.com/cloudwatch/

  2. 在导航窗格中,选择 Insights

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

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

  4. 选择运行查询

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

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

有关如何运行和修改 CloudWatch Logs Insights 查询的更多信息,请参阅运行和修改示例查询

示例查询

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

注意

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

分析操作:任务分配

以下 L CloudWatch ogs Insights 查询返回 Apache Flink Job Manager 在任务管理器之间分配的任务数。您需要设置查询的时间范围以与某个任务运行匹配,以便查询不会返回以前任务的任务。有关并行度的更多信息,请参阅扩展

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 文档中的设置并行度:运算符

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

有关任务计划的更多信息,请参阅 Apache Flink 文档中的任务和计划

分析操作:并行度变化

以下 CloudWatch Logs Insights 查询返回应用程序并行度的变化(例如,由于自动缩放)。该查询还会返回对应用程序并行度的手动更改。有关自动扩展的更多信息,请参阅自动扩缩

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

分析错误:访问被拒绝

以下 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

分析错误:未找到源或接收器

以下 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

分析错误:与应用程序任务相关的故障

以下 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