В предыдущем уроке упомянули Prometheus как де-фактор инструмент для сбора метрик.

Метрики — самые "дешевые" (в настройке, хранении) данные, которые позволяют заметно увеличить надежность системы. Топ за свои деньги.

Рассмотрим как настроить сбор метрик в Django "за 60 секунд" и получить 80% результата за 20% усилий. А также как получить оставшиеся "20%" результата с продвинутыми возможностями.

Как работает сбор метрик

Пишем про Prometheus, для Prom++/VictoriaMetrics/Thanos — тоже работает

Prometheus самостоятельно "ходит" по инфраструктуре и собирает метрики. Это называется pull-моделью. Поэтому для сбора метрик на стороне приложения достаточно создать endpoint, по которому эти метрики можно взять:

  1. Создать URL /metrics
  2. Отдавать по GET запросы в формате Prometheus Metrics:
# HELP http_requests_total The total number of HTTP requests.
# TYPE http_requests_total counter
http_requests_total{method="post",code="200"} 1027 1395066363000
http_requests_total{method="post",code="400"}    3 1395066363000

Прометеус будет приходить (обычно раз в 15-30 секунд) и забирать эти данные. Если у тебя несколько копий приложений, Prometheus согласно своей модели данных объединит метрики.

Секунда безопасности: на уровне ingress/nginx заблокируй доступ к /metrics. Не нужно чтобы "интернет" знал как работает твое приложение.

Так как Prometheus де-факто стандарт, то и самому наполнять /metrics не надо. Для этого есть готовые библиотеки.

Настройка за 60 секунд

Получить доступ к полному материалу
Полный текст доступен в курсе