logstash时区不对

ELK是非常流行的日志收集分析展示软件,但是当不配合kibana使用时,logstash的时区就会有问题。

时区问题的解释

很多中国用户经常提一个问题:为什么 @timestamp 比我们早了 8 个小时?怎么修改成北京时间?
其实,Elasticsearch 内部,对时间类型字段,是统一采用 UTC 时间,存成 long 长整形数据的!对日志统一采用 UTC 时间存储,是国际安全/运维界的一个通识——欧美公司的服务器普遍广泛分布在多个时区里——不像中国,地域横跨五个时区却只用北京时间。
对于页面查看,ELK 的解决方案是在 Kibana 上,读取浏览器的当前时区,然后在页面上转换时间内容的显示。
所以,建议大家接受这种设定。否则,即便你用 .getLocalTime 修改,也还要面临在 Kibana 上反过去修改,以及 Elasticsearch 原有的 [“now-1h” TO “now”] 这种方便的搜索语句无法正常使用的尴尬。
以上,请读者自行斟酌。

解决方法

1
2
3
4
5
6
7
···
filter {
ruby {
code => "event.timestamp.time.localtime"
}
}
···

在原有logstash配置文件中添加如下配置,使用系统时区

坚持原创技术分享,您的支持将鼓励我继续创作!