首页 文章

Logstash grok模式用于过滤自定义日志消息

提问于
浏览
0

我是logstash的新手,我想从日志消息中过滤文件 . 这是日志消息:

[2015-03-16 13:12:05,130]  INFO - LogMediator ServiceName = TestService_v1,SystemDate = 3/16/15 1:12 PM,ServerIP = 127.0.1.1,ServerHost = Inspiron-3521,SequenceName = Validation,Message = Going to Validate Request ,MessageCode = null,ErrorMessage = null,ErrorDetail = null,ErrorException = null

从上面的日志消息我想提取所有字段,如ServiceName,SystemDate,SequenceName等 . 这个日志消息的grok模式或正则表达式是什么?

任何帮助,将不胜感激 .

1 回答

  • 1

    您可以先使用以下三个部分(时间戳,loglevel和剩余的logdata)拆分消息:

    \[%{TIMESTAMP_ISO8601:timestamp}\]\s+%{WORD:loglevel}\s+-\s+%{GREEDYDATA:logData}
    

    然后,您可以将csv过滤器应用于logdata字段,如下所示:

    csv {
      columns => ["serviceName","systemDate","serverIP","serverHost","sequenceName","message","messageCode","errorMessage","errorDetail","errorException"]
      separator => ","
    }
    

    这会在每个之后拆分你的logData,所以你会得到一个名为message的新字段,其中包含文本“Message = Go to to Validate Request”你现在可以编辑各个字段,例如你可以使用以下grok过滤器提取实际的消息:

    Message = %{GREEDYDATA:messageText}
    

    我发现使用grok调试器来计算各个grok模式非常有用:http://grokdebug.herokuapp.com/

相关问题