用于自定义日志的logstash

时间:2017-05-27 04:33:37

标签: logstash logstash-grok logstash-configuration

我正在尝试为下面的日志写一个grok过滤器但是得到了grokfailure。我是新手,请帮助我。

日志: msg.repository.routed.ABC_MAS:101 :: 20170526-05:03:08:从远程主机获得t-rate< 0.068>和f-大小< 68>进入tmp目录 msg.repository.routed.ABC_MAS:101 :: 20170526-05:03:07:以t-rate< 0.068>从远程主机获得。和f-大小< 68>进入tmp目录 msg.repository.routed.BCD_MAS:101 :: 20170526-00:04:34:sftp连接到1.2.2.1(msg),timeOut:1000 msg.repository.routed.ABC_MAS:101 :: 20170526-00:04:37:sftp连接到1.2.2.1(msg),timeOut:1000

我使用的Grok模式: 过滤器{   grok {          match => {“message”=> '(?:%{GREEDYDATA:pullpathinfo}):%{NUMBER:thread} ::%{NUMBER:date} - %{NUMBER:HOUR}:%{NUMBER:MINUTE}:%{NUMBER:SECOND} :(? :sftp连接到%{IPORHOST:remoteip}%{GREEDYDATA:msg})'}          match => {“message”=> '(?:%{GREEDYDATA:pullpathinfo}):%{NUMBER:thread} ::%{NUMBER:date} - %{NUMBER:HOUR}:%{NUMBER:MINUTE}:%{NUMBER:SECOND} :(? :得到\<%{GREEDYDATA:filename}>%{GREEDYDATA:rate_size})'}   } }

1 个答案:

答案 0 :(得分:0)

为了开发grok模式,我建议你使用Grok Debugger。它允许您逐步构建grok模式。

对于跟随日志(在问题的日志行中):

msg.repository.routed.ABC_MAS:101::20170526-00:04:37: sftp connected to 1.2.2.1(msg), timeOut:1000

以下grok模式将起作用:

%{USERNAME:pullpathinfo}:%{NUMBER:thread}::%{NUMBER:date}-%{TIME:time}: sftp connected to %{IPORHOST:remoteip}%{GREEDYDATA:msg}

以下更改是相关的:

  • grok模式必须与模式中的每个角色完全相同。对于grok模式之间的每个空格也是如此(%{WORD} %{WORD}%{WORD}%{WORD}不同。在您的模式中,%{IPORHOST:remoteip}%{GREEDYDATA:msg}之间存在太多空格。
  • %{USERNAME}而不是%{GREEDYDATA}(GREEDYDATA只应用于日志行中的剩余部分。即使模式USERNAME有一个不适合的名称,它背后的模式看起来像一个非常合适,因为它包含[a-zA-Z0-9._-]+(但不包括冒号:
  • %{TIME}代替'%{NUMBER:HOUR}:%{NUMBER:MINUTE}:%{NUMBER:SECOND}

我希望这会有所帮助。