ELK中Kibana4中Elasticsearch的UTC时间误差八小时的处理方法

在使用ELK堆栈时,发现在Kibana4中显示的日志时间比实际提前了8小时。原因是Elasticsearch默认处理时间戳为UTC。为修正这一问题,可以在Logstash配置中利用mutate过滤器,将时间字段转换为带有+08:00偏移量的格式,确保与北京时间一致。

使用ELK组件从Kibana4中查看日志数据,以某个时间字段为timestam时发现所有时间都被自动提前了八个小时。

虽然是小问题,但是很头疼,因为作为基线的时间和实际情况有误差,那日志就没法看了。


查看Kibana4的json数据格式可以发现所有时间字符串都被Elasticsearch转换成了长整型:

"fields": {
    "@timestamp": [
      1442214581048
    ]

其source的时间值为想要的:

"@timestamp": "2015-09-14T07:09:41.048Z"

这是因为Elasticsearch在处理时间字符串时默认按UTC时间,如果没有指定额外信息的话。


因此,如果按照北京时间处理的话,就得需要加上08:00

在logstash的配置中可以使用mutate过滤器对输入Elasticsearch的时间字段做如下过滤:

  mutate{
        gsub => [
       "time", "[+]", "T"
                 ]
      } 
        mutate{
      replace => ["time","%{time}+08:00"]
      }

注意,其中T为日期和时间之间的分隔符,Elasticsearch可以识别进行处理。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值