Prometheus API
Эндпоинты для расчёта SLO на основе Prometheus-запросов, получения метрик в реальном времени и проверки соединения с Prometheus.
POST /prometheus/calculate-slo
Расчёт значения SLO за заданный временной интервал. Запрос выполняется синхронно: сервер отправляет PromQL-запрос в Prometheus и возвращает результат.
Тело запроса
json
{
"slo_id": 1,
"time_window": "1h",
"include_details": true
}Успешный ответ (200)
json
{
"slo_id": 1,
"slo_name": "Доступность API",
"time_window": "1h",
"current_value": 99.943,
"target_value": 99.9,
"status": "healthy",
"error_budget": {
"total": 0.001,
"used": 0.00057,
"remaining": 0.00043,
"percentage_used": 57.0
},
"query_metrics": {
"good_events": 98423,
"total_events": 98500,
"window_seconds": 3600
},
"calculated_at": "2026-06-11T13:00:00Z"
}Поля ответа
| Поле | Описание |
|---|---|
current_value | Текущее значение SLO в процентах |
status | healthy (>= target), warning (< target, > 50% budget), critical (<= 50% budget), unknown |
error_budget.total | Допустимый процент ошибок |
error_budget.used | Использованный процент ошибок |
error_budget.remaining | Оставшийся процент ошибок |
error_budget.percentage_used | Процент использованного budget |
GET /real-time-metrics
Метрики в реальном времени для всех активных SLO в организации.
Успешный ответ (200)
json
{
"metrics": [
{
"slo_id": 1,
"slo_name": "Доступность API",
"current_value": 99.94,
"target_value": 99.9,
"status": "healthy",
"error_budget_used": 57.0,
"updated_at": "2026-06-11T13:00:05Z"
}
],
"total": 5
}POST /prometheus/queries
Создание Prometheus-запроса для SLO. Используется для настройки метрик, по которым будет считаться SLO.
Тело запроса
json
{
"slo_id": 1,
"query": "sum(rate(http_requests_total{status=~\"2..\"}[5m])) / sum(rate(http_requests_total[5m]))",
"query_type": "ratio",
"name": "Доступность по HTTP-статусам"
}Успешный ответ (201)
json
{
"id": 1,
"slo_id": 1,
"query": "sum(rate(http_requests_total{status=~\"2..\"}[5m])) / sum(rate(http_requests_total[5m]))",
"query_type": "ratio",
"name": "Доступность по HTTP-статусам",
"created_at": "2026-06-11T13:00:00Z"
}GET /prometheus/health
Проверка соединения с Prometheus. Выполняет запрос up за последние 5 минут и возвращает статус.
Успешный ответ (200)
json
{
"service": "prometheus",
"status": "healthy",
"message": "Prometheus is responding to queries",
"timestamp": "2026-06-11T13:00:00Z"
}При недоступности Prometheus (503)
json
{
"service": "prometheus",
"status": "unhealthy",
"error": "connection refused",
"timestamp": "2026-06-11T13:00:00Z"
}Сводная таблица
| Метод | Путь | Описание |
|---|---|---|
| POST | /prometheus/calculate-slo | Расчёт значения SLO по PromQL-запросу |
| GET | /prometheus/real-time-metrics | Метрики в реальном времени для всех SLO |
| POST | /prometheus/queries | Создание Prometheus-запроса |
| GET | /prometheus/health | Проверка здоровья Prometheus |