ELK:LogStash写入ES索引建立差8个时区问题

一、版本信息

ElasticSearch版本:elasticsearch-5.4.2.rpm

Kibana版本:kibana-5.4.2-linux-x86_64.tar.gz

logstash版本:logstash-2.3.4.tar.gz(为了适配kafka0.8.2.2版本)

二、时区简介

在这里插入图片描述
地球总是自西向东自转,东边总比西边先看到太阳,东边的时间也总比西边的早。东边时刻与西边时刻的差值不仅要以时计,而且还要以分和秒来计算。
为了照顾到各地区的使用方便,又使其他地方的人容易将本地的时间换算到别的地方时间上去。1884年的国际经度会议规规定将地球表面按经线从南到北划分为24个时区,并且规定相邻区域的时间相差1小时。当人们跨过一个区域,就将自己的时钟校正1小时(向西减1小时,向东加1小时),跨过几个区域就加或减几小时。

1、时区含义

UTC(Universal Time Coordinated世界协调时间),又叫做0时区

CST(China Standard Time北京时间),又叫做东8区(CST= GMT + 8 =UTC + 8 )

PDT(美国时区)

GMT,英国(格林尼治天文台旧址) 的格林尼治标准时间,也就是世界时。GMT的正午是指当太阳横穿格林尼治子午线(本初子午线)时的时间。但由于地球自转不均匀不规则,导致GMT不精确,现在已经不再作为世界标准时间使用。UTC与GMT基本上等同,误差不超过0.9秒。

2、UNIX时间戳

计算机中的UNIX时间戳,是以GMT/UTC时间
「1970-01-01T00:00:00」 为起点,到具体时间的秒数,不考虑闰秒。

3、ELK时区介绍

ElasticSeaerch,Logstash 默认都是UTC时区,Kibana则是根据本地浏览器显示本地时区,已经对显示做了转换。Kibana时区修改如下图
在这里插入图片描述

默认为浏览器时间,现在改为UTC时间
在这里插入图片描述

4、logstash入库差8小时问题(延迟8小时创建索引)

由于我们处于东8区,logstash搬运ES的时候当我们到8点后才会发生索引切割,导致我们这显示今天8点的日志存入了昨天的索引。

如何解决这个问题,首先我们看下logstash获取时间的代码
进入目录。

cd /usr/local/logstash-2.3.4/vendor/bundle/jruby/1.9/gems/logstash-core-event-2.3.4-java/lib/logstash

vim timestamp.rb

我们可以看到时间默认初始化为utc的时区在这里插入图片描述

修改后的样式
在这里插入图片描述

修改后的样式

在这里插入图片描述

UTC = org.joda.time.DateTimeZone.forID(“UTC”)
修改为:
UTC = org.joda.time.DateTimeZone.getDefault()

vim string_interpolation.rb

显示格式也为utc格式
在这里插入图片描述

修改后的样式
在这里插入图片描述

配置文件需要添加:

filter {
	ruby {
        code => "event.timestamp.time.localtime"
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值