我是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模式或正则表达式是什么?
任何帮助都将不胜感激。
答案 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/