Что входит в стек ELK?

«Что входит в стек ELK?» — вопрос из категории Мониторинг и логирование, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

ELK — это классический стек для централизованного логирования, с которым я работал. Сейчас он часто расширяется до Elastic Stack и включает:

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

  • Elasticsearch: Распределенная поисковая NoSQL-база, где индексируются и хранятся логи. Мы настраивали шаблоны индексов, политики жизненного цикла (ILM) для ротации (hot/warm/cold tiers) и шардинг для производительности.
  • Logstash: Серверный процессор конвейеров данных. Принимает, фильтрует (парсит, обогащает) и отправляет логи в Elasticsearch. Ресурсоемкий, поэтому сейчас часто заменяется на более легкие варианты.
  • Kibana: Веб-интерфейс для визуализации (дашборды, графики) и анализа данных из Elasticsearch. Создавал дашборды для мониторинга ошибок приложений и аудита безопасности.

2. Современная архитектура (с Beats): Вместо тяжелого Logstash на каждой ноде теперь часто ставят легкие агенты Beats, которые отправляют данные напрямую в Elasticsearch или через Ingest Nodes.

  • Filebeat: Самый частый гость. Собирает логи с файлов и отправляет их. Пример конфигурации для сбора логов Nginx и парсинга с помощью встроенных процессоров:
# filebeat.yml
filebeat.inputs:
- type: filestream
  paths:
    - /var/log/nginx/access.log
  processors:
    - dissect:
        tokenizer: "%{clientip} %{ident} %{auth} [%{@timestamp}] "%{verb} %{request} HTTP/%{httpversion}" %{status} %{size}"
        field: "message"

output.elasticsearch:
  hosts: ["elasticsearch-host:9200"]
  indices:
    - index: "nginx-access-%{+yyyy.MM.dd}"
  • Metricbeat: Собирает системные и сервисные метрики (CPU, память, Docker, Nginx stats).
  • Auditbeat: Для сбора аудитных логов.

3. Дополнительные элементы в продакшене:

  • Message Queue (Kafka/Redis): Как буфер между Beats и Elasticsearch на случай пиковой нагрузки или недоступности Elasticsearch.
  • Индекс-менеджер и ILM: Для автоматического управления жизненным циклом индексов (создание, ротация, удаление).