ELK Stack (или Elastic Stack) — связка трёх инструментов Elastic: Elasticsearch (поисковый движок и хранилище), Logstash (сборщик и трансформатор данных), Kibana (веб-интерфейс для визуализации). Используется для централизованного сбора и анализа логов серверов, приложений и сетевого оборудования.
Как работает
Типичный pipeline ELK:
- Filebeat (или Logstash) — лёгкий агент на каждом сервере, читает логи Nginx, приложений, systemd-journald и отправляет в Logstash/Elasticsearch.
- Logstash — парсит, фильтрует и обогащает события через pipeline-конфигурацию. Grok-паттерны извлекают поля из текстовых логов: IP, HTTP-метод, код ответа, URL, latency.
- Elasticsearch — хранит документы (JSON) с полным инвертированным индексом. Поддерживает сложные запросы: полнотекстовый поиск, агрегации, фильтры по времени. Горизонтально масштабируется через sharding.
- Kibana — строит дашборды, визуализации, запросы на KQL (Kibana Query Language).
Beats — семейство легковесных агентов: Filebeat (файловые логи), Metricbeat (системные метрики), Packetbeat (сетевой трафик), Auditbeat (auditd). Заменяют тяжёлый Logstash на конечных узлах.
История
Elasticsearch создан Шаем Банноном (Shay Banon) в 2010 году. Logstash и Kibana присоединились в 2011–2013 годах под брендом ELK. В 2015 году Elastic добавил Beats и переименовал стек в Elastic Stack. IPO на NYSE: октябрь 2018 года (ESTC). В январе 2021 года Elastic изменила лицензию с Apache 2.0 на SSPL/Elastic License — OpenSearch (Amazon fork) появился как открытая альтернатива.
ELK Stack: производительность и масштабирование
Elasticsearch требователен к памяти: рекомендуется выделить половину RAM системы на heap (например, 8 ГБ из 16 ГБ), но не более 31 ГБ (выше compressed oops не работает). На шардирование: для начала 1 шард на индекс на каждые 10-30 ГБ данных. Для горизонтального масштабирования: 3 master-узла (кворум), N data-узлов по мощности. Filebeat на каждом сервере собирает логи с минимальным потреблением ресурсов (< 1% CPU). Logstash — для сложных трансформаций; для простой передачи логов из Filebeat в Elasticsearch Logstash можно исключить из pipeline.
Индексирование: используй Index Lifecycle Management (ILM) для автоматического удаления старых индексов. Без ILM Elasticsearch заполнит диск за дни при высоком объёме логов.
На что обращать внимание
ELK Stack требует значительных ресурсов: Elasticsearch рекомендует минимум 4 ГБ ОЗУ на узел. Для небольших проектов Grafana Loki требует в 10 раз меньше ресурсов. ELK оптимален при необходимости полнотекстового поиска по логам и сложных аналитических запросов. Elastic Cloud — managed-сервис Elastic с ценами от $16/мес за небольшой кластер.
ELK Stack на VPS
ELK Stack (Elastic Stack) требователен к ресурсам: Elasticsearch — минимум 2 ГБ heap (4-8 ГБ рекомендуется), VPS с 8+ ГБ ОЗУ. Установка через Docker Compose — самый простой способ. nginx как прокси перед Kibana с HTTP Basic Auth. Logstash обрабатывает и трансформирует логи перед индексацией в Elasticsearch — можно заменить Filebeat (легче). Beats-семейство: Filebeat (логи файлов), Metricbeat (метрики серверов), Packetbeat (сетевой трафик). Для небольших объёмов логов: Grafana Loki — проще и легче. ELK подходит для полнотекстового поиска по логам и сложной аналитики.