Files
Deal/deploy/observability

Observability-стек «Дейла»

Современный (vendor-neutral) стек мониторинга. Поднимается профилем observability (в prod — deploy/compose.prod.yml, в dev — deploy/compose.dev.yml); наружу порты не публикуются (prod — доступ оператору по SSH-туннелю).

Состав и поток данных

Слой Сервис Конфиг Поток
Трейсы (приём) otel-collector otel-collector.yml OTLP от сервисов (:4317) → Tempo
Трейсы (хранение) tempo tempo.yml OTLP от коллектора, retention 7 сут.
Логи loki + promtail loki.yml, promtail.yml docker-логи → Loki
Метрики prometheus prometheus.yml, prometheus-rules.yml scrape /metrics процессов и cadvisor/node-exporter
Ресурсы контейнеров cadvisor Prometheus
Ресурсы хоста node-exporter Prometheus
Визуализация grafana grafana/provisioning/** Loki + Prometheus + Tempo

Подъём

# prod (нужен deploy/.env.prod с DEAL_GRAFANA_ADMIN_PASSWORD)
docker compose --env-file deploy/.env.prod -f deploy/compose.prod.yml --profile observability up -d

# dev
docker compose -f deploy/compose.dev.yml --profile observability up -d

Проверка: Prometheus /targets (job deal — 4 процесса UP, cadvisor, node-exporter, tempo) → Grafana → папка «Дейл» → Deal-Metrics-Overview / Deal-Logs / Deal-Traces / Deal-Resources.

Подключение сервисов (код)

Общая настройка — Deal.Grpc.Hosting (сервисы) и Deal.Api/Observability (ядро):

  • метрики: DealMetricsHosting — OTel → Prometheus, отдельный HTTP/1.1-эндпоинт /metrics:9464 (env METRICS_PORT);
  • трейсы: DealTracingHosting — OTel → OTLP, опт-ин через env OTEL_EXPORTER_OTLP_ENDPOINT (адрес коллектора; без него трейсинг выключен), имя сервиса — OTEL_SERVICE_NAME;
  • логи: Serilog JSON обогащается TraceId/SpanId (TraceContextEnricher) для связи с трейсами.

Дашборды и алерты

Дашборды — как код: grafana/dashboards/*.json (правки только в репозитории, UI не сохраняет). Алерты — prometheus-rules.yml (доступность, ошибки/5xx, очереди). Алерты по ресурсам вынесены в prometheus-resource-rules.yml и отключены по умолчанию; включаются добавлением файла в rule_files, пороги — через env DEAL_ALERT_* (см. шапку файла).

Обновление версий образов

Версии зафиксированы в compose-файлах. При обновлении — свежие стабильные теги: otel/opentelemetry-collector-contrib, grafana/tempo, prom/node-exporter, gcr.io/cadvisor/cadvisor, grafana/loki, grafana/promtail, prom/prometheus, grafana/grafana.