Что такое стек ELK (Elastic Stack)?

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

Ответ

ELK Stack (ныне часто называемый Elastic Stack) — это популярный набор open-source инструментов для централизованного сбора, хранения, поиска, анализа и визуализации логов и других данных в режиме реального времени.

Основные компоненты:

  1. Elasticsearch: Распределенная поисковая и аналитическая NoSQL-база данных на основе инвертированного индекса. Отвечает за хранение, индексацию и быстрый поиск данных.
  2. Logstash: Серверный конвейер обработки данных. Принимает данные из множества источников, трансформирует их (парсинг, фильтрация, обогащение) и отправляет в «сто́ры» (например, в Elasticsearch).
  3. Kibana: Веб-интерфейс для визуализации и анализа данных из Elasticsearch. Позволяет создавать дашборды, графики, таблицы и выполнять поисковые запросы.

Типичный пайплайн обработки логов:

  1. Приложение пишет логи в файл или stdout.
  2. Filebeat (легковесный сборщик данных) отправляет логи в Logstash.
  3. Logstash парсит строки логов в структурированные JSON-документы с помощью фильтров (например, grok).
  4. Обработанные данные отправляются в Elasticsearch для индексации.
  5. Пользователь анализирует данные через Kibana.

Пример фильтра Grok в Logstash:

filter {
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} [%{DATA:thread}] %{DATA:class} - %{GREEDYDATA:log_message}" }
  }
  date {
    match => [ "timestamp", "ISO8601" ]
    target => "@timestamp"
  }
}

Сценарии использования: Мониторинг приложений и инфраструктуры, расследование инцидентов, бизнес-аналитика, поиск по данным.

Современная экосистема: Часто включает Beats (легкие агенты для сбора данных) и APM (Application Performance Monitoring). Альтернативы: Grafana Loki, Splunk, Datadog.