ELK (Elasticsearch, Logstash, Kibana) – это стек для сбора, обработки, хранения и визуализации логов. Он помогает DevOps-инженерам анализировать логи в реальном времени и выявлять проблемы в системе.
🚩Elasticsearch – хранилище и поиск логов
- Хранит структурированные и неструктурированные данные (логи, метрики)
- Поддерживает быстрый полнотекстовый поиск
- Использует кластеризацию для высокой доступности
json
GET /logs/_search
{
"query": {
"match": { "message": "error" }
}
}
🚩Logstash – обработка и отправка логов
- Собирает логи из файлов, TCP, Kafka, Beats
- Фильтрует и преобразует данные перед отправкой в Elasticsearch
- Поддерживает шифрование и маршрутизацию
yaml
input {
file {
path => "/var/log/nginx/access.log"
start_position => "beginning"
}
}
filter {
grok { match => { "message" => "%{COMBINEDAPACHELOG}" } }
}
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
}
}
🚩Kibana – визуализация и анализ
- Позволяет строить дашборды и графики
- Делает поиск по логам и метрикам
- Визуализирует реальное время работы системы
message: "error" AND @timestamp:[now-24h TO now]
🚩Как ELK-стек работает вместе?
Logstash собирает и обрабатывает логи
Отправляет их в Elasticsearch
Kibana визуализирует данные
yaml
version: "3"
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.5.0
environment:
- discovery.type=single-node
ports:
- "9200:9200"
logstash:
image: docker.elastic.co/logstash/logstash:8.5.0
depends_on:
- elasticsearch
volumes:
- ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
ports:
- "5044:5044"
kibana:
image: docker.elastic.co/kibana/kibana:8.5.0
depends_on:
- elasticsearch
ports:
- "5601:5601"
Ставь 👍 и забирай 📚 Базу знаний