Сопоставьте отсутствующие журналы LogStash с правильной датой на панели инструментов Kibana.

TL;ДР; Сопоставьте отсутствующие журналы из LogStash на информационной панели Kibana с их правильной датой и временем

У меня настроен домен Amazon ElasticSearch (который включает в себя как сервис ElasticSearch, так и информационную панель Kibana). Моим источником журналов является среда Beanstalk. Я установил FileBeat внутри этой среды, которая отправляет журналы в EC2, настроенный с помощью LogStash. Затем сервер LogStash отправит журналы на конечную точку домена ES.

Какое-то время это происходило без проблем, но когда я вчера проверил, я увидел, что журналы не отправлялись в ES в течение примерно 4 дней. Я исправил это, и текущие журналы передаются в порядке. Отсутствующие журналы все еще хранятся на сервере LogStash.

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

Пример даты и времени:

2021-05-20 19:44:34.700+0000

Ниже приведена моя конфигурация logstash.conf. (Пожалуйста, дайте мне знать, если я также должен опубликовать свою конфигурацию FileBeat).

input {
        beats {
            port => 5044
        }
}

filter {
  date {
    match => [ "logdate", "yyyy-MM-dd HH:mm:ss.SSS+Z" ]
  }
  mutate {
    split => { "message" => "|" }
    add_field =>  { "messageDate" => "%{[message][0]}" }
    add_field =>  { "messageLevel" => "%{[message][1]}" }
    add_field =>  { "messageContextName" => "%{[message][2]}" }
    add_field =>  { "messagePID" => "%{[message][3]}" }
    add_field =>  { "messageThread" => "%{[message][4]}" }
    add_field =>  { "messageLogger" => "%{[message][5]}" }
    add_field =>  { "messageMessage" => "%{[message][6]}" }
  }
}
output {
  amazon_es {
    hosts => ["hostname"]
    index => "dev-%{+YYYY.MM.dd}"
    region => "region"
    aws_access_key_id => "ackey_id"
    aws_secret_access_key => "ackey"
  }
}

введите здесь описание изображения


person Sandun    schedule 25.05.2021    source источник


Ответы (1)


Используйте фильтр date для анализа даты. содержится в сообщении. Это установит [@timestamp], а затем событие появится в правильном сегменте в кибане.

person Badger    schedule 25.05.2021
comment
Привет, спасибо, я попробовал метод, упомянутый в данной статье, и добавил раздел «дата» внутри «фильтра», но я все еще не вижу отсутствующие журналы с их правильной датой. Я обновил свой вопрос с этой новой конфигурацией. Вы предложили этот метод, чтобы работать только с будущими журналами? - person Sandun; 02.06.2021
comment
Изменение конфигурации logstash не изменит никаких документов, уже проиндексированных в elasticsearch, это повлияет только на те документы, которые logstash будет индексировать в будущем. - person Badger; 02.06.2021
comment
Значит, нельзя установить правильную дату для уже пропущенных журналов? - person Sandun; 03.06.2021
comment
Вам нужно будет снова передать их через logstash и переиндексировать. - person Badger; 03.06.2021