Kibana中的日志不按日志时间戳排序

时间:2017-05-21 23:05:13

标签: elasticsearch logstash kibana elastic-stack filebeat

我使用Filebeat和Logstash将日志发送到Elasticsearch。我可以在Kibana中看到我的日志,但根据日志记录中的时间戳,日志没有正确排序。 我尝试为日志记录时间戳创建一个单独的字段dateTime,但看起来不可能通过该列对Kibana中的表进行排序。

Kibana screenshot

有人可以解释在这种情况下可以解决什么问题吗?

filebeat

filebeat.prospectors:
- input_type: log
  paths:
    - /var/log/app.log
  fields_under_root: true
  multiline.pattern: '^[0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}'
  multiline.negate: true
  multiline.match: after
registry_file: /var/lib/filebeat/registry

output.logstash:
  hosts: ["host_name:5044"]
  ssl.certificate_authorities: ["..."]

logstash

input {
  beats {
    port => 5044
    ssl => true
    ssl_certificate => "..."
    ssl_key => "..."
  }
}

filter {
  if [type] == "filebeat" {
    grok {
      match => { "message" => "(?<dateTime>[0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3})"}
    }
  }
}

output {
  elasticsearch {
    hosts => "elasticsearch:9200"
  }
}

1 个答案:

答案 0 :(得分:0)

此功能正是the date filter的用途。在你的grok表达式后添加:

date {
  match => [ "dateTime", "HH:mm:ss.SSS" ]
}

这会将Kibana排序的@timestamp字段设置为此字段中的值。