Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AWS Cloudwatch日志洞察-根据JSON日志事件上的JSON过滤器过滤记录_Json_Amazon Web Services_Amazon Cloudwatch_Amazon Cloudwatchlogs - Fatal编程技术网

AWS Cloudwatch日志洞察-根据JSON日志事件上的JSON过滤器过滤记录

AWS Cloudwatch日志洞察-根据JSON日志事件上的JSON过滤器过滤记录,json,amazon-web-services,amazon-cloudwatch,amazon-cloudwatchlogs,Json,Amazon Web Services,Amazon Cloudwatch,Amazon Cloudwatchlogs,我有一个日志组,它将JSON日志累积到每个流中。这些JSON日志如下所示 我想过滤“user”=“keet”中的日志。AWS文档解释了。我使用AWS SDK尝试了这一点,它在NodeJS中的以下代码中运行良好 let params = { logGroupName: 'log-goupe-name', /* required */ filterPattern: '{$.user=keet}', }; cloudwatchlogs.filterLogEvents(params,

我有一个日志组,它将JSON日志累积到每个流中。这些JSON日志如下所示

我想过滤
“user”=“keet”
中的日志。AWS文档解释了。我使用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 Cloudwatch Insights仪表板上,在AWS控制台上是否可以实现同样的功能?我知道字符串模式匹配是可能的。但是我想知道是否可以在Insights仪表板上使用
@filter
进行JSON字段匹配。默认查询如下所示

fields @timestamp, @message
| sort @timestamp desc
| limit 20
我试着继续遵循这个答案,但仍然无济于事。这仅用于解析数据。我的要求是根据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会自动发现这些领域。您可以在右侧的“发现的字段”部分中看到自动发现的字段列表。

太棒了。这就是我要找的。你知道如何解析复合JSON对象吗<代码>{“用户”:“基特”,“年龄”:30,“姓名”:{“第一个”:“基特”,“最后一个”:“sugathadasa”}。我想将“last”解析为“last”列。我想将其解析为
name.first
(复合方式)。您可以做同样的事情:
parse@message'“user”:“*”'as user | parse@message'“first”:“*”as first | parse@message'“last”:“*”as last
,但这不会给出
名称。first
语法。你能不能试试过滤名称。第一个=='keet'也许Insights会自动发现字段。我建议只记录json位(不记录
info-
)。