logstash 读取MySQL数据到elasticsearch 相差8小时解决办法

文章讲述了在从MySQL同步数据到Elasticsearch(ES)时,由于Logstash默认使用UTC时间和ES存储时间的差异,导致时间戳显示少8小时。解决方案是在同步脚本中添加Ruby代码将时间转换为本地时区,然后在Kibana中查询时时间戳显示正确。然而,日志时间仍然有8小时偏差,作者寻求进一步解决办法。
摘要由CSDN通过智能技术生成
  1. 问题复现:

从MySQL同步过来的数据到es中@timestamp会少8小时

  1. 问题原因:

查了资料发现,这是由于logstash在获取时区的时候,默认获取的是UTC默认时间,同时elasticsearch在创建索引的时候,统一使用UTC时间,因为中国使用的为东8时区,源数据和实际创建的索引数据会相差8个小时。

  1. 解决方案:

在你写的同步脚本中添加

filter {
    ruby {
        code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)"
    }
    ruby {
        code => "event.set('@timestamp',event.get('timestamp'))"
    }
    mutate {
        remove_field => ["timestamp"]
    }
}

重新执行传输命令:./bin/logstash -f 配置文件目录

回到kibana上查询数据,发现时间戳合适了。

  1. 残留问题:

回头看日志时间还是差八小时,有没有可以解决的办法,我们评论区见

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北凉-徐凤年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值