一、问题描述
服务器当前时间为: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里接收的数据也正常了: