Logstash 自定义日志的日志存储

Logstash 自定义日志的日志存储,logstash,logstash-grok,logstash-configuration,Logstash,Logstash Grok,Logstash Configuration,我正在尝试为下面的日志编写一个grok筛选器,但却遇到了grokfailure。我是新手,请帮帮我 日志: msg.repository.routed.ABC_MAS:101::20170526-05:03:08:以t-rate和f-size从远程主机获取tmp目录 msg.repository.routed.ABC_MAS:101::20170526-05:03:07:以t-rate和f-size从远程主机获取tmp目录 msg.repository.routed.BCD_MAS:101::2

我正在尝试为下面的日志编写一个grok筛选器,但却遇到了grokfailure。我是新手,请帮帮我

日志: msg.repository.routed.ABC_MAS:101::20170526-05:03:08:以t-rate和f-size从远程主机获取tmp目录 msg.repository.routed.ABC_MAS:101::20170526-05:03:07:以t-rate和f-size从远程主机获取tmp目录 msg.repository.routed.BCD_MAS:101::20170526-00:04:34:sftp连接到1.2.2.1(msg),超时:1000 msg.repository.routed.ABC_MAS:101::20170526-00:04:37:sftp连接到1.2.2.1(msg),超时:1000

我使用的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}:(?:got\%{GREEDYDATA:rate\u size})} }
}

要开发grok模式,我建议您使用。它允许您逐步建立grok模式

对于以下日志(在您问题中的日志行上):

以下grok模式将起作用:

%{USERNAME:pullpathinfo}:%{NUMBER:thread}::%{NUMBER:date}-%{TIME:time}: sftp connected to %{IPORHOST:remoteip}%{GREEDYDATA:msg}
以下变化是相关的:

  • grok模式必须精确到模式中的每个字符。对于grok模式之间的每个空格也是如此(
    %{WORD}%{WORD}
    %{WORD}%{WORD}
    不同。在您的模式中,
    %{IPORHOST:remoteip}
    %{greedydydata:msg}
    之间的空格过多
  • %{USERNAME}
    而不是
    %{GREEDYDATA}
    (GREEDYDATA应该只用于日志行中的其余部分。即使模式用户名有一个不合适的名称,它后面的模式看起来很合适,因为它包括
    [a-zA-Z0-9.\u-]+
    (但不是冒号
  • %%{TIME}
    而不是`{NUMBER:HOUR}:%%{NUMBER:MINUTE}:%%{NUMBER:SECOND}
我希望这有帮助

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