Путь строки лога от сервиса до графика в Kibana состоит из нескольких этапов, и на каждом может что-то сломаться. Если понимать эти этапы, становится ясно, куда смотреть, когда в Kibana пропали логи, и почему в больших системах между агентами и Logstash ставят Kafka.
Пять этапов
Конвейер логов состоит из пяти этапов:
- Сбор. Приложение пишет строку в файл или stdout, агент на сервере (Filebeat) её читает. Риск: агент не запущен или читает не тот файл.
- Доставка. Агент отправляет события дальше по сети. Риск: сеть или получатель недоступны, и событиям надо где-то подождать.
- Обработка. Logstash разбирает строки на поля, правит время, обогащает, отбрасывает шум. Риск: шаблон grok не подошёл, событие ушло сырым или потерялось в фильтре.
- Хранение. Elasticsearch индексирует и хранит. Риск: кончилось место, документ отклонён из-за типа поля, индекс переполнен полями.
- Анализ. Kibana ищет и показывает. Риск: неправильный data view или поле времени, и события «не видны», хотя они есть.
Буфер между этапами
Этапы работают с разной скоростью. Во время инцидента сервисы пишут в десять раз больше ошибок, чем обычно, а Elasticsearch не успевает индексировать. Что делать с лишними событиями? Выбрасывать нельзя: именно они нужны для разбора.
Поэтому между этапами нужен буфер:
- Filebeat сам по себе буфер: файл лога на диске. Если Logstash недоступен, агент просто не двигается дальше по файлу и ждёт;
- Logstash держит очередь в памяти, а с
queue.type: persistedна диске. Тогда события переживут и перезапуск самого Logstash; - Kafka между агентами и Logstash это буфер на дни. Агенты пишут в тему, Logstash читает в своём темпе. Если Logstash или Elasticsearch лежат час, события копятся в Kafka и потом дочитываются. Про Kafka есть целый блок.
Типичная схема большой системы: Filebeat → Kafka → Logstash → Elasticsearch → Kibana.
урок из курса
Урок из курса «Elasticsearch и ELK». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.