获取可匹配YYYY/MM/DD HH:MM:SS格式时间戳的Grok pattern
匹配指定格式时间戳的Grok规则
核心可用规则
如果你需要将完整时间戳捕获为单个字段,直接使用以下规则即可:(?<log_timestamp>%{YEAR}/%{MONTHNUM2}/%{MONTHDAY} %{HOUR}:%{MINUTE}:%{SECOND})
注:这里使用
MONTHNUM2而非MONTHNUM是为了严格匹配两位月份(如11月匹配为11,不会出现1这种单月格式),完全符合你给出的示例格式要求。
验证说明
你提供的示例值2021/11/11 05:04:11可被上述规则完美匹配,匹配后会生成log_timestamp字段存储完整时间戳内容,如果你需要拆分时间各部分为单独字段,可以使用如下规则:%{YEAR:log_year}/%{MONTHNUM2:log_month}/%{MONTHDAY:log_day} %{HOUR:log_hour}:%{MINUTE:log_minute}:%{SECOND:log_second}
配套使用提示
如果需要将匹配到的时间戳转换为Logstash的标准@timestamp字段,可在filter配置中搭配date过滤器使用,示例配置片段:
filter { grok { match => { "message" => "(?<log_timestamp>%{YEAR}/%{MONTHNUM2}/%{MONTHDAY} %{HOUR}:%{MINUTE}:%{SECOND})" } } date { match => [ "log_timestamp", "yyyy/MM/dd HH:mm:ss" ] target => "@timestamp" } }
内容的提问来源于stack exchange,提问作者sidharth vijayakumar
相关产品推荐
相关产品推荐

