在使用Logstash中的output为elasticsearch时,有的时候我们会在index name中引用时间戳,如:index => "wyh_index_%{+YYYY.MM.dd}",但是elasticsearch中默认的时区是UTC的,在业务需求中想要显示成别的时区,在网上找到了一种转换时区的方式:
input{
file{
path => "/usr/local/.../test-logstash.txt"
start_position => "/beginning"
since_db => "/dev/null"
}
}
filter{
date{
match => ["@timestamp","yyyy-MM-dd HH:mm:ss Z"]
timezone => "EST" #指定要转换的时区
}
ruby{
code => "event.set('est_time', event.get('[@timestamp]').time.localtime.strftime('%Y.%m.%d_%H:%M'))" #将转换后的时间set到一个字段中
}
}
output{
elasticsearch{
hosts => ["xxxxxxx:9200"]
index => "test_index_%{est_time}" #引用转换后的日期
}
}