AWS Cloudwatch Log Insights - 按 JSON 过滤器过滤记录 JSON 日志事件
AWS Cloudwatch Log Insights - Filter Records by JSON filters on JSON log events
我有一个日志组,它向每个流中累积 JSON 日志。这些 JSON 日志如下所示。
我想过滤 "user" = "keet"
中的日志。 AWS 文档在 Using Metric Filters to Extract Values from JSON Log Events 上进行了解释。我使用 AWS SDK 进行了尝试,对于 NodeJS 中的以下代码,它运行良好。
let params = {
logGroupName: 'log-goupe-name', /* required */
filterPattern: '{$.user=keet}',
};
cloudwatchlogs.filterLogEvents(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
问题:
同样,我想知道在 AWS 控制台上的 AWS Cloudwatch Insights Dashboard 上是否也可以这样做?我知道字符串模式匹配是可能的。但我想知道是否可以使用 @filter
在 Insights 仪表板上进行 JSON 字段匹配。出现的默认查询如下。
fields @timestamp, @message
| sort @timestamp desc
| limit 20
我尝试按照 Whosebug 上的这个答案进行操作,但仍然没有帮助。这仅用于解析数据。我的要求是根据 JSON 日志中的值过滤日志。
提前致谢。
您可以像这样从 json 中解析出用户:
parse @message '"user":"*"' as user
根据您想在仪表板上看到的内容,您可以使用以下方法过滤掉特定用户:
fields @message
| parse @message '"user":"*"' as user
| filter user == "keet"
结果将是:
# @message user
----------------------------------------------
1 info - {"user":"keet","age":30 } keet
2 info - {"user":"keet","age":30 } keet
3 info - {"user":"keet","age":30 } keet
4 info - {"user":"keet","age":30 } keet
也试试:
filter user == 'keet'
也许 Insights 会 auto-discover 字段。您可以在右侧的 发现的字段 部分中看到 auto-discovered 字段的列表。
我有一个日志组,它向每个流中累积 JSON 日志。这些 JSON 日志如下所示。
我想过滤 "user" = "keet"
中的日志。 AWS 文档在 Using Metric Filters to Extract Values from JSON Log Events 上进行了解释。我使用 AWS SDK 进行了尝试,对于 NodeJS 中的以下代码,它运行良好。
let params = {
logGroupName: 'log-goupe-name', /* required */
filterPattern: '{$.user=keet}',
};
cloudwatchlogs.filterLogEvents(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
问题:
同样,我想知道在 AWS 控制台上的 AWS Cloudwatch Insights Dashboard 上是否也可以这样做?我知道字符串模式匹配是可能的。但我想知道是否可以使用 @filter
在 Insights 仪表板上进行 JSON 字段匹配。出现的默认查询如下。
fields @timestamp, @message
| sort @timestamp desc
| limit 20
我尝试按照 Whosebug 上的这个答案进行操作,但仍然没有帮助。这仅用于解析数据。我的要求是根据 JSON 日志中的值过滤日志。
提前致谢。
您可以像这样从 json 中解析出用户:
parse @message '"user":"*"' as user
根据您想在仪表板上看到的内容,您可以使用以下方法过滤掉特定用户:
fields @message
| parse @message '"user":"*"' as user
| filter user == "keet"
结果将是:
# @message user
----------------------------------------------
1 info - {"user":"keet","age":30 } keet
2 info - {"user":"keet","age":30 } keet
3 info - {"user":"keet","age":30 } keet
4 info - {"user":"keet","age":30 } keet
也试试:
filter user == 'keet'
也许 Insights 会 auto-discover 字段。您可以在右侧的 发现的字段 部分中看到 auto-discovered 字段的列表。