2017-02-09 40 views
0

Timestamps don`t match У меня есть и ELK (Elasticsearch, Logstash и Kibana) экземпляр и Filebeat отправляют журналы с других компьютеров, и я заметил, что журналы отображаются в Kibana в другом порядке, что они прибыли на сервер (как вы можете увидеть в прилагаемом рисунке), например, это то, что показано в Kibana, второй столбец kibana метка времени и третий столбец является временная отметка:Сортировка журналов по меткам времени в Кибане

February 9th 2017, 11:53:11.714 11:53:04,904 
February 9th 2017, 11:53:11.714 11:53:05,579 
February 9th 2017, 11:53:11.714 11:53:05,581 
February 9th 2017, 11:53:11.714 11:53:05,591 
February 9th 2017, 11:53:11.714 11:53:04,441 
February 9th 2017, 11:53:11.714 11:53:05,589 

Что я вижу в журнале файл:

11:53:04,441 
11:53:04,904 
11:53:05,579 
11:53:05,581 
11:53:05,589 
11:53:05,591 

Есть ли возможность увидеть журналы в Kibana в том же порядке, что и на сервере? Я искал его, но я `t didn вижу вопрос, который относиться к этой теме, но я видел, что это может быть изменение в конфигурационный файл Logstash 10-системного журнала-filter.conf, это мое:

filter { 
    if [type] == "syslog" { 
    grok { 
     match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" } 
     add_field => [ "received_at", "%{@timestamp}" ] 
     add_field => [ "received_from", "%{host}" ] 
    } 
    syslog_pri { } 
    date { 
     match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] 
    } 
    } 
} 

Заранее спасибо.

ответ

0

Я думаю, что это потому, что вы не дали timestamp, на которой событие должно быть показано в Kibana, когда вы создаете индекс в Kibana. Вы можете сделать что-то вроде этого:

mutate { 
    add_field => { "received_time" => "%{syslog_timestamp}" } 
    remove_field => ["syslog_timestamp"] <-- since you'll be using the recieved_time field here after 
} 
date { 
    match => [ "received_time", "MMM d HH:mm:ss", "MMM dd HH:mm:ss"] 
    target => "received_time" 
    locale => "en" 
    timezone => "UTC" 
} 

Вышеприведенное является просто образцом, чтобы вы могли воспроизводить. Примечание, что я предполагаю, что syslog_timestamp как ваш сервер времени, который вы упомянули в вашем Q.

Так что, когда вы создаете новый индекс в Kibana, вам будет предложено выбрать время поля имя для фильтрации событий. То, что делает Kibana, это отображение событий на основе времени браузера, если вы не выберете его из раскрывающегося списка.

Так как только вы обработать logstash конф вы должны быть в состоянии видеть поле received_time, который мы создали в конф в выпадающем списке. Таким образом, вам просто нужно выбрать его из drop down, чтобы Kibana показывал события на основе выбранного вами timestamp. Также убедитесь, что, что у вас нет часовой пояс вопросов. Если вы используете UTC, пожалуйста, измените часовой пояс браузера, также от Дополнительные настройки> dateFormat: tz в Kibana. Надеюсь, поможет!

+0

Я проверил метку времени между сервером ELK и одним из серверов, который отправляет журналы, и они немного разные, может быть, это проблема? –

+0

Какая разница во времени между двумя из них? Это после того, что вы сделали в соответствии с моим ответом? – Kulasangar

+0

около 2 минут –