Как реализовано логирование в Kibana и откуда берутся данные
Что проверяют
Понимает ли кандидат, что Kibana это только интерфейс поверх Elasticsearch, и умеет ли проследить весь путь записи от приложения до дашборда. Для QA важна практическая часть: как найти логи своего прогона и почему их иногда не видно.
Как отвечать
Сначала главное: Kibana ничего не хранит. Данные лежат в Elasticsearch, Kibana читает их через Data View (раньше это называлось index pattern) и рисует поиск, графики и дашборды.
Типовой путь записи:
- Приложение пишет лог, желательно структурированным JSON, в stdout или файл. Плоская строка тоже поедет, но её придётся парсить.
- Сборщик забирает:
FilebeatилиElastic Agent, в Kubernetes часто Fluent Bit. Он же добавляет метаданные: имя пода, namespace, хост, окружение. - Обработка: либо
Logstash(фильтрыgrok,dissect, мутации), либо ingest pipeline на стороне Elasticsearch. Logstash не обязателен, Beats умеет слать напрямую, и в новых стеках его часто нет. - Индексация в Elasticsearch, обычно в data stream с ротацией по времени.
- Kibana: Discover для поиска, KQL для фильтров, дашборды для агрегатов.
Источники данных не ограничены логами приложений: nginx и ingress, системные логи, аудит БД, метрики через Metricbeat, трейсы через APM.
Что на этом вопросе выделяет QA:
- Корреляция. Без
trace_idилиrequest_id, проброшенного через все сервисы, разбор бага превращается в угадывание. В Discover запрос видаtrace_id: "abc123" and service.name: *собирает всю цепочку. - Задержка. Лог не появляется мгновенно: буфер сборщика плюс refresh interval индекса (по умолчанию около секунды). Секунды это норма, минуты это уже повод проверить пайплайн.
- Retention. ILM удаляет старые индексы, и логи прогона недельной давности могут физически не существовать. Это надо знать до того, как заводить баг «логи пропали».
- Типичные причины «логов нет»: не тот диапазон времени (самая частая), не тот Data View, поле не проиндексировано как нужно, приложение пишет в другой поток вывода.
Хорошая практика: в баг-репорт класть не скриншот, а ссылку на Discover с уже выставленными фильтром и временным окном.
Где спотыкаются
Говорят «логи хранятся в Kibana» и не могут развести роли Elasticsearch, сборщика и интерфейса. Второе: не объясняют, почему свежая запись не видна, хотя причина почти всегда в диапазоне времени или в задержке доставки.