Mik*_*liy 10 amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs
我试图解析混合文本和JSON的日志条目.第一行是文本表示,下一行是事件的JSON有效负载.其中一个可能的例子是:
2016-07-24T21:08:07.888Z [INFO] Command completed lessonrecords-create
{
"key": "lessonrecords-create",
"correlationId": "c1c07081-3f67-4ab3-a5e2-1b3a16c87961",
"result": {
"id": "9457ce88-4e6f-4084-bbea-14fff78ce5b6",
"status": "NA",
"private": false,
"note": "Test note",
"time": "2016-02-01T01:24:00.000Z",
"updatedAt": "2016-07-24T21:08:07.879Z",
"createdAt": "2016-07-24T21:08:07.879Z",
"authorId": null,
"lessonId": null,
"groupId": null
}
}
Run Code Online (Sandbox Code Playgroud)
对于此记录,我尝试将Log Metric Filter定义为a)匹配记录b)如果可能,选择数据或维度.
根据AWS docs,JSON模式应如下所示:
{ $.key = "lessonrecords-create" }
但它与任何东西都不匹配.我的猜测是因为在单个日志条目中混合文本和JSON.
因此,问题是:1.是否可以定义与此日志格式匹配的模式?2.是否可以从这种日志格式中提取尺寸,值?3.用模式帮助我做到这一点.
如果您按照定义的方式设置指标过滤器,则测试将不会注册任何匹配项(我也遇到过此问题),但是当您部署指标过滤器时,它仍然会注册匹配项(至少我的)。请记住,(据我所知)无法向后运行此指标过滤器(即,它只会捕获创建时的数据)。[如果您想获取过去数据的统计信息,最好使用日志洞察查询]
我目前正在尝试使用不同的解析语句来尝试提取数据(它也是 JSON 和文本的混合),此线程可能会帮助您(但对我来说没有)Amazon Cloudwatch Logs Insights with JSON fields。
更新! 我找到了一种解析文本的方法,但它有点笨拙。如果您使用 lamda 函数将 cloudwatch 日志导出到 SumoLogic,他们的搜索工具可以实现更好的日志操作,并允许您解析 JSON 字段(如果您将整个条目视为文本)。SumoLogic 也非常有用,因为您可以将搜索结果提取为 CSV。出于我的目的,我在 SumoLogic 中解析整个日志消息,将所有日志提取为 CSV,然后使用 Python 中的正则表达式来过滤并提取我需要的值。
| 归档时间: |
|
| 查看次数: |
1997 次 |
| 最近记录: |