Kibana. KQL

Kibana. KQL

@protestinginfo

Kibana используется для мониторинга и анализа ИТ-инфраструктуры в составе Elastic Stack, в который помимо нее входят Elasticsearch и Logstash. Logstash отвечает за логирование и поставляет входящий поток данных в Elasticsearch для хранения, классификации и поиска. Kibana, в свою очередь, получает доступ к данным Elasticsearch для их визуализации в различных визуальных форматах.

У Kibana имеется свой язык запросов KQL (Kibana Query Language) - официальный источник.

С помощью этого языка можно составлять запросы, которые помогают отфильтровывать и найти необходимую информацию.

Подключение для просмотра логов

 URL Kibanahttp://37.46.129.245:5601/app/home#/

ЛОГИН и ПАРОЛЬ - будут даны позже, когда коллега настроит полноценно kibana (насчет сроков неизвестно).

Welcome home

Выбрать Kibana → Discover

Kibana → Discover

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

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

например, logstash*

Основные блоки для работы с логами

  1. Блок для запросов на языке KQL;
  2. Блок с выбором временного интервала (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);
  3. Блок с используемыми (выбранными) фильтрами для вывода логов;
Filter by type

4. Блок со списком доступных фильтров;

5. Блок вывода логов под выбранные фильтры или без них;

6. Блок фильтров по типу данных;

7. Refresh/Update


Информация про основные блоки

KQL

Указать курсор в строку для составления KQL запросов

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

Search

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

Отображение ключевых атрибутов

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

Допустимые операторы свойств для ограничений свойств
Логические операторы, поддерживаемые в KQL

Разберем примеры, поле " 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 - находит любые значения, которые заканчиваются на "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

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

Результаты поиска:

Добавление фильтра по полю _type

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

Добавление фильтра по полям _type и path

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

Отображается значение выбранного поля в фильтре в левом верхнем углу

Дополнительная информация:

Просмотр лога в формате JSON

Просмотр лога в формате JSON

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

Просмотр детального лога

Также имеются:

Из документации: "Можно объединять разные части запросов по ключевым словам с помощью открывающей скобки " ( " и закрывающей скобки " ) ". Каждой открывающей скобке " ( " должна соответствовать закрывающая скобка " ) ". Пробел до или после скобки не влияет на запрос."


Поиск логов без использования KQL

  1. Ввести, например, значение поля "source" = "filewatch.tailmode.handlers.create" в блок для запросов ;
  2. Выбрать "Today" в блоке с временным интервалом ;
  3. Нажать на кнопку "Refresh";
  4. Фильтры не выбраны.

Результат совпадений:

Поиск логов без использования KQL

Также можно добавить фильтры из блока со всеми фильтрами в область с используемыми (выбранными) фильтрами.


Имеется краткий справочник по KQL.

Заключение

Данной инструкцией, опираясь на полезные источники, хотела донести знакомство как составлять KQL запросы, научить читать логи и применить эти знания в своей работе.

Буду благодарна вашей обратной связи и делитесь этой инструкцией с коллегами!

Подписывайтесь на телеграм канал @protestinginfo !

И желаю достигать свои цели!

Report Page