Amazon Managed Service for Apache Flink(Amazon MSF)之前称为 Amazon Kinesis Data Analytics for Apache Flink。
使用 CloudWatch Logs Insights 分析日志
在按照上一节中所述将 CloudWatch 日志记录选项添加到应用程序后,您可以使用 CloudWatch Logs Insights 查询日志流以查找特定的事件或错误。
您可以使用 CloudWatch Logs Insights,通过交互方式搜索并分析 CloudWatch Logs 中的日志数据。
有关 CloudWatch Logs Insights 入门的更多信息,请参阅使用 CloudWatch Logs Insights 分析日志数据。
运行示例查询
本节介绍了如何运行示例 CloudWatch Logs Insights 查询。
先决条件
-
在 CloudWatch Logs 中设置现有的日志组和日志流。
-
现有日志存储在 CloudWatch Logs 中。
如果您使用服务(例如Amazon CloudTrail、Amazon Route 53 或 Amazon VPC),您可能已将日志设置为从这些服务转到 CloudWatch Logs。有关将日志发送到 CloudWatch Logs 的更多信息,请参阅 CloudWatch Logs 入门。
CloudWatch Logs Insights 中的查询返回一组来自日志事件的字段,或返回对日志事件执行的数学聚合或其他运算的结果。本节说明了一个返回一组日志事件的查询。
运行 CloudWatch Logs Insights 示例查询
通过 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 控制台。
-
在导航窗格中,选择 Insights。
-
屏幕顶部附近的查询编辑器包含一个默认查询,它返回 20 个最近的日志事件。在查询编辑器上方,选择一个要查询的日志组。
当您选择日志组时,CloudWatch Logs Insights 会自动检测日志组数据中的字段,并将其显示在右侧窗格中的 Discovered fields(发现的字段)中。它还显示此日志组中的日志事件随时间变化的条形图。该条形图显示与您的查询和时间范围匹配的日志组中的事件分布情况,而不仅仅是表中显示的事件。
-
选择运行查询。
显示此查询的结果。在本示例中,结果是任何类型的最新 20 个日志事件。
-
要查看某个返回的日志事件的所有字段,请选择该日志事件左侧的箭头。
有关如何运行和修改 CloudWatch Logs Insights 查询的更多信息,请参阅运行和修改示例查询。
查看示例查询
本节包含用于分析 Managed Service for Apache Flink 应用程序日志的 CloudWatch Logs Insights 示例查询。这些查询搜索一些示例错误情况,并作为模板以编写查找其他错误情况的查询。
注意
将以下查询示例中的区域 (us-west-2)、账户 ID (012345678901) 和应用程序名称 (YourApplication) 替换为您的应用程序的区域和您的账户 ID。
分析操作:分配任务
以下 CloudWatch Logs Insights 查询返回 Apache Flink 任务管理器在任务管理器之间分配的任务数。您需要设置查询的时间范围以与某个任务运行匹配,以便查询不会返回以前任务的任务。有关并行度的更多信息,请参阅实施应用程序扩展。
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 查询返回对应用程序并行度的更改(例如,由于自动扩展)。该查询还会返回对应用程序并行度的手动更改。有关自动扩展的更多信息,请参阅在 Managed Service for Apache Flink 中使用自动扩展。
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 日志。如果找不到 Kinesis 源或接收器,ResourceNotFound 将记录结果。
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