logstash-2.3.1按日产生索引(%{+YYYY.MM.dd})产生时间比预计晚8小时问题
由于Elasticsearch、Logstash内部,对时间类型字段,是统一采用 UTC 时间,outputs/elasticsearch中常用的 %{+YYYY.MM.dd}
这种写法必须读取 @timestamp,为了解决索引产生的时间问题,必须先解决@timestamp时区问题。结合网上资料有以下几种思路:
一:使用filter(目前使用)
filter{
ruby {
code => "event.timestamp.time.localtime"
}
}
或
filter{
ruby {
code => "event['@timestamp'] = LogStash::Timestamp.coerce(event['@timestamp'].time.localtime)"
}
}
@timestamp将采用系统当前时间
二:如果需要将日志文件中的日期映射成@timestamp,可以使用以下类似配置
filter{
date {
match => ["logdate", "yyyyMMddHHmmssSSS"]