Автор: Надежда Дудник       Содержание Введение Подключение к Kibana для просмотра логов Основные блоки для работы с логами Использование KQL Составление простого KQL-запроса Двойные кавычки в KQL-запросе KQL c фильтром "Filter by type" KQL c фильтром "Filter for value" Поиск логов без использования KQL Практика Дополнительная информация Заключение Kibana (wiki) используется для мониторинга и анализа ИТ-инфраструктуры в составе Elastic Stack, в который помимо нее входят Elasticsearch и Logstash. Logstash отвечает за логирование и поставляет входящий поток данных в Elasticsearch для хранения, классификации и поиска. Kibana, в свою очередь, получает доступ к данным Elasticsearch для их визуализации в различных визуальных форматах. У Kibana имеется свой язык запросов KQL (Kibana Query Language) - официальный источник. С помощью этого языка можно составлять запросы, которые помогают отфильтровывать и найти необходимую информацию. Перейти по URL Kibana - http://37.46.129.245:5601/app/home#/ (данной информацией поделился Евгений Сычёв -  PM и QA Lead финтех проектов, для практики поиска логов) . Ввести данные для авторизации: Логин: practice_user ‌Пароль: promirit Выбрать Kibana → Discover: Режим для KQL включен по умолчанию. Выбрать значение в Change index pattern, где необходимо проверить логи. Сперва для разбора я выберу 'logstash', а затем для разбора рассмотрим 'forum', так как логи идут от форума клана по игре Властелин колец онлайн - http://forum.free-peoples.ru/, за который отвечает также Евгений Сычёв (предупреждение: требование наличия сертификата -> довериться). Блок для ввода поиска логов с использованием 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); Блок с выбранными фильтрами для вывода логов ("Selected fields"); Блок с доступными фильтрами ("Available fields"); Блок результатов поиска логов под выбранные фильтры или без них; Блок фильтров по типу данных "Filter by type"; Кнопки "Refresh / Update". Указать курсор в строку для составления KQL запросов. Отображаются возможные ключевые атрибуты для поиска логов. Указать, например, атрибут "message" (Filter results that contain message). Скриншоты из документации про описание основных параметров. Разберем примеры, поле "host" имеет тип данных "string", при которых отображаются следующие параметрыдля поля строки: Поле "geoip.ip" имеет тип данных "number", в котором отображаются следующие параметры для числового поля: ( : ) - оператор, который отвечает за поиск совпадений. Результаты совпадений: *auth.log*, где (*) обозначает подстановочный знак. *auth.log* - находит любые значения, которые имеют "oauth.log" в любой позиции exc* - находит любые значения, которые начинаются с "exc". Можно использовать оператор подстановочного знака после фразы. *exc - находит любые значения, которые заканчиваются на "exc". KQL-запросы не поддерживают сопоставление суффиксов, поэтому в запросах с произвольным текстом нельзя использовать оператор подстановочного знака перед фразой.  Чтобы задать предложение в KQL-запросе, необходимо использовать оператор -  двойные кавычки " ". Например, при указании следующего KQL-запроса:  будет ошибка: А при указании KQL-запроса с кавычками: будет следующий результат совпадений: Хочу отметить, что двойные кавычки очень нужны при поиске логов. Добавить поле "_type" в фильтр через "Filter by type": Результаты поиска: Результаты поиска по фильтру selected fields, выбрав "_type" и "path": Дополнительно, поле "host" можно добавить в "Filter for value": Благодарю @Kinskiза полезный комментарий. Обратите внимание на скриншоте примера 3 имеется ссылка "Edit as Query DSL" (где DSL - Domain Specific Language), при нажатии на нее открывется окно ввода, которое позволяет вставить JSON запрос в формате Elastic и даёт возможность, например, осуществлять фильтрацию по regexp. Например, согласно документации Дать название фильтру как "Severity" и нажать на кнопку "Save". Результат совпадений будет следующим: Значение "WARN" подсвечивается желтым цветом, так как указано в фильтре по значениям в правом верхнем углу.  Результаты поиска совпадений: Перейти по ссылке форума клана по игре Властелин колец онлайн - https://forum.free-peoples.ru/. (зайти на свой страх и риск -> 'Advanced'); Ввести невалидные "Имя пользователя:" = "test" и "Пароль:" = "test" на странице форума; Нажать на кнопку "Вход"; Зафиксировать время; Перейти по ссылке http://37.46.129.245:5601/app/home#/  -> пройти авторизацию -> выбрать "Discover" -> выбрать "forum" в Change index pattern; Ввести значение "login" в строке запроса; Нажать на "Refresh"; Убедиться, что найдены результаты и просмотреть поле "message"; Нажать на ссылку "Регистрация" на сайте https://forum.free-peoples.ru/ucp.php?mode=register . Отображается ошибка на новой странице; Зафиксировать время; Найти лог с текстом "mode=register" в Kibana; Выбрать показ лога в формате JSON; Убедиться, что найдены логи с ошибкой. Просмотр лога в формате JSON. View single document - просмотр детального лога. Также имеются: операторы поиска с учетом расположения NEAR и ONEAR; операторы поиска синонимов WORDS; операторы включения и исключения "+" и "-" ; операторы динамического ранжирования XRANK Из документации: "Можно объединять разные части запросов по ключевым словам с помощью открывающей скобки " ( " и закрывающей скобки " ) ". Каждой открывающей скобке " ( " должна соответствовать закрывающая скобка " ) ". Пробел до или после скобки не влияет на запрос." Также можно добавить фильтры из блока со всеми фильтрами в область с используемыми (выбранными) фильтрами. Имеется краткий справочник по KQL. Обычно я ищу логи в Kibana по уровню логирования ERROR, а также указывая необходимые данные по системе. Дополнительно можно искать логи по sessionId, Id, UUID, сообщениям от ответа сервера, данным запроса. Данной инструкцией, опираясь на полезные источники, хотела донести знакомство как составлять KQL-запросы, научить читать логи и применить эти знания в своей работе. Благодарю за прочтение. С уважением,  Надежда Дудник (protestinginfo), главный инженер по тестированию в финтехе и ментор по тестированию ПО. И желаю достичь своей цели!  Главный инженер по тестированию