Данные, Отправленные Из Logstash Через Плагин Эластичного Вывода, Не Отображаются В Kibana, Но Плагин Вывода Файлов Работает Нормально — Что Я Делаю Не Так?

  • Автор темы Mywork
  • Обновлено
  • 20, Oct 2024
  • #1

У меня есть конфигурация «стек ELK», и сначала я выполнял стандартную подачу системного журнала «filebeat» из logstash с помощью плагина вывода elasticsearch. Это сработало просто отлично.

Теперь я добавил входной порт TCP (с назначенным «типом» для этих данных, чтобы делать это, если [type] == «thistype» для различения в фильтрах), свой собственный фильтр grok и вывод для обоих elasticsearch со своим собственным уникальным имя индекса, имя и файл document_type. Когда данные поступают через порт TCP, они записывают правильно отформатированные данные в выходной файл, как и ожидалось в плагине вывода файла, но данные не отображаются в Kibana, когда я выбираю данный индекс. Kibana распознает индекс из моей выходной конфигурации, а также перечисляет все поля/ключи, которые я назначаю в фильтре grok; однако, опять же, данные не доступны для поиска. Но он видит имена свойств (и даже добавляет к ним само свойство propertyName "keyword"!) Данные определенно обрабатываются правильно, как я уже упоминал, они появляются в выходных файлах плагина.

Что я здесь делаю не так? Моя конфигурация следующая:

 input {

tcp {

host => "10.1.1.10"

port => 12345

type => "odata"

id => "odata"

codec => line

}
}

filter {

if [type] == "odata" {

grok {

match => { "message" => "%{QUOTEDSTRING:oid},\"%{WORD:oword1}\",\"%{IPV4:oclientip}\",\"%{DATA:otimestamp}\",%{QUOTEDSTRING:opl},%{QUOTEDSTRING:oos},%{QUOTEDSTRING:oua}" }

remove_field => "message"

}

date {

match => ["otimestamp", "YYYY-MM-dd HH:mm:ss Z"]

}

mutate {

remove_field => "otimestamp"

remove_field => "host"

remove_field => "@version"

}

}
}

output {
# the if .. is here because there are other types that are handled in this output since I centralize the input, filter, and output files to three distinct files.

if [type] == "odata" {

elasticsearch {

hosts => ["10.1.1.1:9200", "10.1.1.2:9200"]

sniffing => false

index => "odataindex"

document_type => "odatatype"

}

file {

path => "/tmp/odata_output"

}

}
}
 

Опять же, фильтр Грока в порядке; данные принимаются через TCP без проблем; и плагин вывода файлов отлично выводит интерпретированные/grokd поля. Кибана видит индекс «odataindex» и поля (такие как oid, oclientip, oua и т. д.) из фильтра grok. Он просто не возвращает никаких данных, когда я выполняю поиск.

Есть идеи? Я новичок в elastic/kibana/logstash и буду также признателен за любые советы по отладке этих вещей.

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

#elastic #logstash

Mywork


Рег
27 Apr, 2020

Тем
84

Постов
232

Баллов
712
  • 25, Oct 2024
  • #2

Будучи незнакомым с Kibana, я не знал об ограничении времени для данных при поиске/отображении по умолчанию, составляющем всего 15 минут. Входящие данные имели метку времени (@timestamp key) через плагин «дата» с исходной открытой датой, а НЕ временем события вставки через порт TCP в эластичный; таким образом, никаких данных не показывалось, и я понятия не имел, что по умолчанию отображаются только данные за последние 15 минут на основе @timestamp. Если бы я прочитал часть об ограничении времени, я бы знал. Поэтому я просто скорректировал время, чтобы вернуться на бесконечность лет назад, и увидел свои данные.

Итак, если у кого-то еще возникла эта проблема, возможно, это связано с тем, что вы создали индекс, зависящий от времени, но не нажали кнопку «время» в правом верхнем углу и не изменили временной интервал.

Именно поэтому, друзья мои, вы читаете инструкцию!

 

Gggz


Рег
01 Oct, 2014

Тем
64

Постов
201

Баллов
541
Похожие темы Дата