使用筛选模式解析Cloudwatch日志

5

我收到了一封邮件,其中包含一个在CloudWatch中的lambda函数日志:

 /aws/lambda/sns-function | 2017/01/10/[$LATEST]425d9138c8d54ab57l0766ba74fdfd4p | 2017-01-10T00:04:30.734Z | 2017-01-10 00:04:30,734 :: ERROR :: error creating /tmp/tmpkRWp3S_20170110/file20170115.tar.gz: Command `['/bin/tar', '--create', '-z', '--file', u'/tmp/tmpkRWp3S_20170110/file20170115.tar.gz', '--', './']' returned non-zero exit status 1

此文档所述,我想要添加过滤模式以仅获取重要数据。对于我而言,我只想获取日期一次,因为在上面的行中,我有两次这个信息:2017-01-10T00:04:30.734Z。我尝试使用以下模式:

[...,timestamp,level,message=*ERROR*,...]

但是我遇到了这个错误:
2017-01-17 10:45:58,091 :: ERROR :: logGroup: '/aws/lambda/sns-function' - logStream: 'None'
2017-01-17 10:45:58,091 :: ERROR :: An error occurred (InvalidParameterException) when calling the FilterLogEvents operation: Duplicate field '...'

如何解析日志仅获取日期?

1个回答

7
指标过滤器可帮助您搜索和匹配日志事件中的术语、短语或值。它们不会从日志事件中删除值(在您的情况下是时间戳)。您可以修改脚本以排除输出中的时间戳(因为它已经包含在内)。
此外,您正在使用用于空格分隔的日志事件的指标过滤器。您的分隔符似乎是“::”,但在这种情况下不起作用。指标过滤器将把它解释为单个字段。如果您想使用此指标过滤器,可以用方括号[]或两个双引号""括起每个字段。
例如,您可以使用以下日志事件的模式"[timestamp,result = ERROR,message,exit_status=*1*]"。
[2017-01-10 00:04:30,734] [ERROR] "error creating /tmp/tmpkRWp3S_20170110/file20170115.tar.gz: Command `['/bin/tar', '--create', '-z', '--file', u'/tmp/tmpkRWp3S_20170110/file20170115.tar.gz', '--', './']' returned non-zero" "exit status 1"

注意:出现错误的原因是省略号在模式中只能出现一次。


谢谢,我该如何在Python中用“|”分隔符显示event['message']中的每个字段? - JavaQueen
最好发布一个新问题(包括您的代码片段),并将其标记为Python :) - Khalid T.
好的,这里是:http://stackoverflow.com/questions/41697901/format-the-message-of-cloudwatch-logs - JavaQueen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接