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

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

Ответ

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

Почему его используют? Для агрегации логов с множества серверов и приложений в одном месте, что упрощает отладку, мониторинг и расследование инцидентов.

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

  1. Elasticsearch — распределенная поисковая и аналитическая NoSQL-база данных. Хранит и индексирует данные.
  2. Logstash — серверный конвейер обработки данных (ETL). Принимает, преобразует и отправляет данные в Elasticsearch.
  3. Kibana — веб-интерфейс для визуализации и анализа данных из Elasticsearch (дашборды, графики).

Пример конфигурации Logstash (logstash.conf) для парсинга логов веб-сервера:

input {
  # Чтение из файла
  file {
    path => "/var/log/nginx/access.log"
    start_position => "beginning"
    sincedb_path => "/dev/null" # Для демо-целей
  }
}

filter {
  # Парсинг строки лога с помощью шаблона GROK
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  # Преобразование поля 'timestamp'
  date {
    match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
  # Удаление исходного сообщения после парсинга
  mutate {
    remove_field => [ "message" ]
  }
}

output {
  # Отправка обработанных данных в Elasticsearch
  elasticsearch {
    hosts => ["http://elasticsearch:9200"]
    index => "nginx-access-logs-%{+YYYY.MM.dd}" # Индекс с датой
  }
  # Дублирование вывода в консоль для отладки
  stdout { codec => rubydebug }
}

Преимущества для мониторинга и тестирования:

  • Единая точка просмотра логов со всех систем.
  • Мощный полнотекстовый поиск по логам.
  • Аналитика в реальном времени: выявление ошибок, медленных запросов, паттернов трафика.
  • Автоматическое оповещение (с использованием Watcher в Elasticsearch).