时间戳 GROK 失败
TIMESTAMP GROK FAILURE
grok 时间戳模式存在一些问题
2020-3-4 10:22:37 >> this will match with this pattern %{TIMESTAMP_ISO8601:my_time}
2020-3-4 0:2:37 >> this will fail with this pattern %{TIMESTAMP_ISO8601:my_time}
也尝试使用像 YEAR MONTH AND DAY
这样的单独模式来匹配模式,但是当到达时间 %{HOUR}:%{MINUTE}:%{SECOND}
时它又会中断。有什么想法吗?
问题在于 logstash 中的分钟模式 is defined:(?:[0-5][0-9])
。此模式需要一个两位数的分钟数,在您的第二种情况下会中断(2020-3-4 0:2:37
)。
我已将模式更改为接受一位数的分钟数:(?:[0-5][0-9]|[0-9])
然后您可以使用此自定义模式:
(?<my_time>%{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?(?:[0-5][0-9]|[0-9])(?::?%{SECOND})?%{ISO8601_TIMEZONE}?)
这是 TIMESTAMP_ISO8601
和 MINUTE
替换为我的模式。
grok 时间戳模式存在一些问题
2020-3-4 10:22:37 >> this will match with this pattern %{TIMESTAMP_ISO8601:my_time}
2020-3-4 0:2:37 >> this will fail with this pattern %{TIMESTAMP_ISO8601:my_time}
也尝试使用像 YEAR MONTH AND DAY
这样的单独模式来匹配模式,但是当到达时间 %{HOUR}:%{MINUTE}:%{SECOND}
时它又会中断。有什么想法吗?
问题在于 logstash 中的分钟模式 is defined:(?:[0-5][0-9])
。此模式需要一个两位数的分钟数,在您的第二种情况下会中断(2020-3-4 0:2:37
)。
我已将模式更改为接受一位数的分钟数:(?:[0-5][0-9]|[0-9])
然后您可以使用此自定义模式:
(?<my_time>%{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?(?:[0-5][0-9]|[0-9])(?::?%{SECOND})?%{ISO8601_TIMEZONE}?)
这是 TIMESTAMP_ISO8601
和 MINUTE
替换为我的模式。