Ответ
ELK (или Elastic Stack) — это набор из трех опенсорсных инструментов, предназначенный для централизованного сбора, обработки, хранения и анализа логов и метрик в реальном времени.
Стек решает проблему разрозненных логов, позволяя агрегировать их в одном месте и предоставляя мощные инструменты для поиска и визуализации.
Основные компоненты:
- Elasticsearch: Распределенный поисковый и аналитический движок на базе NoSQL. Он индексирует и хранит данные, обеспечивая сверхбыстрый полнотекстовый поиск.
- Logstash: Серверный конвейер обработки данных. Он собирает данные из множества источников (файлы, базы данных, сообщения), применяет к ним фильтры (парсинг, обогащение) и отправляет в хранилище, чаще всего в Elasticsearch.
- Kibana: Платформа для визуализации данных из Elasticsearch. Позволяет создавать интерактивные дашборды, графики и диаграммы для анализа информации.
В современных реализациях часто используется Beats — легковесные агенты, которые устанавливаются на серверы для сбора и отправки данных в Logstash или Elasticsearch.
Пример конфигурации Logstash для парсинга логов Nginx:
# logstash.conf
input {
# Читать логи из файла
file {
path => "/var/log/nginx/access.log"
start_position => "beginning"
}
}
filter {
# Использовать grok-паттерн для разбора строки лога
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
output {
# Отправить обработанные данные в Elasticsearch
elasticsearch {
hosts => ["localhost:9200"]
index => "nginx-logs-%{+YYYY.MM.dd}"
}
}