Skip to content

Public Status Page ​

Публичная страница статуса без аутентификации. Можно встроить на свой сайт через iframe или показывать badge в README.

Страница /status ​

Доступна без логина по адресу https://your-domain/status.

Показывает:

  • Общий статус всех систем (overall)
  • Карточки сервисов с разбивкой SLO по статусам
  • Health score в процентах
  • Время последнего обновления

Автообновление каждые 30 секунд.

Badge для README ​

Каждый сервис имеет SVG badge, который можно вставить в README или документацию:

markdown
![Service Status](https://your-domain/api/v1/public/badge/My%20Service.svg)

Badge обновляется автоматически (cache 60 секунд).

Цвета:

  • Зелёный — healthy
  • Оранжевый — at_risk
  • Красный — breached
  • Серый — no_data / unknown

Embed iframe ​

На странице /status есть кнопка "Copy iframe snippet" — копирует готовый HTML:

html
<iframe src="https://your-domain/status" width="100%" height="600" frameborder="0"></iframe>

API ​

GET /api/v1/public/status ​

Аутентификация: не требуется CORS: разрешён для всех доменов (Access-Control-Allow-Origin: *) Cache: public, max-age=30

Ответ:

json
{
  "generated_at": "2026-10-14T15:00:00Z",
  "overall": "healthy",
  "services": [
    {
      "name": "API Service",
      "status": "healthy",
      "total_slos": 5,
      "healthy": 5,
      "at_risk": 0,
      "breached": 0,
      "no_data": 0,
      "overall_score": 100.0
    }
  ]
}

GET /api/v1/public/badge/{name}.svg ​

Аутентификация: не требуется Content-Type: image/svg+xmlCache: public, max-age=60

Возвращает SVG в стиле shields.io. Имя сервиса в пути URL-encoded.

Пример: /api/v1/public/badge/Gurushots%20Challenges%20Found.svg

Безопасность ​

Публичный endpoint отдаёт только агрегированную статистику — названия сервисов и количество SLO по статусам. Не раскрываются:

  • PromQL запросы
  • Пороги и бюджеты
  • Имена SLO
  • Внутренние метрики

Если нужно скрыть сервис с публичной страницы — деактивируйте его (soft-delete) или используйте reverse proxy для блокировки /api/v1/public/*.