Logstash 日期格式YYYY/MM/DD HH:MM:ss是否有任何现有的grok{}模式?
我在检查服务器上的nginx错误日志时发现,日志以日期开头,格式如下:Logstash 日期格式YYYY/MM/DD HH:MM:ss是否有任何现有的grok{}模式?,logstash,logstash-grok,Logstash,Logstash Grok,我在检查服务器上的nginx错误日志时发现,日志以日期开头,格式如下: 2015/08/30 05:55:20 i、 e.YYYY/MM/DD HH:MM:ss。我试图找到一个现有的grok日期模式,这可能有助于我快速解析它,但遗憾的是找不到任何这样的日期格式。最后,我不得不将模式写成: %{YEAR}/%{MONTHNUM}/%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}? 我仍然希望是否有一个更短
2015/08/30 05:55:20
i、 e.YYYY/MM/DD HH:MM:ss
。我试图找到一个现有的grok日期模式,这可能有助于我快速解析它,但遗憾的是找不到任何这样的日期格式。最后,我不得不将模式写成:
%{YEAR}/%{MONTHNUM}/%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?
我仍然希望是否有一个更短的模式用于相同的?否。您可以在github上找到。datestamp
的注释似乎适合您的YYYY/MM/DD,但是DATE\u US
和DATE\u EU
是不同的
我建议使用grok选项重载日期
模式,并使用日期戳
DATE_YMD %{YEAR}/%{MONTHNUM}/%{MONTHDAY}
DATE %{DATE_US}|%{DATE_EU}|%{DATE_YMD}
或者只需将您的模式添加到模式文件中,并使用grok的patterns\u dir选项。您也可以简单地包含简单而简短的joda.time模式
date {
match => [ "timestamp", "yyyy/MM/dd HH:mm:ss" ]
target => "@timestamp"
}
有用的参考链接:成功的时间戳捕获策略由3部分组成
$msec
捕获毫秒。否则,您将无法对其进行精确排序
log_format custom '[$msec] [$remote_addr] [$remote_user] '
'"$request" $status '
'"$http_referer" "$http_user_agent"';
grok {
match => { "message" => "\[%{GREEDYDATA:raw_timestamp}\] %{GREEDYDATA:message}" }
overwrite => [ "message" ]
}
date
过滤器解析原始时间戳要匹配2015/08/30 05:55:20,请使用:
%{DATESTAMP:mytimestamp}
在Logstash 6.5上测试
资料来源:
模式实际上必须包含
[T]
和%{ISO8601\u时区}?
?看看你的一个例子,它们是不必要的。还有,为什么要选择秒数?同意你的看法。这些是没有必要的。但是有没有任何模式可以解析这个日期格式呢?但是如何将匹配的模式解析成一个合适的日期类型呢?我认为另一个答案应该在这里合并。谢谢!它也适用于开放发行版!:)
%{DATESTAMP:mytimestamp}