ELK-стек: компоненты, схема логирования и настройка
Оглавление статьи

Короткий ответ
ELK-стек объединяет Elasticsearch, Logstash и Kibana для централизованного сбора, обработки, поиска и визуализации данных. В типичной схеме приложение пишет структурированные события, агент доставляет их напрямую в Elasticsearch или через Logstash, Elasticsearch индексирует документы, а Kibana помогает искать ошибки и строить панели.
Сегодня Elastic чаще говорит об Elastic Stack: помимо трёх компонентов, в него входят Elastic Agent, , APM и другие средства. Logstash не обязателен для каждой установки. Если агент или ingest pipeline уже выполняет нужные преобразования, лишний промежуточный сервис только усложнит эксплуатацию.
ELK и Elastic Stack: в чём разница
Аббревиатура ELK образована от Elasticsearch, Logstash и Kibana. Она описывает историческое ядро решения. Название Elastic Stack шире и точнее для современных архитектур, где данные собирают Elastic Agent, Beats, OpenTelemetry Collector или клиенты приложений.
| Компонент | Роль | Когда нужен |
|---|---|---|
| Elasticsearch | Хранение, индексирование, поиск и агрегации | Ядро любого такого решения |
| Kibana | Поиск, визуализация, панели, управление и оповещения | Когда людям нужен интерфейс для исследования данных |
| Elastic Agent | Сбор логов, метрик и других сигналов с хоста | Предпочтительный агент для большинства новых сценариев Elastic |
| Logstash | Сложные конвейеры ввода, фильтрации, обогащения и вывода | Когда простой агент или ingest pipeline не покрывает преобразования и маршрутизацию |
| Beats | Специализированные лёгкие поставщики данных | В существующих конфигурациях и отдельных сценариях; для большинства новых случаев Elastic рекомендует Agent |
Термин «стек» здесь означает набор совместно используемых программ, а не структуру данных LIFO. Правила «последним пришёл - первым вышел» к ELK отношения не имеют.
Как проходит событие от приложения до Kibana
Приложение создаёт событие. Лучше писать одну структурированную запись на событие, включая время, сервис, уровень и идентификаторы корреляции.
Агент читает источник. Это может быть файл, stdout контейнера, системный журнал или интеграция.
Конвейер разбирает запись. Поля нормализуются, ненужные значения удаляются, чувствительные данные маскируются.
Событие попадает в data stream или индекс. Elasticsearch применяет mapping и делает документ доступным для поиска с небольшой задержкой.
Kibana читает данные. Инженер фильтрует события, связывает их по trace ID, строит панель или правило оповещения.
Политика жизненного цикла управляет хранением. Старые данные переходят между уровнями либо удаляются по принятому retention.
Elasticsearch предоставляет поиск и аналитику в режиме near real time, то есть почти в реальном времени. Между записью события и его видимостью есть задержка; её нельзя обещать как абсолютный ноль.
Каким должен быть лог приложения
Свободный текст удобен человеку, но плохо подходит для устойчивых фильтров. Структурированный JSON позволяет хранить значения отдельными полями:
{
"@timestamp": "2026-09-02T07:00:00Z",
"service.name": "checkout-api",
"service.version": "example",
"log.level": "ERROR",
"event.action": "payment_request",
"trace.id": "example-trace-id",
"message": "Upstream request failed"
}Пример показывает форму, а не обязательный контракт. Схему нужно согласовать для конкретной системы. Полезно придерживаться единого именования полей, передавать время в однозначном формате и добавлять идентификатор запроса или trace ID.
Не записывайте пароли, токены, ключи , номера банковских карт и полные персональные данные. Маскирование на стороне Logstash не отменяет фильтрацию в приложении: секрет мог попасть в локальный файл или транспорт ещё до обработки.
Когда нужен Logstash
Logstash оправдан, когда требуется объединить несколько протоколов, выполнить сложный парсинг, обогащение, условную маршрутизацию или отправку в разные назначения. Его pipeline состоит из input, filter и output, но это не означает, что каждый лог обязан проходить через все возможные фильтры.
Прямой путь Elastic Agent → Elasticsearch проще, если интеграция уже создаёт корректные поля. Для более сложной схемы используют Agent → Logstash → Elasticsearch. В критичной системе оценивают persistent queue, повторные попытки, backpressure и поведение при недоступности следующего узла.
Логи, метрики и трассировки
| Сигнал | Отвечает на вопрос | Пример |
|---|---|---|
| Лог | Что именно произошло | Ошибка запроса с контекстом |
| Метрика | Как меняется числовой показатель | Доля ошибок или загрузка CPU |
| Трассировка | Как запрос прошёл через сервисы | Задержка по участкам распределённого вызова |
ELK часто называют системой мониторинга, но одних логов недостаточно для полной наблюдаемости. Надёжная диагностика связывает логи, метрики и трассировки общими полями сервиса, среды, версии и запроса.
Как внедрить ELK по шагам
Выберите один диагностический сценарий. Например, поиск причин HTTP 5xx одного сервиса.
Оцените поток. Измерьте средний и пиковый объём событий, размер записи и требуемый срок хранения.
Спроектируйте схему. Зафиксируйте обязательные поля, типы и правила маскирования.
Выберите путь доставки. Начните с Agent и интеграции; добавляйте Logstash только при понятной необходимости.
Создайте data stream и шаблон. Ограничьте динамическое появление полей и проверьте mapping.
Настройте безопасность. TLS, отдельные роли, минимальные права, API keys и закрытый административный доступ.
Определите retention. Используйте data stream lifecycle или ILM в зависимости от типа развёртывания и требований.
Соберите поисковые запросы и панели. Они должны отвечать на операционные вопросы, а не просто выглядеть насыщенно.
Добавьте оповещения. Проверяйте сигнал на тестовом инциденте и исключайте бесконечный шум.
Проведите проверку отказа. Остановите приёмник в контролируемой среде и убедитесь, что понятно, где буферизуются и теряются события.
Безопасность по умолчанию и на практике
Утверждение, что в Elasticsearch нет встроенной авторизации, устарело. В управляемых развёртываниях Elastic безопасность настраивается автоматически. В self-managed установках автоматическая конфигурация выполняется, когда это возможно, однако администратор всё равно должен проверить TLS, пользователей, роли и сетевую доступность.
не публикуйте Elasticsearch и Kibana напрямую в интернет без обоснованной схемы доступа;
не используйте суперпользователя для агентов и приложений;
разделяйте права чтения, записи и управления;
защищайте трафик между агентом, Logstash и Elasticsearch;
храните учётные данные вне конфигурации приложения;
ограничивайте доступ к логам с персональными и коммерческими данными;
журналируйте административные действия и ротацию ключей.
Как не переполнить хранилище
Логи непрерывно накапливаются. Политика «хранить всё» быстро превращается в эксплуатационный риск. До запуска определите минимальный срок для диагностики, юридические ограничения и потребность в долгом архиве.
Elastic предлагает Data Stream Lifecycle и Index Lifecycle Management. Конкретный выбор зависит от типа развёртывания: например, ILM недоступен в Elasticsearch Serverless. Политика может задавать retention, rollover и переход между уровнями хранения. Она должна быть проверена на тестовом потоке, а не только сохранена в интерфейсе.
Mapping и качество данных
Если одно поле иногда приходит числом, а иногда строкой, индексирование может завершиться ошибкой. Динамические имена вроде header_12345 создают множество полей и раздувают mapping. Это называют mapping explosion.
используйте стабильный контракт событий;
проверяйте типы до отправки;
не превращайте значения в имена полей;
разделяйте несовместимые наборы данных;
отправляйте ошибочные события в контролируемый канал и наблюдайте за ним;
версионируйте значимые изменения схемы.
Преимущества и ограничения
| Преимущество | Цена или ограничение |
|---|---|
| Единый поиск по событиям многих сервисов | Нужна общая схема и контроль доступа |
| Гибкие фильтры и агрегации | Mapping и запросы требуют проектирования |
| Масштабирование кластера | Шарды, память и диск нужно планировать и наблюдать |
| Панели и оповещения в одном интерфейсе | Плохие правила создают шум и ложное чувство контроля |
| Большой выбор путей ingest | Лишние компоненты повышают сложность и задержку |
Что учесть в лицензировании
Нельзя без оговорок называть весь современный стек продуктом под Apache 2.0. Elastic указывает, что бесплатные части исходного кода Elasticsearch и Kibana доступны с выбором AGPLv3, SSPL или Elastic License 2.0, а стандартная дистрибуция выпускается под ELv2. Для внутреннего использования, встраивания, изменения и особенно управляемого сервиса проверьте актуальные условия нужной версии и компонентов.
Типичные ошибки
ставить все компоненты ELK до формулировки задачи;
принимать ELK-стек за структуру данных stack;
считать Elasticsearch обычной долговременной резервной копией логов;
открывать кластер наружу и работать одной привилегированной учётной записью;
отправлять секреты и персональные данные в message;
разрешать неограниченное создание полей;
не задавать retention и обнаружить заполненный диск;
измерять только доступность Elasticsearch, но не задержку и ошибки ingest;
обещать отсутствие потерь без испытания очередей и сценариев отказа;
устанавливать разные версии компонентов без проверки совместимости.
Чек-лист готовности
есть конкретный сценарий диагностики и владелец;
измерены объём и пики событий;
утверждена схема полей;
секреты исключаются до доставки;
TLS и минимальные роли проверены;
mapping ограничен шаблоном;
retention соответствует стоимости и требованиям;
очереди и повторные попытки наблюдаемы;
панели отвечают на операционные вопросы;
оповещения проверены контролируемым событием;
есть snapshots и план восстановления;
лицензия соответствует способу использования.
Вывод
ELK полезен не количеством компонентов, а управляемым путём события от приложения до ответа на вопрос инженера. Начните с единой схемы логов и одного сценария, выберите минимальный ingest, настройте доступы и retention, затем проверьте отказ и только после этого масштабируйте панели и источники.
Источники
Частые вопросы об ELK-стеке
Что такое ELK-стек?
ELK - связка Elasticsearch, Logstash и Kibana для приёма, обработки, поиска и визуализации данных. Современный Elastic Stack также включает Elastic Agent, интеграции, APM и другие компоненты.
Обязательно ли использовать Logstash?
Нет. Если Elastic Agent или ingest pipeline выполняет нужные преобразования, данные можно отправлять напрямую в Elasticsearch. Logstash нужен для более сложного парсинга, обогащения и маршрутизации.
Чем ELK отличается от системы мониторинга?
ELK может хранить и анализировать логи, метрики и трассировки, но сам факт установки не создаёт наблюдаемость. Нужны качественные сигналы, панели, правила оповещения и процесс реакции.
Можно ли развернуть ELK в Docker?
Да, контейнеры подходят для знакомства и некоторых эксплуатационных схем. Для production нужно отдельно спроектировать постоянное хранение, ресурсы, TLS, секреты, резервирование и обновления.
Есть ли в Elasticsearch авторизация?
Да. Современные управляемые развёртывания автоматически настраивают безопасность, а self-managed установка делает это, когда возможно. Администратор должен проверить TLS, роли и сетевой доступ.
Как долго хранить логи?
Срок зависит от диагностической ценности, стоимости и правовых требований. Его задают через Data Stream Lifecycle или ILM там, где этот механизм доступен.
Почему события не видны в Kibana мгновенно?
Elasticsearch работает в режиме near real time. Доставке, обработке, индексированию и обновлению поиска требуется время, поэтому небольшая задержка ожидаема.
ELK полностью открыт под Apache 2.0?
Нет. У Elasticsearch и Kibana менялась модель лицензирования. Elastic предлагает несколько лицензий для бесплатных частей исходного кода, а стандартная дистрибуция выпускается под ELv2; условия нужно проверять для своей версии и сценария.
Комментарии 0
Обсудите материал, задайте вопрос или дополните его своим опытом.
Комментарии доступны зарегистрированным пользователям. Почту нужно подтвердить один раз.
Начните обсуждение: задайте вопрос автору или поделитесь практическим опытом.