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

最近在测试使用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中的时间转换成系统时间,问题解决。

你可能感兴趣的:(logstash,logstash处理时差8小时,logstash,redis数据导入es)