elasticsearch 东八区问题

搭建ELK环境导入的数据发现,@timestamp时间永远比nginx日志里面的文件记录的时间少了8小时,比如日志文件里面一行记录,设置的字段时间为2017-06-22 09:33:26,但是导入到es里面时间变成"@timestamp": "2017-06-22T01:33:26.000Z",少了整整8个小时,但是kibana显示图表的时候却是没有。后来查资料知道这是es设置的东八区问题,kibana会根据浏览器国家自动添加时间,所以我们看到kibana上显示是正常的。

解决办法如下:

1.在查询条件上设置时区

QueryBuilders.rangeQuery("@timestamp").format("yyyy-MM-dd HH:mm:ss.SSS").gte("2017-06-22 00:00:00.000").lte("2017-06-22 23:59:59.999").timeZone("Asia/Shanghai")

Asia/Shanghai也可以替换成+8:00

2.logstash filter的时候添加字段,比如添加importtime字段


 grok {
         match => { "message" => "\[visit_time:(?<ctime>.*)\],\[uid:(?<uid>.*)\],\[ip:(?<ip>.*)\],\[city_id:(?<cityid>.*)\],\[event:(?<event>.*)\],\[typeOnename:(?<typeOnename>.*)\],\[typeOnevalue:(?<typeOnevalue>.*)\],\[typetwoname:(?<typetwoname>.*)\],\[typetwovalue:(?<typetwovalue>.*)\],\[channel_type:(?<channel_type>.*)\],\[aid:(?<aid>.*)\],\[ticket_group_id:(?<ticket_group_id>.*)\],\[order_sn:(?<order_sn>.*)\],\[extends:(?<extends>.*)\]" }
	 add_field => [ "importtime", "%{@timestamp}" ]
    }
    
    date {
        match => ["ctime", "YYYY-MM-dd HH:mm:ss"]
        target => "@timestamp"
    }

    ruby {
            code => "event.set('importtime', event.get('@timestamp').time.localtime + 8*60*60)"
    }
用字段方法过滤后,在es里面会发现每行记录多了个importtime字段

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值