一、问题描述
服务器当前时间为:2022年 06月 28日 星期二 11:24:22 CST
而logstash解析的时间为2022-06-28T03:15:25.545Z
与实际时间相差8h
一、解决办法:
需改logstash的配置文件:
原理就是:定义一个中间变量timestamp,值设置为当前@timestamp值+8h;然后将timestamp的值再赋给@timestamp,最后再删除timestamp。
filter{
grok{
match => {"message" => "%{COMBINEDAPACHELOG}" }
}
ruby {
code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)"
}
ruby {
code => "event.set('@timestamp',event.get('timestamp'))"
}
# 配合上面处理timestamp少8h的问题
# mutate {
# remove_field => ["timestamp"]
# }
mutate{
# 移出特定字段
remove_field => ["host","mac","timestamp"]
}
三、结果展示
OK,时间已经变为正常时间。
ES里接收的数据也正常了: