[英]How to filter CloudWatch logs from Lambda with a JSON Metric Filter
直接从文档中使用示例,在lambda函数中我放:
console.log(
{
"eventType": "UpdateTrail",
"sourceIPAddress": "111.111.111.111",
"arrayKey": [
"value",
"another value"
],
"objectList": [
{
"name": "a",
"id": 1
},
{
"name": "b",
"id": 2
}
],
"SomeObject": null,
"ThisFlag": true
})
然后,我在CloudWatch中创建一个日志指标筛选器,其中包含docs示例中指定的筛选器模式:
{ $.eventType = "UpdateTrail" }
过滤器不会像文档中所说的那样生成度量标准 - 这是输出:
2017-10-23T13:27:19.320Z 1143e2b0-eea6-4225-88c0-efcd79055f7b { eventType: 'UpdateTrail',
sourceIPAddress: '111.111.111.111',
arrayKey: [ 'value', 'another value' ],
objectList: [ { name: 'a', id: 1 }, { name: 'b', id: 2 } ],
SomeObject: null,
ThisFlag: true }
因此,您可以看到时间戳和标识符被添加到JSON之前。
Amazon Cloudwatch日志过滤的答案- JSON语法说这是因为Lambda将日志转换为字符串。 如何在AWS CloudWatch for Log Metric Filter中解析混合文本和JSON日志条目的说法大致相同。 在任何一种情况下都不提供解决方案。 如何使用JSON Metric过滤器从Lambda过滤CloudWatch日志?
看看日志行的实际情况。 如果你看到这样的东西,它不是一个有效的json:
{ eventType: 'UpdateTrail', ... }
你想要的是这样的(注意引用):
{ "eventType": "UpdateTrail", ...}
为此,尝试将对象包装在JSON.stringify()
,如下所示:
console.log(
JSON.stringify(
{
"eventType": "UpdateTrail",
"sourceIPAddress": "111.111.111.111",
"arrayKey": [
"value",
"another value"
],
"objectList": [
{
"name": "a",
"id": 1
},
{
"name": "b",
"id": 2
}
],
"SomeObject": null,
"ThisFlag": true
}
)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.