【问题标题】:Parse cloudwatch logs using filter patterns使用过滤器模式解析 cloudwatch 日志
【发布时间】:2017-01-17 19:41:36
【问题描述】:

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

如何解析日志以获取一次日期?

【问题讨论】:

    标签: amazon-web-services amazon-cloudwatch


    【解决方案1】:

    指标过滤器可帮助您在日志事件中搜索和匹配字词、短语或值。它们不会从日志事件中删除值(在您的情况下为 时间戳)。您可以修改脚本以从输出中排除 timestamp(因为它已经包含在内)。

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

    例如,您可以将此模式[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'] 中的每个字段,用“|”分隔?
    • 最好为此发布一个新问题(包括您的代码 sn-p),并将其标记为 python :)
    猜你喜欢
    • 1970-01-01
    • 2020-08-12
    • 2016-03-22
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    相关资源
    最近更新 更多