Kibana и применения Elasticsearch

Смотрим на Kibana как окно в данные и разбираем три главных сценария, ради которых ставят Elasticsearch.

Kibana — веб-интерфейс к Elasticsearch для исследования данных, построения дашбордов и выполнения запросов без написания кода.

Что умеет Kibana

Elasticsearch отвечает по API, но смотреть на сырой JSON неудобно. Kibana даёт визуальную надстройку:

  • Discover — листать и фильтровать документы, искать по тексту в интерактиве;
  • Dashboards — собирать графики, гистограммы, карты из агрегаций;
  • Dev Tools — консоль, где можно слать те же запросы к ES, что мы писали через curl, с подсказками;
  • визуализации — построенные поверх агрегаций (бакеты → оси, метрики → значения).

Для разработчика особенно ценны Dev Tools: это удобнее, чем curl, и помогает быстро отлаживать запросы.

Применение 1: анализ логов и наблюдаемость

Самый массовый сценарий. Логи со всех серверов стекаются в ES (через Beats/Logstash), а в Kibana видно: всплески ошибок, медленные запросы, аномалии — в реальном времени. Когда что-то падает в проде, инженеры идут именно в Kibana искать первопричину. Полнотекстовый поиск по сообщениям ошибок + агрегации по времени и сервисам — идеальный инструмент для этого.

Применение 2: поиск по сайту и приложению

Поиск товаров в магазине, статей в базе знаний, объявлений на доске — классика. Здесь работают всё, что мы изучили: match с анализом, релевантность BM25, fuzzy для опечаток, highlight для сниппетов, автодополнение, фасеты (агрегации terms для фильтров «бренд», «цена», «категория»).

Применение 3: аналитика в реальном времени

Метрики, события, поведение пользователей: ES быстро агрегирует миллионы записей и отдаёт срезы. Дашборды бизнес-метрик, мониторинг продукта, security-аналитика (SIEM) — всё это строится на агрегациях поверх потока документов.

Как работает под капотом

Kibana — это отдельное веб-приложение, которое само не хранит данные: оно ходит в Elasticsearch по тому же REST API. Каждая визуализация под капотом — это поисковый запрос с агрегациями. Когда вы двигаете фильтр времени на дашборде, Kibana формирует новый запрос с range по полю даты и date_histogram и заново спрашивает ES. Поэтому «реальное время» здесь — это просто частые быстрые запросы к свежепроиндексированным данным.

Частые ошибки

  • Считать Kibana хранилищем. Kibana ничего не хранит — все данные в Elasticsearch; снеси ES, и дашборды опустеют.
  • Открывать Kibana наружу без защиты. Через неё видны все данные и доступны запросы — её нужно закрывать аутентификацией.
  • Один гигантский индекс логов. Логи обычно бьют по времени (индекс на день/неделю) или ведут через data streams — так проще удалять старое и держать шарды разумного размера.

Итоги

  • Kibana — визуальный интерфейс к ES: Discover, Dashboards, Dev Tools; данных сама не хранит.
  • Три главных применения ES: анализ логов, поиск по сайту/приложению, аналитика в реальном времени.
  • Любая визуализация Kibana — это запрос с агрегациями к Elasticsearch.
Проверьте себя
1. Что из перечисленного — корректное утверждение про Kibana?
AKibana сама хранит данные вместо Elasticsearch
BKibana — визуальный интерфейс, который ходит в Elasticsearch по REST API и сама данные не хранит
CKibana заменяет инвертированный индекс
DKibana нужна для индексации документов
2. Какой сценарий — самое массовое применение Elasticsearch?
AХранение транзакций банка с гарантией ACID
BАнализ логов и наблюдаемость (всплески ошибок, медленные запросы в реальном времени)
CЗамена реляционной БД для финучёта
DОчередь сообщений