Перейти к содержанию

Мониторинг системы — Grafana & Prometheus

В проекте Архыз.CLUB Grafana используется для операционного мониторинга (Observability).

1. Источники данных

  1. PostgreSQL (Supabase): Прямые SQL-запросы к базе данных для бизнес-метрик и очередей.
  2. Node Exporter / Cadvisor: Метрики контейнеров (CPU, RAM).
  3. FastAPI Prometheus Middleware: Метрики производительности API (RPS, Latency).

2. Дашборды

Dashboard 1: Platform Health (DevOps)

Этот дашборд показывает техническое состояние платформы.

  • Panels:
    • API RPS: rate(http_requests_total[1m])
    • API Latency (p95): histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))
    • Error Rate (5xx): % ошибок от общего числа запросов.
    • Database Connections: pg_stat_activity count.
    • Active Celery Tasks: Количество задач в очереди.

Dashboard 2: Realtime Business (Operations)

Бизнес-мониторинг в реальном времени.

Panel: Active Users (Realtime)

Показывает пользователей онлайн прямо сейчас.

SELECT count(*) as online_users
FROM live_sessions
WHERE status = 'active'
  AND updated_at > now() - interval '5 minutes';

Panel: Bookings Stream (Last Hour)

Поток бронирований.

SELECT
  created_at as time,
  total_price as value,
  hotel_id as metric
FROM room_bookings
WHERE created_at > now() - interval '1 hour'
ORDER BY created_at ASC;

Panel: Revenue Today

SELECT sum(total_price)
FROM room_bookings
WHERE created_at >= current_date
  AND status IN ('confirmed', 'paid');

Panel: System Errors (Last 24h)

SELECT
  event_type,
  count(*) as count
FROM system_events
WHERE
  event_type LIKE '%error%'
  AND created_at > now() - interval '24 hours'
GROUP BY event_type
ORDER BY count DESC;

Dashboard 3: Modules Status

Состояние отдельных микросервисов/модулей.

  • Hotel Module: Availability checks count, Booking success rate.
  • Payment Module: YooKassa success rate, Webhook delays.
  • Notification Module: SMS delivery rate, Email bounce rate.

3. Алеринг (Alerting)

Grafana настроена на отправку алертов в Telegram/Slack при: 1. High Error Rate: > 5% ошибок API за 5 минут. 2. Zero Bookings: Нет бронирований в дневное время более 1 часа. 3. Payment Failures: Всплеск ошибок оплаты. 4. High Latency: p95 API latency > 2s.

4. Настройка Grafana DataSource

Для подключения PostgreSQL в Grafana: * Host: db:5432 * Database: postgres * User: postgres (или специальный grafana_reader) * Password: ${POSTGRES_PASSWORD} * SSL Mode: disable (внутри docker сети)