问题复现:
从MySQL同步过来的数据到es中@timestamp会少8小时
问题原因:
查了资料发现,这是由于logstash在获取时区的时候,默认获取的是UTC默认时间,同时elasticsearch在创建索引的时候,统一使用UTC时间,因为中国使用的为东8时区,源数据和实际创建的索引数据会相差8个小时。
解决方案:
在你写的同步脚本中添加
filter {
ruby {
code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)"
}
ruby {
code => "event.set('@timestamp',event.get('timestamp'))"
}
mutate {
remove_field => ["timestamp"]
}
}
重新执行传输命令:./bin/logstash -f 配置文件目录
回到kibana上查询数据,发现时间戳合适了。
残留问题:
回头看日志时间还是差八小时,有没有可以解决的办法,我们评论区见