小强哥博客

小强哥,小强哥博客,技术大咖

Kibana中TimeStamp和日志时间不一致解决

如下图所示,在kibana中的时间和业务系统中输出的时间不一致,这样带来的问题就是日志混乱、并且不能按照时间来排序,因为按照时间排序都是一样的,平时看日志更更倾向于按照日志输出时间查看。

2018-02-24 11-45-20 的屏幕截图

原文分析:产生这个问题的主要原因是因为,使用了filebeat,filebat在将收集到的日志发送到logstash的时候会默认带一个@timestamp字段,改字段的时见统一设置成该批次的发射时间并且filebeat发射日志的时候也不是一条一条的发送的,而是一批一批发送,因此就形成了上面的结果。

解决方法:在logstash中增加一个filter,提取日志中的时间,并替换@timestamp,如下,

input{
 beats {
    host => "10.99.70.55"
    port => "8888"
  }
}

filter {
  grok {
    match => { "message" => "\[%{TIMESTAMP_ISO8601:logtime}\]" }
  }
  date {
    match => ["logtime", "yyyy-MM-dd HH:mm:ss,SSS"]
    target => "@timestamp"
  }
}

output{
  elasticsearch {
     hosts => "10.99.70.54:9200"
     index => "logstash-%{[fields][document_type]}-%{+YYYY.MM.dd}"
  }
#  file{
#    path => "/var/log/logstash/out.log"
#  }
}

结果如下,

2018-02-24 12-02-46 的屏幕截图


完没解决。

完。