【问题标题】:GROK Pattern filteringGROK 模式过滤
【发布时间】:2017-01-23 10:39:00
【问题描述】:

您好,我是 logstash 和 grok 过滤的新手,我有一个这样的示例日志:

2017 年 1 月 11 日上午 12:00:17: 抛出的错误是: 没有错误


发送的请求是: webMethod:GetOSSUpdatedOrderHeader|appCode:OSS|regionCode:EMEA|orderKeyList:|lastModifedDateTime:1/10/2017 11:59:13 PM|


我想过滤掉行分隔符,它是一个充满**的行(最后一行) 此外,当我希望能够在一个字段中捕获包括“:”在内的整行时。例如在上面的日志中,webMethod:GetOSSUpdatedOrderHeader 必须在我的 grok 模式中的一个字段中捕获。有没有办法做到这一点? TIA。 sample log message请参考附图

【问题讨论】:

    标签: logstash grok


    【解决方案1】:

    一些提示:

    • 日志照片不是提供示例的好方法,请复制并粘贴日志
    • Grok Debugger 是构建自己的 grok 模式的好方法

    这应该适用于您粘贴的示例日志行:

    %{NOTSPACE:webMethod}\|%{NOTSPACE:appCode}\|%{NOTSPACE:regionCode}\|%{NOTSPACE:orderKeyList}\|%{NOTSPACE:lastModifedDateTime}
    

    但是,您请求的内容可能不是您想要的,因为您只需要结果中的字段内容,而不是字段名称。这应该会给你更明智的结果:

    webMethod:%{NOTSPACE:webMethod}\|appCode:%{NOTSPACE:appCode}\|regionCode:%{NOTSPACE:regionCode}\|orderKeyList:(?:%{NOTSPACE:orderKeyList}|)\|lastModifedDateTime:%{NOTSPACE:lastModifedDateTime}
    

    然后,您需要使用 date 过滤器处理 lastModifedDateTime 字段,以获取 logstash 可以保存到的格式的日期戳。

    【讨论】:

    • 对糟糕的日志显示方式表示歉意,非常感谢您的回复。
    • 1/11/2017 12:00:17 AM:抛出的错误是:没有错误 ************************ ************************************************* 要求发送的是:webMethod:GetOSSUpdatedOrderHeader|appCode:OSS|regionCode:EMEA|orderKeyList:|lastModifedDateTime:1/10/2017 11:59:13 PM| ****************************************************** *********************** 这是自定义日志,星星(*)未显示在问题中,我的 grok 模式工作正常,但捕获了这些星星还有,有没有办法我可以放弃或忽略这些?@Rumbles
    • 是的,但这是一个不同的问题
    • 你能帮我语法吗?我已经尝试过 if condition s 和 mutate 但只是无法正确!
    • 如果您提出新问题,我可以看看。
    猜你喜欢
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    相关资源
    最近更新 更多