2017-05-21 86 views
0

我使用Filebeat和Logstash將日誌發送到Elasticsearch。我可以在Kibana中看到我的日誌,但根據日誌記錄中的時間戳,日誌未正確排序。 我試圖爲日誌記錄時間戳創建一個單獨的字段dateTime,但它看起來不可能按該列對Kibana中的表進行排序。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" 
    } 
} 

回答

0

這一功能正是the date filter用於製造。你神交表達後補充一點:

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

這將設置@timestamp字段Kibana通過各種可在此字段的值。

+0

謝謝,但它沒有覆蓋'@ timestamp'值,它只是用實際的日誌時間戳創建了'dateTime'字段。 順便說一句,我怎麼能添加月份,日期和年份值的實際日誌時間戳? – rw412