首页 文章

使用过滤器模式解析cloudwatch日志

提问于
浏览
0

我在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

正如doc中所解释的那样,我希望将过滤器模式放在仅获取重要数据的位置 . 对我来说,我想只获得一次日期,因为在上面的行中,我有两次这样的信息: 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 回答

  • 1

    指标筛选器可帮助您搜索和匹配日志事件中的术语,短语或值 . 它们是日志事件中的 do not remove 值(在您的情况下为时间戳) . 您可以修改脚本以从输出中排除时间戳(因为它已包含在内) .

    此外,您正在使用度量筛选器来进行空格分隔的日志事件 . 您的分隔符似乎是 :: ,在这种情况下不起作用 . 度量过滤器将此解释为单个字段 . 如果要使用此度量标准筛选器,可以将每个字段括在方括号 [] 或两个双引号 "" 中 .

    例如,您可以将此模式 [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"
    

    NOTE :错误的原因是省略号 应该只在模式中出现一次 .

相关问题