使用 CloudWatch Logs Insights 分析日志 - Amazon Kinesis Data Analytics
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 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 中存储了现有的日志

如果使用 AWS CloudTrail、Amazon Route 53 或 Amazon VPC 等服务,您可能已从这些服务中设置日志以发送到 CloudWatch Logs。有关将日志发送到 CloudWatch Logs 的更多信息,请参阅 CloudWatch Logs 入门

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

运行 CloudWatch Logs Insights 示例查询

  1. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

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

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

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

  4. 选择 Run query (运行查询)

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

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

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

示例查询

本节包含用于分析 Kinesis Data Analytics 应用程序日志的 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 查询返回对应用程序并行度的更改(例如,由于自动扩展)。该查询还会返回对应用程序并行度的手动更改。有关自动扩展的更多信息,请参阅自动扩展

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:kinesisanalytics:us-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:kinesisanalytics:us-west-2:012345678901:application\/YourApplication/ | filter @message like /ResourceNotFoundException/ | sort @timestamp desc

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

以下 CloudWatch Logs Insights 查询返回应用程序的任务相关故障日志。如果应用程序的状态从 RUNNING 转变为 FAILED,则会生成这些日志。

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