Kibana. KQL
@protestinginfoKibana используется для мониторинга и анализа ИТ-инфраструктуры в составе Elastic Stack, в который помимо нее входят Elasticsearch и Logstash. Logstash отвечает за логирование и поставляет входящий поток данных в Elasticsearch для хранения, классификации и поиска. Kibana, в свою очередь, получает доступ к данным Elasticsearch для их визуализации в различных визуальных форматах.
У Kibana имеется свой язык запросов KQL (Kibana Query Language) - официальный источник.
С помощью этого языка можно составлять запросы, которые помогают отфильтровывать и найти необходимую информацию.
Подключение для просмотра логов
URL Kibana - http://37.46.129.245:5601/app/home#/
ЛОГИН и ПАРОЛЬ - будут даны позже, когда коллега настроит полноценно kibana (насчет сроков неизвестно).

Выбрать Kibana → Discover

Режим для KQL включен по умолчанию

Выбрать место, где необходимо проверить логи

Основные блоки для работы с логами
- Блок для запросов на языке KQL;
- Блок с выбором временного интервала (Today, This week, Last 15 minutes, Last 30 minutes, Last 1 hour, Last 24 hours, Last 7 days, Last 30 days, Last 90 days, Last 1 year);
- Блок с используемыми (выбранными) фильтрами для вывода логов;

4. Блок со списком доступных фильтров;
5. Блок вывода логов под выбранные фильтры или без них;
6. Блок фильтров по типу данных;
7. Refresh/Update

KQL
Указать курсор в строку для составления KQL запросов
Отображаются возможные ключевые атрибуты для поиска логов

Указать, например, атрибут "message" (Filter results that contain message)

Скрины из документации


Разберем примеры, поле " host" имеет тип данных "string" , при которых отображаются следующие параметры для поля строки:

Поле "geoip.ip" имеет тип данных "number", в котором отображаются следующие параметры для числового поля:

Теперь составим простой KQL-запрос
host: jekil1.fvds.ru and severity : WARN
( : ) - оператор, который отвечает за поиск совпадений
Результаты совпадений:

Следующий запрос: host: jekil1.fvds.ru and severity : WARN and message: *auth.log*
*auth.log* - (*) обозначает подстановочный знак
*auth.log* - находит любые значения, которые имеют "oauth.log" в любой позиции

exc* - находит любые значения, которые начинаются с "exc"

*exc - находит любые значения, которые заканчиваются на "exc"

Чтобы задать предложение в KQL-запросе, необходимо использовать оператор - двойные кавычки " ".
KQL-запросы не поддерживают сопоставление суффиксов, поэтому в запросах с произвольным текстом нельзя использовать оператор подстановочного знака перед фразой. Однако вы можете использовать оператор подстановочного знака после фразы.
Например, при указании следующего KQL-запроса:
message: exception=>Errno::EACCES
будет ошибка
Search Error
Expected AND, OR, end of input, whitespace but ">" found. message: exception=>Errno::EACCES -------------------^

А при указании KQL-запроса:
message: "exception=>Errno::EACCES"
будет результат совпадений:

KQL c фильтром
Добавим поле "_type" в фильтр

Результаты совпадений отображаются в виде Table или JSON

- Ввести "host: jekil1.fvds.ru and severity : WARN and message: exc*" в блоке для запросов;
- Выбрать "Today" в блоке временного интервала;
- Выбрать только "_type" в блоке используемых фильтров;
- Нажать на кнопку "Refresh/Update"
Результаты поиска:

Результаты поиска по фильтру selected fields "_type" и "path" :

Дополнительно Поле можно добавить в "Filter for value":

Дополнительная информация:
Просмотр лога в формате JSON

View single document - просмотр детального лога

Также имеются:
- операторы поиска с учетом расположения NEAR и ONEAR;
- операторы поиска синонимов WORDS;
- операторы включения и исключения "+" и "-" ;
- операторы динамического ранжирования XRANK
Из документации: "Можно объединять разные части запросов по ключевым словам с помощью открывающей скобки " ( " и закрывающей скобки " ) ". Каждой открывающей скобке " ( " должна соответствовать закрывающая скобка " ) ". Пробел до или после скобки не влияет на запрос."
Поиск логов без использования KQL
- Ввести, например, значение поля "source" = "filewatch.tailmode.handlers.create" в блок для запросов ;
- Выбрать "Today" в блоке с временным интервалом ;
- Нажать на кнопку "Refresh";
- Фильтры не выбраны.
Результат совпадений:

Также можно добавить фильтры из блока со всеми фильтрами в область с используемыми (выбранными) фильтрами.
Имеется краткий справочник по KQL.
Заключение
Данной инструкцией, опираясь на полезные источники, хотела донести знакомство как составлять KQL запросы, научить читать логи и применить эти знания в своей работе.
Буду благодарна вашей обратной связи и делитесь этой инструкцией с коллегами!
Подписывайтесь на телеграм канал @protestinginfo !
И желаю достигать свои цели!