Skip to content

Service Catalog ​

Каталог сервисов — единая точка входа для обзора всех SLO по сервисам с drill-down до конкретных SLO.

Обзор ​

На странице /services отображаются карточки всех сервисов с агрегированной статистикой:

  • Общее количество SLO
  • Сколько healthy / at_risk / breached / no_data
  • Общий health score (%)
  • Статус-бейдж (вычисляется по приоритету: breached > at_risk > no_data > healthy)

Клик по карточке открывает детальный вид сервиса с полным списком SLO. Каждый SLO кликается и ведёт на страницу деталей /slos/{id}.

API ​

GET /api/v1/services ​

Возвращает список всех сервисов с агрегированной статистикой.

Аутентификация: Bearer token

Ответ:

json
{
  "services": [
    {
      "name": "Gurushots Challenges Found",
      "status": "healthy",
      "total_slos": 1,
      "healthy": 1,
      "at_risk": 0,
      "breached": 0,
      "no_data": 0,
      "overall_score": 100.0
    }
  ]
}

GET /api/v1/services/ ​

Возвращает детали сервиса со списком всех SLO и описанием.

Параметры пути:

  • name — название сервиса (URL-encoded)

Ответ:

json
{
  "name": "Gurushots Challenges Found",
  "description": "SLO для поиска челенджей пользователей",
  "total_slos": 1,
  "slos": [
    {
      "id": 1,
      "slo_name": "API availability",
      "target": 99.9,
      "budgeting_period": "30d",
      "indicator_type": "availability",
      "current_value": 99.95,
      "status": "healthy"
    }
  ]
}

PUT /api/v1/service-descriptions/ ​

Создаёт или обновляет описание сервиса.

Тело запроса:

json
{ "description": "API для поиска челенджей пользователей. Владелец: backend-team." }

Ограничения: максимум 2000 символов.

Хранение ​

Описания хранятся в таблице service_descriptions:

КолонкаТипОписание
service_nameTEXT PRIMARY KEYНазвание сервиса
descriptionTEXT NOT NULLОписание
updated_atTIMESTAMPTZВремя последнего обновления

Миграция: migrations/000009_service_descriptions.up.sql