logstash timestamp时间差8小时问题及解决

本文介绍了一种在Logstash配置中解决时间戳偏差的方法,通过调整时间偏移确保@timestamp字段与服务器时间一致,从而避免影响文件命名及后续流程。

最近在测试使用logstash将数据从redis同步到es,并且按小时生成文本,但是在使用中发现logstash中的时间与服务器时间差8小时,导致@timestamp字段中的时间不对,并且生成文本名字中的时间不对,影响后续流程处理,logstash版本6.3.2,解决方式如下,不需要修改源码:

input { 
	redis { 
		host => "127.0.0.1"
		port => "6379"
		password => "password"
		db => 0
		key => "key_test"            #队列名称
		data_type => "list"          #队列类型
		threads => 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"]
	}
}
output {
	elasticsearch {
		hosts => ["127.0.0.1:9200"]
		action => index
		index => "index_test"              #es中的索引名称
		document_id => "%{id}"             #以数据中的哪个字段做es中的_id
		document_type => "type_test"       #es中的mapping名称
		codec => json_lines
	}
	file {
        path => "/root/data/%{+yyyyMMddHH}.txt"
    }
}

logstash生成文件名中的日期是从@timestamp字段的值中获取,通过设置filter将timestamp中的时间转换成系统时间,问题解决。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值