Мониторинг системы — Grafana & Prometheus¶
В проекте Архыз.CLUB Grafana используется для операционного мониторинга (Observability).
1. Источники данных¶
- PostgreSQL (Supabase): Прямые SQL-запросы к базе данных для бизнес-метрик и очередей.
- Node Exporter / Cadvisor: Метрики контейнеров (CPU, RAM).
- 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_activitycount. - Active Celery Tasks: Количество задач в очереди.
- API RPS:
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 сети)