👋 Привет! Мы уже собирали метрики с хоста…
А как насчёт мониторинга самого приложения?
Когда FastAPI-сервис работает в проде и доступен пользователям — важно следить за его здоровьем.
В этом нам помогают SLI (Service Level Indicators) — метрики, которые говорят, насколько надёжно и быстро работает наш сервис.
🔍 Что такое SLI?
Service Level Indicators — это количественные показатели, описывающие:
- 📈 Доступность (например, % успешных запросов — Error Rate)
- 🕒 Производительность (например, задержка ответов — Latency)
- ⚡ Нагрузка (RPS — запросы в секунду)
На их основе строят SLO/SLA: что мы обещаем пользователям по стабильности и скорости работы.
📊 Инструментирование FastAPI с Prometheus FastAPI Instrumentator
Собираем метрики сразу из приложения 👇
from prometheus_fastapi_instrumentator import Instrumentator
def setup_metrics(app):
Instrumentator(
should_group_status_codes=True,
should_ignore_untemplated=False,
excluded_handlers=["/metrics"],
).instrument(app).expose(app)
Что получаем на выходе:
- ✅ RPS (запросы/секунду)
- ❌ Error Rate (процент не 2xx ответов)
- 🐢 Latency (p50, p95, p99)
- 🔍 Расчёты по каждому endpoint
Хостим /metrics, собираем метрики в Prometheus, а потом — в Grafana.
👨💻 Личный опыт:
Это конфигурация и дашборд моего pet-проекта на микросервисах.
За 5 минут можно увидеть живую картину в Grafana с RPS и ошибками.
Но для production-сценариев стоит:
- 🛑 Следить за аптаймом и ответами критичных роутов
- 🚨 Настроить алерты по SLA
📣 Для алертов используем Alertmanager:
groups:
- name: fastapi_alerts
rules:
- alert: HighErrorRate
expr: rate(http_server_requests_total{status!~"2.."}[5m]) > 0.05
for: 2m
labels:
severity: warning
annotations:
summary: "Высокий уровень ошибок в FastAPI"
💬 Если нужно выложить конфиги дашборда с иллюстрации или настроить алерты для этих сервисов — пишите в комментариях.
