# Grafana — provisioning датасорсов Loki (логи) и Prometheus (метрики) — Ruling 7/9; метрики — этап 12, пакет A. # Монтируется в /etc/grafana/provisioning/datasources (compose.prod.yml). apiVersion: 1 datasources: - name: Loki # UID фиксирован: на него ссылаются панели дашбордов Deal-Health/Auth/Errors/Rps/Logs (datasource uid: loki). uid: loki type: loki access: proxy url: http://loki:3100 isDefault: true jsonData: maxLines: 1000 # Клик по TraceId в логе открывает трейс в Tempo (обогащение логов TraceContextEnricher). derivedFields: - name: TraceID matcherRegex: '"TraceId":"([0-9a-f]+)"' datasourceUid: tempo url: "$${__value.raw}" - name: Prometheus # UID фиксирован: на него ссылаются панели дашборда Deal-Metrics-Overview (datasource uid: prometheus). # URL — сервис compose-профиля observability; метрики scrape'ит сам Prometheus с /metrics процессов. uid: prometheus type: prometheus access: proxy url: http://prometheus:9090 isDefault: false jsonData: # Prometheus хранит OTel-гистограммы в нативных bucket'ах — используем нативные histogram_quantile. httpMethod: POST timeInterval: 15s - name: Tempo # UID фиксирован: на него ссылаются панели Deal-Traces и derivedFields логов (datasource uid: tempo). uid: tempo type: tempo access: proxy url: http://tempo:3200 isDefault: false jsonData: # Из спана трейса — к логам того же сервиса и traceId (обратная корреляция Loki ↔ Tempo). tracesToLogsV2: datasourceUid: loki filterByTraceID: true filterBySpanID: false spanStartTimeShift: -1m spanEndTimeShift: 1m # Карта сервисов и граф узлов — из метрик Prometheus. serviceMap: datasourceUid: prometheus nodeGraph: enabled: true