Есть ли опыт настройки фильтров в Kibana
Что проверяют
Умеете ли вы сами найти в логах причину бага, а не приходить к разработчику со скриншотом ошибки. Следом просят показать, как найти все ошибки конкретного пользователя за последний час или отследить запрос через несколько сервисов.
Как отвечать
Отвечайте своим примером: какие логи, какая задача, что нашли. Технический каркас:
- Discover и data view: выбираете data view (раньше index pattern) нужного сервиса и окружения, выставляете интервал времени;
- строка запроса KQL:
log.level: "error" and service.name: "payments" and not http.response.status_code: 404. Естьand,or,not, диапазоны>=, звёздочка для шаблонов. В той же строке можно переключиться на Lucene; - фильтры-плашки: добавляются кнопкой или кликом по значению поля в документе. Их можно закрепить, чтобы они сохранялись при переходе между приложениями, временно выключить или инвертировать;
- trace id: главный приём для QA. Берёте
trace.idилиrequest_idиз ответа или заголовка и видите путь запроса по всем сервисам; - сохранение: saved search и дашборды, чтобы повторяющаяся проверка не собиралась заново.
В баг-репорт кладите не скриншот, а ссылку на Discover с фильтрами и интервалом плюс точный trace id. Если с Kibana вы не работали, скажите честно и опишите опыт с аналогом (Grafana Loki, Graylog, Sentry): логика фильтрации по полям и времени та же, интерфейс осваивается за пару дней.
Где спотыкаются
Пишут в строку поиска свободный текст вроде error и получают тысячи совпадений по всем полям. Фильтр по конкретному полю быстрее и точнее.
Сверяют время из текста лога, записанное в UTC, с временем в интерфейсе, которое Kibana по умолчанию показывает в поясе браузера. В итоге смотрят не тот интервал, и событие «пропадает».
Не понимают, почему фильтр по полю не находит точную фразу или не строит визуализацию. Поле типа text разбито на слова, а точное совпадение и агрегации работают по keyword, в динамическом маппинге это соседнее поле с суффиксом .keyword.