Для каких задач используют стек ELK (Elastic Stack)?

«Для каких задач используют стек ELK (Elastic Stack)?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Стек ELK (Elasticsearch, Logstash, Kibana), теперь часто расширяемый до Elastic Stack (с добавлением Beats), используется для централизованного сбора, обработки, хранения, поиска и визуализации логов и метрик в распределённых системах.

Роли компонентов:

  • Beats (Filebeat, Metricbeat): Лековесные агенты для сбора данных с серверов.
  • Logstash: Серверный процессор для трансформации, обогащения и маршрутизации данных.
  • Elasticsearch: Поисковый движок и хранилище для индексирования и анализа данных.
  • Kibana: Веб-интерфейс для визуализации (дашборды, графики) и интерактивного поиска.

Типичные задачи:

  1. Агрегация логов: Сбор логов со всех сервисов и серверов в одно место.
  2. Мониторинг и алертинг: Поиск ошибок, отслеживание метрик производительности (response time, error rate), настройка уведомлений.
  3. Расследование инцидентов: Быстрый полнотекстовый поиск по структурированным и неструктурированным логам.
  4. Анализ бизнес-метрик: Построение дашбордов для отображения ключевых показателей (KPI).

Пример конвейера:

  1. Filebeat читает лог-файл приложения.
  2. Logstash парсит строку лога в JSON, добавляет поля (service_name, host_ip).
    # Конфигурация Logstash фильтра
    filter {
      grok {
        match => { "message" => "%{TIMESTAMP:timestamp} %{LOGLEVEL:level} %{GREEDYDATA:msg}" }
      }
    }
  3. Данные сохраняются в Elasticsearch.
  4. В Kibana создаётся дашборд с графиком количества ошибок по уровням (ERROR, WARN) в реальном времени.

Альтернативы: Grafana Loki (для логов), Prometheus (для метрик), Splunk, коммерческие SaaS-решения (Datadog, New Relic).