Ответ
Я развернул и настроил стек EFK (Elasticsearch, Fluent Bit, Kibana) для централизованного сбора логов с микросервисов в Kubernetes.
Конфигурация Fluent Bit для сбора логов из контейнеров:
[INPUT]
Name tail
Path /var/log/containers/*.log
Parser docker
Tag kube.*
[FILTER]
Name kubernetes
Match kube.*
[OUTPUT]
Name es
Match *
Host elasticsearch-logging
Port 9200
Index app-logs
Type _doc
Ключевые аспекты реализации:
- Структурированные логи: Настроил приложения на вывод логов в JSON-формате для упрощения парсинга.
- Корреляция запросов: Добавил сквозной
trace_idво все логи в рамках одного HTTP-запроса с помощью обогащения логов в Fluent Bit. - Ротация и хранение: Использовал Index Lifecycle Management (ILM) в Elasticsearch для автоматической ротации индексов по политикам (например, удаление логов старше 30 дней).
- Безопасность: Настроил фильтры в Fluent Bit для маскировки чувствительных данных (пароли, токены) перед отправкой в Elasticsearch.
- Визуализация: Создал дашборды в Kibana для мониторинга ошибок приложений и метрик производительности.