Как просмотреть строки журнала в группе/сеансе в пользовательском интерфейсе Discover Kibana?

Я использую elasticsearch + kibana + logstash + filebeat последнюю версию 6.4.1 для сбора и анализа веб-журналов. Столбцы моего журнала выглядят так:

timestamp, http_method, request_uri, http_status, host, user_agent, client_ip, client_port

Я настроил ELK для отображения своих журналов в Kibana. Но теперь я хочу видеть свои журналы в сеансах. Я надеюсь, что строки журнала можно сгруппировать по сеансам и отобразить на странице Kibana Discover. В моем сценарии строки журнала с одним и тем же (host, client_ip) принадлежат одному и тому же сеансу.

Я надеюсь, что пользовательский интерфейс Discover с сеансом/группировкой может отображать все сеансы. И я все еще могу видеть строки журнала внутри одного сеанса, когда я нажимаю на него.

Возможно ли это сделать? Или как лучше всего это сделать? Спасибо.


person Yang Luo    schedule 05.11.2018    source источник
comment
Вы можете использовать фильтры для этого случая.   -  person waleed ali    schedule 05.11.2018
comment
@waleedali Я думаю, что фильтры могут отфильтровывать только одну группу за раз? Я хочу сгруппировать все элементы и увидеть конечный результат.   -  person Yang Luo    schedule 05.11.2018
comment
Кстати, я нашел идеальное решение для своей проблемы, ответ здесь: stackoverflow.com/questions/53201662/   -  person Yang Luo    schedule 22.11.2018


Ответы (2)


Discover показывает записи журнала в виде необработанных документов по мере их хранения, вы можете сохранить поиск в Discover, даже ничего не фильтруя. С помощью Vizualize вы можете создавать виджеты, они могут агрегировать данные, такие как сеансы. Обычно я делаю один или два визуальных построителя для таймлайнов и таблицу данных для (request_uri, host, user_agent, client_ip) и круговую диаграмму для http_status. С помощью этих изображений вы можете создать информационную панель и включить результаты поиска из Discover. На этой панели вы можете искать и фильтровать, и если вы добавите поиск из обнаружения, на панели будут отображаться необработанные данные для каждого из них. Я использую обнаружение только после добавления новых индексов.

https://www.elastic.co/guide/en/kibana/current/visualize.html

https://www.elastic.co/guide/en/kibana/current/dashboard.html

Если вы действительно хотите, чтобы индекс содержал host/client_ip в качестве агрегата, вы должны сгруппировать данные, прежде чем сохранять их в elasticsearch. Приборная панель звучит как лучшая идея.

РЕДАКТИРОВАТЬ: Как описал Валид Али, визуализация может выглядеть так

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

person sleepyhead    schedule 05.11.2018
comment
Спасибо за ответ. Я создал таблицу данных и агрегировал данные на основе поля. Но как показать содержимое логов в таблице данных? Я могу показывать только такие индикаторы, как среднее, максимальное, минимальное и т. д. Я хочу видеть все журналы внутри одного сеанса, точно так же, как таблица Discover, но просто сгруппированные по паре (host, client_ip). - person Yang Luo; 08.11.2018

как предложил @sleepyhead, Discover не для той цели, которую вы ищете. Вы можете создать Datatable из Visualize в Kibana (что, я думаю, вы уже сделали).

Затем в разделе Агрегации сегментов вы можете выбрать Разделить строки и выбрать Terms Агрегацию. Выберите там нужное поле (хост). Затем добавьте подсегмент и снова выберите Разделить строки, затем Terms Агрегация и выберите другое поле (client_ip).

Это создаст одну строку в вашей таблице данных для каждого уникального набора обоих полей (хост, client_ip), что вам и нужно, насколько я понял ваш вопрос и комментарий.

По умолчанию будет только один столбец (Количество), но вы, очевидно, можете добавить больше столбцов, добавив Агрегации показателей.

person waleed ali    schedule 08.11.2018