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

时间:2015-03-16 08:40:25

标签: regex expression grok logstash-grok

我是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 个答案:

答案 0 :(得分:1)

您可以先使用以下三个部分(时间戳,日志级别和剩余的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/

相关问题