0

我正在使用 rspec 测试我的 logstash 配置以匹配基本的 tomcat 日志,但是当我在 grok 模式中指定字段时它会失败(没有字段,它会成功!)。

config <<-CONFIG
filter {
  grok {
    patterns_dir -> "./patterns"
    pattern => "%{CATALINA_DATESTAMP:logTimestamp} %{JAVACLASS} %{WORD}"
  }
}
CONFIG

sample 'Jul 15, 2015 9:33:23 AM org.apache.catalina.core.ApplicationContext log'

//编辑:将 TOMCAT_DATESTAMP 更正为 CATALINA_DATESTAMP,即:

CATALINA_DATESTAMP %{MONTH} %{MONTHDAY}, 20%{YEAR} %{HOUR}:?%{MINUTE}(?::?%{SECOND}) (?:AM|PM)

当 ":logTimestamp" 部分在模式中时,什么都不匹配。当它被删除时,它与这条线相匹配......关于为什么的任何想法?这是用户错误,安装错误还是其他?

4

1 回答 1

0

问题可能是由TOMCAT_DATESTAMP模式引起的。当您查看java 的 grok 默认模式时,您会发现它与您的输入不匹配。

这是模式定义:

TOMCAT_DATESTAMP 20%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:?%{MINUTE}(?::?%{SECOND}) %{ISO8601_TIMEZONE}

您的输入是:

Jul 15, 2015 9:33:23 AM

要么更改输入以适应模式,要么定义不同的模式。以下可能适合您的目的:

 %{MONTH} %{MONTHDAY}, %{YEAR} %{TIME}
于 2015-07-16T19:53:03.690 回答