Контекст
Текущий подход к логированию требует перехода на централизованную систему сбора и хранения данных. Интеграция Loki позволит агрегировать логи всех микросервисов и компонентов приложения в едином хранилище. Это критически важно для обеспечения высокого уровня наблюдаемости (observability), быстрого поиска причин инцидентов (troubleshooting) и корреляции логов с метриками в Grafana.
Технические требования
- Локация логики:
infrastructure/logging, shared/logger, docker-compose.yaml
- Инструменты: Grafana Loki, Promtail или Winston/Pino Loki transport, Docker.
- Логика работы:
- Настроить транспорт (например,
pino-loki или winston-loki) на уровне приложения для отправки логов по HTTP/gRPC.
- Реализовать структурированное логирование в формате JSON с обязательными метками (labels):
app_name, env, level, service_id.
- Сконфигурировать
Promtail (если используется sidecar-подход) для парсинга stdout контейнеров.
- Настроить Retention Policy в Loki для оптимизации использования дискового пространства.
Цель и критерии приемки (Definition of Done)
Важные указания
- Производительность: Использовать батчинг (batching) при отправке логов, чтобы минимизировать количество HTTP-запросов и нагрузку на сеть.
- Ошибки: Предусмотреть механизм fallback (например, запись в файл или stdout), если эндпоинт Loki временно недоступен.
- Безопасность: Исключить попадание чувствительных данных (PII, пароли, токены) в тело лога через глобальный фильтр-сериализатор. Настроить Basic Auth для доступа к push-api Loki.
Контекст
Текущий подход к логированию требует перехода на централизованную систему сбора и хранения данных. Интеграция
Lokiпозволит агрегировать логи всех микросервисов и компонентов приложения в едином хранилище. Это критически важно для обеспечения высокого уровня наблюдаемости (observability), быстрого поиска причин инцидентов (troubleshooting) и корреляции логов с метриками в Grafana.Технические требования
infrastructure/logging,shared/logger,docker-compose.yamlpino-lokiилиwinston-loki) на уровне приложения для отправки логов по HTTP/gRPC.app_name,env,level,service_id.Promtail(если используется sidecar-подход) для парсинга stdout контейнеров.Цель и критерии приемки (Definition of Done)
LokiиGrafanaв инфраструктуре (Dev/Staging)..envиvalues.yaml(Helm) для указания URL эндпоинта Loki.Важные указания