Информация, отправленная из Logstash через эластичный вывод, не отображается в Kibana, но вывод файла работает нормально - что я делаю не так?
У меня есть конфигурация "ELK stack", и сначала я выполнял стандартную подачу системного журнала 'filebeat' из logstash с помощью выходного плагина asticsearch. Работало просто отлично.
Теперь я добавил входной порт TCP (с назначенным "типом" для этих данных, чтобы сделать, если [type] == "thistype" для дифференцирования в фильтрах), свой собственный фильтр grok и вывод на оба элемента упора поиска с его собственным уникальным имя индекса и имя_файла_документа и файл. Когда данные поступают через порт TCP, они записывают правильно отформатированные данные в выходной файл, как и ожидалось в плагине вывода файла, но в Кибане при выборе данного индекса данные не отображаются. Kibana распознает индекс по моей выходной конфигурации, а также перечисляет все поля / ключи, которые я назначаю в фильтре grok; однако, опять же, нет данных для поиска. Данные определенно обрабатываются правильно, как я уже упоминал, в выходных файлах плагина.
Что я здесь не так делаю? Моя конфигурация выглядит следующим образом:
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"
}
}
}
Опять же, фильтр Grok в порядке; данные попадают через tcp просто отлично; и плагин вывода файлов прекрасно выводит интерпретированные поля / grokd. Кибана видит индекс "odataindex" и поля (такие как oid, oclientip, oua и т. Д.) Из фильтра Грока. Он просто не возвращает никаких данных, когда я делаю поиск.
Есть идеи? Я новичок в astic/kibana/logstash и буду признателен за советы по отладке этих вещей.
Заранее спасибо!
1 ответ
Будучи незнакомым с Кибаной, я не знал о временном ограничении данных при поиске / отображении по умолчанию всего 15 минут. Входящие данные были помечены меткой времени (ключ @timestamp) через плагин date с исходной датой открытия, а НЕ временем события вставки через порт TCP в эластичный; таким образом, никакие данные не показывались, и я понятия не имел, что по умолчанию отображались только данные за последние 15 минут, основанные на @timestamp. Если бы я прочитал часть о временном ограничении, я бы знал. Поэтому я просто скорректировал время, чтобы вернуться на бесконечные годы и увидел свои данные.
Так что, если у кого-то еще есть эта проблема, это возможно потому, что вы создали зависимый от времени индекс и не нажали кнопку "время" в правом верхнем углу и не изменили временной интервал.
Вот почему, друзья мои, вы читаете инструкцию!