Logstash将日志产生时间替换@timestamp,并保留日志收集时间到其他字段

1.需求

EFK日志系统采集日志时,采集时间日志真正生成的时间会有差异,开发一般需要根据日志真正的生成时间在kibana中进行查询

2.解决方案

将收集到的日志的时间抽取出来,替换默认的@timestamp字段(将@timestamp字段赋值给其他字段用来记录)

 

logstash的配置(测试环境):

filter {
    grok {
      match => {  "message" => "(\s*%{TIMESTAMP_ISO8601:timestamp}\s*\[.*\]\s*%{LOGLEVEL:loglevel}.*%{UUID:traceId})"  }
    }
    ruby {
        code => "event.set('collection_time', event.get('@timestamp'))"
    }
    date {
        match => ["timestamp", "yyyy-MM-dd HH:mm:ss.SSS"]
        target => "@timestamp"
    }
    mutate {
      remove_field => [ "host","timestamp" ]
    }
}

 

注意:@timestamp被赋值后会比当前时间少8h,所以需要在ruby代码中设置

code => "event.set('collection_time', event.get('@timestamp')+8*60*60)"

注意:生产环境和测试环境输出日志的精度可能不一样

比如,生产环境的日志精度最后是四位,那么date插件的配置如下:

match => ["timestamp", "yyyy-MM-dd HH:mm:ss.SSSS"]

 

 

 

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值