【问题标题】:Grok pattern for data separated by pipe由管道分隔的数据的 Grok 模式
【发布时间】:2014-01-07 20:54:30
【问题描述】:

我有一个日志文件,其中数据由管道符号分隔。 “|”。下面是一个例子。有谁知道如何编写 GROK 模式来将其提取到 logstash 中?

2014-01-07 11:58:48.7694|LOGLEVEL|LOGSOURCE|LOGMESSAGE

【问题讨论】:

    标签: logstash logstash-grok


    【解决方案1】:

    您可以使用gsub API 更改管道“|”到空间并使用 GROK 来提取它。

    例如:

    filter {
        grok {
                match => ["message","%{DATESTAMP:time}\|%{WORD:LOGLEVEL}\|%{WORD:LOGSOURCE}\|%{WORD:LOGMESSAGE}"]
        }
    }
    

    上面的配置是用你的日志在我身上工作的。希望对您有所帮助。

    【讨论】:

    • grok { match => ["message","%{DATESTAMP:time}\|%{WORD:LOGLEVEL}\|%{WORD:LOGSOURCE}\|%{WORD:LOGMESSAGE}" ] } 这也可以,它对我有用
    • @ArulT,您的评论获得的赞数多于答案,您能否将其更改为正确答案?
    【解决方案2】:

    使用这个过滤器:

    它对我有用。使用此站点验证 grok 模式,https://grokdebug.herokuapp.com/

    (?<date>(([0-9]+)-*)+ ([0-9]+:*)+.*)\|%{WORD:LOGLEVEL}\|%{WORD:LOGSOURCE}\|%{WORD:LOGMESSAGE}
    

    【讨论】:

      【解决方案3】:

      这对我有用

      grok { match => ["message","%{DATESTAMP:time}\|%{WORD:LOGLEVEL}\|%{WORD:LOGSOURCE}\|%{WORD:LOGMESSAGE}"] }
      

      【讨论】:

        【解决方案4】:

        LOGMESSAGE 部分可以包含很长的内容。为此,我推荐以下用法。

        %{GREEDYDATA:LOGMESSAGE}

        【讨论】:

        • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-10
        相关资源
        最近更新 更多