【问题标题】:Cloudwatch Insights grab lambda latest invocation messageCloudwatch Insights 抓取 lambda 最新调用消息
【发布时间】:2021-06-15 18:23:29
【问题描述】:

我的 lambda cron 作业功能很少。我想每天运行一次另一个 lambda 函数并获取每个 lambda 的最新日志。根据这个日志,我会生成一个简单的报告并通知 slack。

使用 boto3 在 python 中编写的 lambda 函数。

报告应如下所示:

Lambda-1 - ERROR - LOG
Lambda-2 - Succeeded
Lambda-3 - Succeeded (warn) - warn_message

目前,我在从 cloudwatch 洞察中获取最新的 lambda 日志和状态时遇到问题。

我玩过这个查询:

fields @timestamp, @message
| sort @timestamp desc 
| filter level IN ["warn","info","error"] |
 limit 1

此查询返回具有此日志级别的最新日志。但是,这不是最新的 lambda 调用。因此,可能会产生一些虚假的日志。

我的问题是:

  1. 是否有任何 cloudwatch 洞察查询来获取最新的 lambda 调用状态和日志?
  2. 有没有更简单的方法来生成所需的报告?

提前致谢。

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-cloudwatch


    【解决方案1】:

    当您说latest 时,我假设您的意思是当您的报告生成 lambda 正在运行时。如果是这样,如果在提到的时间戳期间有日志,您可以根据时间戳过滤日志。

    StartQuery

    就 lambda 的 fail status 而言,您可以简单地进行查询,甚至可以修改现有的查询,如果您在应用程序中记录这些异常或特定错误消息,您只需在其中查找异常。

    类似

    filter @message like /(?i)(Exception|error|fail)/| fields @timestamp, @message
    | filter millis > 1546300800  # Tue Jan 01 2019 00:00:00 GMT+0000
         and millis < 1546309800  # Tue Jan 01 2019 02:30:00 GMT+0000
    
    

    您的 python lambda 可以构建和触发此查询,并根据结果编译结果。

    它还可以通过过滤logstream 名称来进一步自定义

    Supported Logs and Discovered Fields

    【讨论】:

    • 假设我有每 5 分钟运行一次的 cron 作业。这个查询会给我大量的日志。我只需要最新的运行意味着最新的 lambda 日志。
    • @AmitBaranes 最后的手段是从相应的 lambda cloudwatch 日志组中获取最新的日志流名称,并在上述查询中使用 @logStream 名称过滤器,并在需要排序时删除基于时间戳的过滤器。 DescribeLogStreams
    • 你能分享一个有效的 cloudwatch 查询吗?
    • fields @log, @logStream, @message | filter @logStream like /aae27ee7aa1148dca48c2ed987cc4ad6/ 如果您在cloudwatch 日志中转到控制台并浏览到任何蒸汽,在左侧选择View in Logs Insights 的操作下方,它将带您进入内部在那里建立的查询。
    猜你喜欢
    • 2021-04-20
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    相关资源
    最近更新 更多