【问题标题】:How to define grok pattern for pipe delimited log message?如何为管道分隔的日志消息定义 grok 模式?
【发布时间】:2015-08-18 20:11:07
【问题描述】:

在您点击 logstash 过滤器之前,设置 ELK 非常简单。我有一个日志分隔 10 个字段。我可能有一些字段空白,但我确信会有 10 个字段:

7/5/2015 10:10:18 AM|KDCVISH01|
|ClassNameUnavailable:MethodNameUnavailable|CustomerView|xwz261|ef315792-5c41-4bdf-aa66-73317e82e4d6|52|6182d1a1-7916-4874-995b-bc9a23437dab|<Exception>
afkh akla  487234 &*<Exception>

问: 1-我很困惑 grok 或正则表达式模式如何只选择我正在寻找的字段而不是来自另一个字段的类似匹配。例如,DATESTAMP 模式只选择第一个值而不是最后一个字段中存在的时间戳(隐藏在堆栈跟踪中)的保证是什么?

2- 有没有办法定义位置映射?例如,第一个字段是日期时间,第二个是机器名,第三个是类名等等。这将确保无论字段值是否存在,我都会在 Kibana 中显示字段。

【问题讨论】:

    标签: logstash-grok


    【解决方案1】:

    我知道我迟到了,但这里有一个我正在使用的简单解决方案,

    space替换你的|

    选项 1:

    filter {
        mutate {
                gsub => ["message","\|"," "]
        }
    
        grok {
                match => ["message","%{DATESTAMP:time} %{WORD:MESSAGE1} %{WORD:EXCEPTION} %{WORD:MESSAGE2}"]
        }
    }
    

    选项 2:| 除外

    filter {
    
    
            grok {
                    match => ["message","%{DATESTAMP:time}\|%{WORD:MESSAGE1}\|%{WORD:EXCEPTION}\|%{WORD:MESSAGE2}"]
            }
        }
    

    它工作正常:http://grokdebug.herokuapp.com/。检查这里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多