// Engineering Log
Централизованное логирование: Часть 2 — ELK Stack (Elasticsearch, Logstash, Kibana)
Опубликовано 22.09.2026
// Быстрый маршрут
Эта статья относится к теме Деплой и стабильная работа.
ELK Stack — самый известный набор программ для централизованного логирования. Название составлено из первых букв трёх компонентов компании Elastic: Elasticsearch, Logstash и Kibana. Вместе они собирают логи, разбирают их на поля, хранят с полнотекстовым индексом и показывают в веб-интерфейсе.
Компоненты
- Elasticsearch — распределённая поисковая и аналитическая система на основе Apache Lucene. Хранит записи в индексах, выполняет полнотекстовый поиск и агрегации, масштабируется добавлением узлов.
- Logstash — конвейер обработки: принимает данные из разных источников, разбирает, фильтрует, обогащает и отправляет в Elasticsearch. Работает с десятками входных и выходных плагинов.
- Kibana — веб-интерфейс для поиска, дашбордов, оповещений и управления кластером.
- Beats и Elastic Agent — агенты на серверах. Filebeat читает файлы логов, Metricbeat собирает метрики. Elastic Agent объединяет их функции в одном агенте, которым управляют централизованно через Fleet в Kibana.
Поэтому связку часто называют Elastic Stack: агентов в ней больше, чем трёх букв в названии.
Как проходят данные
- Агент на сервере читает лог и отправляет записи в Logstash или сразу в Elasticsearch.
- Logstash или конвейер обработки в самом Elasticsearch (ingest pipeline) разбирает строки на поля.
- Elasticsearch индексирует записи.
- В Kibana по ним ищут, строят графики и настраивают оповещения.
Logstash нужен, когда обработка сложная или источников много. Для простых случаев достаточно агента и ingest pipeline — это на один компонент меньше.
Лицензия
История лицензий Elastic важна для выбора:
- до 2021 года Elasticsearch и Kibana распространялись под Apache 2.0;
- в 2021 году Elastic перешла на выбор из двух лицензий — SSPL и Elastic License 2.0. Обе не признаны открытыми по определению OSI; ответом на это стал форк OpenSearch;
- 29 августа 2024 года Elastic объявила о добавлении третьего варианта — AGPLv3, одобренной OSI. С этого момента Elasticsearch и Kibana снова можно называть открытым ПО.
Для компании, которая разворачивает ELK на своих серверах для собственных логов, ни одна из этих лицензий ограничений не создаёт. Они важны тем, кто продаёт Elasticsearch как облачную услугу или встраивает его в свой продукт.
Отдельно от лицензии на код существуют подписки Elastic. Бесплатный уровень Basic включает базовую защиту — пользователей, роли, шифрование соединений — и оповещения Kibana с ограниченным набором каналов доставки. Машинное обучение, часть функций Elastic Security и расширенные интеграции доступны в платных подписках.
Язык запросов ES|QL
Помимо классического Query DSL и KQL в Kibana, у Elasticsearch есть язык ES|QL. Запрос строится как цепочка шагов, разделённых вертикальной чертой. ES|QL появился в версии 8.11 как предварительная функция и стал общедоступным в версии 8.14.
FROM logs-*
| WHERE log.level == "error"
| STATS errors = COUNT(*) BY service.name
| SORT errors DESC
| LIMIT 10Запрос выбирает ошибки из индексов логов, считает их по сервисам и показывает десять сервисов с наибольшим числом ошибок.
Как развернуть для пробы
Для локального знакомства Elastic предлагает скрипт start-local: он скачивает актуальные Elasticsearch и Kibana и запускает их в Docker. Команду и описание лучше брать из официальной документации — она обновляется вместе с версиями. Для рабочей среды в документации есть отдельные инструкции: кластер из нескольких узлов в Docker Compose, установка из пакетов DEB и RPM, развёртывание в Kubernetes через оператор ECK.
При самостоятельной установке важно:
- выделить Elasticsearch достаточно памяти и не отдавать ей всю оперативную память сервера — часть нужна системному кешу файлов;
- не открывать порт 9200 в интернет;
- оставить включёнными аутентификацию и TLS, которые в современных версиях настраиваются при первом запуске.
Сроки хранения: ILM
Индексы логов растут постоянно, поэтому ими управляет политика жизненного цикла (Index Lifecycle Management, ILM). Она переводит индексы по фазам — hot, warm, cold, frozen, delete — и выполняет в каждой действия: создание нового индекса, сжатие, перенос на более дешёвые узлы, удаление.
Пример политики из документации Elastic: новый индекс создаётся, когда основной шард достигает 25 ГБ, а индекс удаляется через 30 дней:
PUT _ilm/policy/logs-30d
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": { "max_primary_shard_size": "25GB" }
}
},
"delete": {
"min_age": "30d",
"actions": { "delete": {} }
}
}
}
}Без такой политики диск кластера рано или поздно заполнится, и Elasticsearch перестанет принимать запись.
Достоинства
- Поиск. Полнотекстовый поиск и агрегации по большим объёмам логов.
- Аналитика и визуализация. Kibana даёт дашборды, исследование данных, оповещения.
- Экосистема. Готовые интеграции для популярных систем, агенты под все основные платформы, большое сообщество.
- Масштабирование. Кластер растёт добавлением узлов.
Недостатки
- Ресурсы. Elasticsearch и Logstash требовательны к памяти, процессору и дискам; полнотекстовый индекс увеличивает объём хранимых данных.
- Сложность обслуживания. Нужно следить за шардами, индексами, политиками хранения, обновлениями и резервными копиями.
- Часть функций платная. Машинное обучение и расширенные функции безопасности требуют подписки.
Типичные ошибки
- Слишком много мелких шардов. Каждый индекс на каждый день с несколькими шардами быстро даёт тысячи шардов, и кластер тратит ресурсы на их учёт.
- Нет политики ILM. Диск заполняется, запись останавливается.
- Кластер открыт в интернет. Незащищённые экземпляры Elasticsearch регулярно становятся источником утечек данных.
- Один узел без реплик и снимков. Отказ диска означает потерю всех логов; резервные копии делаются через snapshot в отдельное хранилище.
Когда выбирать ELK
ELK подходит, если нужен полнотекстовый поиск по большим объёмам логов, развитая аналитика и есть кому обслуживать кластер. Для небольшой инфраструктуры, где логи нужны в основном для разбора сбоев, он избыточен: Loki или Graylog обойдутся дешевле по ресурсам и проще в поддержке.
// Похожая задача
Если у вас похожая ситуация
Эта статья относится к одной из рабочих тем. Можно продолжить чтение по теме, перейти на главную, чтобы понять, чем я занимаюсь, или сразу открыть услуги.
Тема статьи
Деплой и стабильная работа
Docker, CI/CD, релизы, мониторинг, observability и разбор инцидентов.
Часто с этим приходят
- Настроить деплой без ручных действий и хаоса
- Подключить мониторинг, алерты и базовую observability
- Разобрать инциденты и стабилизировать production
// Следующий шаг
Если вам нужна не только статья, а помощь по этой теме, удобнее сразу перейти в услугу. Главная и подборка материалов остаются рядом.
Открыть услуги// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
Написать в TelegramОтвечаю в течение рабочего дня (03:00–13:00 GMT)
Или оставьте заявку здесь:
// Related