标签: aws-cloudwatch-log-insights

如何在 CloudWatch Insights 查询中获取额外的上下文行?

我通常运行一个查询

fields @timestamp, @message
| filter @message like /ERROR/
| sort @timestamp desc
| limit 20
Run Code Online (Sandbox Code Playgroud)

有没有办法在包含“错误”的消息周围获得额外的上下文行?类似于带有 grep 的 A、B 和 C 标志?

例子

例如,如果我有一个给定的日志,其中包含以下几行

DEBUG Line 1
DEBUG Line 2
ERROR message
DEBUG Line 3
DEBUG Line 4
Run Code Online (Sandbox Code Playgroud)

目前我得到以下结果

ERROR message
Run Code Online (Sandbox Code Playgroud)

但我想获得更多的上下文行,例如

DEBUG Line 2
ERROR message
DEBUG Line 3
Run Code Online (Sandbox Code Playgroud)

如果需要,可以选择获取更多上下文行。

amazon-web-services amazon-cloudwatch aws-cloudwatch-log-insights

36
推荐指数
2
解决办法
5136
查看次数

在 AWS Cloudwatch Logs Insights 上按时间戳查询过滤

我正在尝试使用 AWS Cloudwatch Logs 洞察力来搜索我们 lambda 函数的一些相当旧的日志。我正在AWS docs 上阅读本指南,但没有任何地方记录如何按时间戳过滤。我尝试了以下方法:

fields @timestamp, @message
| filter @timestamp > '2019-12-04T18:09:10.000+01:00'
| limit 200
| sort @timestamp desc
Run Code Online (Sandbox Code Playgroud)

但不起作用(返回 0 个结果)。

最初,当我自 2015以来遇到此功能请求时,我试图找出是否有办法按时间戳列(而不是默认的日志组名称)对日志组进行排序- 这在eu-west-1 他们建议使用新的日志见解,但我无法完成这项工作。

有谁知道我如何按时间戳过滤日志,或者是否可以使用 Cloudwatch 日志见解来过滤日志?

谢谢!

amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs aws-cloudwatch-log-insights

22
推荐指数
2
解决办法
2万
查看次数

AWS CloudWatch Insights 查询字段名称中带有连字符

尝试运行包含reqHeaders.x-forwarded-for以下内容的 CloudWatch Insights 查询:

fields @timestamp, status, err, method, url, req_id, reqHeaders.x-forwarded-for
| filter status >= 400
| sort @timestamp desc
| limit 10
Run Code Online (Sandbox Code Playgroud)

但该字段始终为空,尽管已正确解析@message。我怀疑这是因为子字段名称中的连字符。有谁知道如何重新格式化查询以使其显示?

编辑:这是一个日志消息示例(纯 JSON,我只是对其进行了格式化)

{
    "cache": null,
    "client": "172.31.10.31",
    "component": "server",
    "err": "Invalid access token",
    "hostname": "0da665ab5653",
    "level": 30,
    "method": "PUT",
    "msg": "REQ: 401 PUT /api/xxxxxxxxxx",
    "name": "rocket",
    "pid": 10,
    "reqHeaders": {
        "accept-encoding": "gzip",
        "cloudfront-forwarded-proto": "https",
        "cloudfront-is-desktop-viewer": "true",
        "cloudfront-is-mobile-viewer": "false",
        "cloudfront-is-smarttv-viewer": "false",
        "cloudfront-is-tablet-viewer": "false",
        "cloudfront-viewer-country": "XX",
        "content-length": "74",
        "content-type": "application/json; charset=UTF-8",
        "host": "xxxxxxxxxx", …
Run Code Online (Sandbox Code Playgroud)

amazon-cloudwatch amazon-cloudwatchlogs aws-cloudwatch-log-insights

17
推荐指数
2
解决办法
8971
查看次数

AWS CloudWatch 日志:如何在 lambda 记录特定错误消息时发送电子邮件通知

我必须监控特定 lambda 的 CloudWatch 日志。当特定错误消息(例如 HTTP-50X)记录到 CloudWatch 时,我们需要发送电子邮件通知以提醒出现问题。

我们需要帮助在 AWS 中创建警报电子邮件,以手动监控日志以查看是否记录了任何此类错误。

amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs aws-cloudwatch-log-insights cloudwatch-alarms

16
推荐指数
2
解决办法
2万
查看次数

有没有办法对 AWS CloudWatch Logs Insights 进行分页

有没有办法对 AWS CloudWatch Logs Insights 进行分页?谢谢。

我在想像下面这样的东西,但这不起作用

fields @message | page 2 | limit 20
Run Code Online (Sandbox Code Playgroud)

编辑:

我目前正在通过 Logs Insight 访问日志 在此输入图像描述

在我的应用程序中,我通过AWS.Logger.Serilog访问它。但如果我可以对日志结果进行分页,我可以采用不同的方法(例如原始 API 调用)。

我尝试浏览 AWS CloudWatch 文档、谷歌和堆栈溢出。我试图克服的问题是如何对日志进行分页,这样它就不会加载给定查询的所有日志。

pagination amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs aws-cloudwatch-log-insights

15
推荐指数
1
解决办法
2785
查看次数

AWS Cloudwatch Logs Insights:查询数组

我有一个包含此类消息的日志组。

{
  "m": [
    {
      "id": "5b6973c7c86e8689368b4569",
      "ts": 1634112000.062
    },
        {
      "id": "6116d21e02e38f5045079c42",
      "ts": 1634120807.402
    },
    {
      "id": "60c368ff1085fc0d546fad52",
      "ts": 1634120807.512
    },
    {
      "id": "6053536817a46610797ed472",
      "ts": 1634120809.249
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想对字段 m.*.ts (它是一个数组)运行查询。像这样的东西...

fields @message
| filter (m.*.ts > 1634112000.062 and m.*.ts < 1634120807.000 )
Run Code Online (Sandbox Code Playgroud)

有可能吗?

amazon-cloudwatch aws-cloudwatch-log-insights

15
推荐指数
1
解决办法
8025
查看次数

AWS Cloudwatch Logs Insights 查找接近另一个日志或时间戳的日志

在 AWS Cloudwatch Log Insights 上,通常在您过滤日志并找到有趣的日志消息之后,您希望查看该消息之前或之后发生的事情。

在另一条消息旁边查找日志消息的最佳方法是什么?
我想一个好方法是基于@tiemstamp 进行过滤,它们方便地提供了一个date_floor函数,但我无法弄清楚适用于时间戳相等的语法。

amazon-cloudwatch aws-cloudwatch-log-insights

14
推荐指数
1
解决办法
2005
查看次数

有没有办法为 CloudWatch 日志组过滤器生成 AWS 控制台 URL?

我想将我的用户直接发送到特定的日志组和过滤器,但我需要能够生成正确的 URL 格式。例如,这个网址

https://console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:log-groups/log-group/
%252Fmy%252Flog%252Fgroup%252Fgoes%252Fhere/log-events/$3FfilterPattern$3D$255Bincoming_ip$252C$2Buser_name$252C$2Buser_ip$2B$252C$2Btimestamp$252C$2Brequest$2B$2521$253D$2B$2522GET$2B$252Fhealth_checks$252Fall$2B*$2522$252C$2Bstatus_code$2B$253D$2B5*$2B$257C$257C$2Bstatus_code$2B$253D$2B429$252C$2Bbytes$252C$2Burl$252C$2Buser_agent$255D$26start$3D-172800000
Run Code Online (Sandbox Code Playgroud)

将带您到一个名为的日志组,/my/log/group/goes/here并使用此模式过滤过去 2 天的消息:

[incoming_ip, user_name, user_ip , timestamp, request != "GET /health_checks/all *", status_code = 5* || status_code = 429, bytes, url, user_agent]
Run Code Online (Sandbox Code Playgroud)

我可以解码 URL 的一部分,但我不知道其他一些字符应该是什么(见下文),但这对我来说看起来并不像任何标准的 HTML 编码。有人知道这种 URL 格式的编码器/解码器吗?

%252F == /
$252C == ,
$255B == [
$255D == ]
$253D == =
$2521 == !
$2522 == "
$252F == _
$257C == |

$2B == +
$26 == &
$3D == =
$3F == ?
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cloudwatch aws-cloudwatch-log-insights

14
推荐指数
4
解决办法
2338
查看次数

使用 Amazon Cloudwatch Logs Insights 计算 JSON 消息对象中的数组长度

有什么方法可以获取在云监视日志洞察解析的 JSON 对象中找到的数组的长度?

例如,当发送以下结构的 JSON 对象以记录洞察时:

{
  names: ['john', 'doe', 'joe', 'schmoe']
}
Run Code Online (Sandbox Code Playgroud)

它被解析为以下字段:

  names.0: john
  names.1: doe
  names.2: joe
  names.3: schmoe
Run Code Online (Sandbox Code Playgroud)

并且可以通过

fields @timestamp, names.0, names.1, ...
Run Code Online (Sandbox Code Playgroud)

在这个例子中,有没有办法得到一个field被调用的number_of_names

  • 例如, | parse get_length(names) as number_of_names

json amazon-web-services amazon-cloudwatch aws-cloudwatch-log-insights

12
推荐指数
1
解决办法
963
查看次数

如何在 Cloudwatch Log Insights 中按聚合对结果进行排序?

我有一个非常简单的查询:

fields @timestamp, req.url, msg
| sort @timestamp desc
| filter msg = "request completed"
| stats count() by req.url
Run Code Online (Sandbox Code Playgroud)

它显示了由 url 聚合的我的应用程序提供的所有请求。不过,我也想通过的总价值的结果进行排序count()-但两者| sort count desc| sort "count()" desc没有工作。我怎样才能做到这一点?

amazon-cloudwatchlogs aws-cloudwatch-log-insights

12
推荐指数
1
解决办法
4506
查看次数