Skip to content

[Feature] Интеграция Grafana Loki для централизованного сбора логов #65

@soorq

Description

@soorq

Контекст

Текущий подход к логированию требует перехода на централизованную систему сбора и хранения данных. Интеграция Loki позволит агрегировать логи всех микросервисов и компонентов приложения в едином хранилище. Это критически важно для обеспечения высокого уровня наблюдаемости (observability), быстрого поиска причин инцидентов (troubleshooting) и корреляции логов с метриками в Grafana.


Технические требования

  • Локация логики: infrastructure/logging, shared/logger, docker-compose.yaml
  • Инструменты: Grafana Loki, Promtail или Winston/Pino Loki transport, Docker.
  • Логика работы:
    1. Настроить транспорт (например, pino-loki или winston-loki) на уровне приложения для отправки логов по HTTP/gRPC.
    2. Реализовать структурированное логирование в формате JSON с обязательными метками (labels): app_name, env, level, service_id.
    3. Сконфигурировать Promtail (если используется sidecar-подход) для парсинга stdout контейнеров.
    4. Настроить Retention Policy в Loki для оптимизации использования дискового пространства.

Цель и критерии приемки (Definition of Done)

  • База: Развернут инстанс Loki и Grafana в инфраструктуре (Dev/Staging).
  • Функционал: Логи приложения успешно передаются в Loki и доступны для запросов через Explore в Grafana (LogQL).
  • Лимиты/SLA: Задержка появления лога в интерфейсе (ingestion lag) не более 5 секунд.
  • Интеграция: Обновлены файлы конфигурации .env и values.yaml (Helm) для указания URL эндпоинта Loki.

Важные указания

  • Производительность: Использовать батчинг (batching) при отправке логов, чтобы минимизировать количество HTTP-запросов и нагрузку на сеть.
  • Ошибки: Предусмотреть механизм fallback (например, запись в файл или stdout), если эндпоинт Loki временно недоступен.
  • Безопасность: Исключить попадание чувствительных данных (PII, пароли, токены) в тело лога через глобальный фильтр-сериализатор. Настроить Basic Auth для доступа к push-api Loki.

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions