ELK 时间问题

来源:互联网 发布:软件专利侵权案例 编辑:程序博客网 时间:2024/06/12 09:45

这两天在玩ELK .掉进了不少坑里。还在慢慢摸索。记录下学习的过程,可能会有错误,欢迎各位指正。

说说时间的问题。

先来说说日志文件log 。

分语言、服务器 tomcat ,IIS 。 Java 的tomcat 日志文件里面的时间,有时候会带时区类型,如: [09/Sep/2016:08:18:42 +0800] 表示的是东八区时间,也就是北京时间,一般没带的也表示北京时间。 IIS 的日志文件时间默认的是格林威治时间 ,比北京时间少了8小时。(这问题纠结了好久,看访问量总感觉奇怪,为什么深更半夜的访问量这么高,白天仿佛系统崩溃了一样。)

原理:
date 类型是包含时区的,如果我们采集的时间没有包含时区,如2016-07-15T12:58:17.136 这种格式。kibana 从es 中读取 date 类型数据,由于没有时区,会默认当做0时区来解,但是kibana 在浏览器显示的时候,会通过js读取服务器所在的时区,也就是东八区。所有kibana 显示的时间会比采集到的时候多8小时(网上有说少了8小时的,目前从我的数据来看,应该是多8小时)。这就会导致Kibana数据延迟8小时。

解决方案 :
我们在往es提交日期数据的时候,直接提交带有时区信息的日期字符串,如:“2016-07-15T12:58:17.136+0800”。

: 下面的未经验证(遇到过一次,用下面的方法好像能解决,但是没有再次验证。所有正确性不能保证,如有遇到的可以试试)。

有这么种现象。启动ELK 后,日志文件有正常的采集,es 能正常查询到数据,但是kibana 仪表板显示没数据,好像凭空消失了一样。于是郁闷了。第二条早上跑过来一看,咦!kibana 仪表板显示很正常嘛,只是,开始的地方比我们重启的时间间隔为8小时。这是神马原因?为什么不能实时显示?

解决方案:
这种情况,看看你的@timestamp 是不是比当前时间少了8小时 。
logstash 采集的时候,在filter 里面加上

ruby {    code => "event.timestamp.time.localtime" }

应该能搞定。

0 0
原创粉丝点击