Что такое Elasticsearch и стек ELK

Знакомимся с Elasticsearch и его экосистемой — стеком ELK, который собирает, хранит, ищет и визуализирует данные.

Elasticsearch — распределённый поисковый и аналитический движок, который хранит документы в формате JSON и ищет по ним почти мгновенно благодаря инвертированному индексу.

Что это за зверь

Elasticsearch (часто сокращают до ES) — это сервер, который вы наполняете документами и спрашиваете по HTTP. Он построен на библиотеке Apache Lucene и добавляет к ней удобный REST API, распределённость (данные раскладываются по нескольким машинам) и отказоустойчивость. Главные качества: быстрый поиск по тексту с релевантностью, аналитика (агрегации поверх миллионов документов) и горизонтальное масштабирование — добавил серверов, выдержал больше нагрузки.

Зачем понадобился стек ELK

Сам по себе ES — это хранилище и поиск. Но данные нужно куда-то собрать, как-то загрузить и красиво показать. Для этого Elastic собрала набор инструментов, который раньше называли ELK, а теперь — Elastic Stack:

КомпонентРоль
Elasticsearchхранит документы и ищет по ним; сердце системы
Logstashконвейер: принимает данные из разных источников, парсит, преобразует и грузит в ES
Kibanaвеб-интерфейс: дашборды, графики, исследование данных, выполнение запросов
Beatsлёгкие агенты на серверах, которые отправляют логи и метрики (Filebeat, Metricbeat)

Как данные текут через стек

Типичный путь данных — например, при сборе логов:

  серверы            конвейер           хранилище        интерфейс
 +---------+        +----------+       +-------------+   +--------+
 | Beats   | -----> | Logstash | ----> | Elasticsearch| ->| Kibana |
 | (логи)  |        | (парсинг)|       |  (индекс)    |   |(графики)|
 +---------+        +----------+       +-------------+   +--------+

Beats на каждом сервере читают файлы логов и шлют строки. Logstash их разбирает (например, вытаскивает дату, уровень, сообщение), приводит к нужному виду и кладёт в Elasticsearch. Kibana подключается к ES и рисует дашборды: сколько ошибок в час, по каким сервисам, где всплеск.

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

Elasticsearch общается по HTTP и говорит на JSON. Вы шлёте запрос POST или GET с телом-JSON — получаете ответ-JSON. Никакого собственного бинарного протокола или драйвера учить не нужно: подойдёт curl, любой HTTP-клиент или Kibana. Внутри ES каждый узел (node) хранит часть данных, узлы объединяются в кластер и автоматически договариваются, кто за что отвечает. Поэтому одно и то же API работает и на ноутбуке с одним узлом, и на проде из тридцати машин.

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

  • Считать ELK единым продуктом. Это четыре отдельных компонента; для простого поиска по сайту часто хватает только Elasticsearch, без Logstash и Beats.
  • Тащить Logstash там, где он не нужен. Если данные уже в нужном формате, их можно грузить в ES напрямую через API, минуя тяжёлый Logstash.

Итоги

  • Elasticsearch — распределённый поисковый и аналитический движок на базе Lucene с REST/JSON API.
  • Стек ELK = Elasticsearch + Logstash (сбор/обработка) + Kibana (визуализация) + Beats (агенты).
  • Главные сценарии: поиск по тексту, аналитика логов, дашборды в реальном времени.
Проверьте себя
1. Какой компонент стека ELK отвечает за визуализацию и дашборды?
ALogstash
BBeats
CKibana
DLucene
2. На какой библиотеке построен Elasticsearch?
AApache Lucene
BApache Kafka
CPostgreSQL
DRedis
3. Как клиент общается с Elasticsearch?
AЧерез бинарный протокол и специальный драйвер
BПо HTTP, отправляя и получая JSON
CТолько через Kibana
DПо SQL через порт 5432