我使用Filebeat和Logstash将日志发送到Elasticsearch。我可以在Kibana中看到我的日志,但根据日志记录中的时间戳,日志没有正确排序。
我尝试为日志记录时间戳创建一个单独的字段dateTime
,但看起来不可能通过该列对Kibana中的表进行排序。
有人可以解释在这种情况下可以解决什么问题吗?
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"
}
}
答案 0 :(得分:0)
此功能正是the date
filter的用途。在你的grok表达式后添加:
date {
match => [ "dateTime", "HH:mm:ss.SSS" ]
}
这会将Kibana排序的@timestamp
字段设置为此字段中的值。