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

Метрики Prometheus

Эндпоинт: GET /metrics (порт 8000)

Prometheus настроен на сбор метрик в prometheus.yml:

scrape_configs:
  - job_name: 'photo-api'
    scrape_interval: 15s
    metrics_path: '/metrics'
    static_configs:
      - targets: ['api:8000']

Метрики приложения

Определены в app/core/metrics.py.

photos_uploaded_total

Поле Значение
Тип Counter
Help Total photos uploaded
Labels

Инкрементируется при успешной загрузке фото.

http_requests_total

Поле Значение
Тип Counter
Help Total HTTP requests
Labels method, path, status_code

Инкрементируется на каждый входящий HTTP запрос (middleware в main.py:82-85).

http_request_duration_seconds

Поле Значение
Тип Histogram
Help HTTP request duration
Labels method, path, status_code
Buckets [0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 0.75, 1.0, 2.5, 5.0, 10.0]

Записывает длительность каждого HTTP запроса.

storage_upload_errors_total

Поле Значение
Тип Counter
Help MinIO upload errors
Labels error_code

Инкрементируется при ошибках MinIO.

kafka_publish_errors_total

Поле Значение
Тип Counter
Help Kafka publish errors
Labels topic

Инкрементируется при ошибках публикации в Kafka.


Метрики из БД

Агрегируются в app/integrations/metrics_db.py через прямой SQL.

photo_analysis_completed_total

Поле Значение
Тип Counter
Labels status ("done" / "failed")

Количество завершённых анализов по статусу.

photo_analysis_failed_total

Поле Значение
Тип Counter
Help Analysis permanently failed

Количество фото, перешедших в статус failed.

photo_analysis_duration_seconds

Поле Значение
Тип Histogram
Buckets 1, 5, 10, 30, 60, 120, +Inf
Help Analysis duration from upload to completion

Гистограмма времени между photos.load_time и photo_analysis.analysis_at.

analyzer_grpc_errors_total

Поле Значение
Тип Counter
Help Total gRPC analyzer retries

Вычисляется как SUM(attempts) - COUNT(done|failed). Отражает количество лишних попыток, связанных с ошибками gRPC (разница между общим числом попыток и успешно/безуспешно обработанными фото).

worker_messages_processed_total

Поле Значение
Тип Counter
Labels result ("success" / "error")

Количество сообщений, обработанных worker-ом.

consumer_lag

Поле Значение
Тип Gauge
Help Photos waiting in queue (pending + processing)

Количество фото, ожидающих обработки или в процессе.

messages_in_queue

Поле Значение
Тип Gauge
Help Photos pending

Количество фото в статусе pending.


Пример вывода /metrics

# HELP http_requests_total Total HTTP requests
# TYPE http_requests_total counter
http_requests_total{method="GET",path="/api/v1/photos/",status_code="200"} 42
http_requests_total{method="POST",path="/api/v1/photos/",status_code="202"} 15

# HELP photos_uploaded_total Total photos uploaded
# TYPE photos_uploaded_total counter
photos_uploaded_total 15

# HELP consumer_lag Photos waiting in queue (pending + processing)
# TYPE consumer_lag gauge
consumer_lag 3