如何从 CloudWatch Logs Insights 查询中排除 @ptr 字段?

问题描述 投票:0回答:1

我有这个 AWS CloudWatch 查询,它是我通过 AWS CLI 使用

aws logs start-query
:

创建的
display @timestamp, @message
| sort @timestamp asc
| filter @message not like "GET / HTTP/1.1"'

使用

aws logs get-query-results
时,此查询会根据需要返回
@timestamp
@message
,但还会返回一个额外的
@ptr
字段。

如何更改查询以不返回

@ptr
字段?

amazon-web-services aws-cli amazon-cloudwatch amazon-cloudwatchlogs
1个回答
0
投票

服务器端,无法过滤掉作为日志记录标识符的

@ptr
字段。它由
GetQueryResults
在 API 级别返回,并且没有选项可以将其从结果中排除。


但是,在客户端,一些

jq
魔法可以从 AWS CLI 输出中删除
ptr
字段。

尝试:

aws logs get-query-results \
--query-id 'xxx' \
| jq 'del(.results[][] | select(.field == "@ptr"))'

此过滤器告诉

jq
删除
results
内每个数组中的所有对象,其中“field”等于
@ptr


过滤前的输出:

{
  "results": [
    [
      {
        "field": "@timestamp",
        "value": "2023-09-25 22:41:44.378"
      },
      {
        "field": "@message",
        "value": "END RequestId: 69cdac96-c8d1-4935-94e4-6ce45acc4935\n"
      },
      {
        "field": "@ptr",
        "value": "Cl0KIAocNTg1NDcwMzQ2NjkyOi9hd3MvbGFtYmRhL2FhYRADEjUaGAIGUHTBkwAAAAAkeektAAZRIMOgAAACMiABKIDihfSsMTC644X0rDE4BUDRBUjiD1DpCBgAIAEQAxgB"
      }
    ]
  ],
  ...
}

通过

jq
过滤后的输出:

{
  "results": [
    [
      {
        "field": "@timestamp",
        "value": "2023-09-25 22:41:44.378"
      },
      {
        "field": "@message",
        "value": "END RequestId: 69cdac96-c8d1-4935-94e4-6ce45acc4935\n"
      }
    ]
  ],
  ...
}
© www.soinside.com 2019 - 2024. All rights reserved.