Кабинет

Уведомления и сводка

Что показывают «Обзор» и колокольчик, из чего считаются цифры и чего в уведомлениях пока нет.

На этой странице · 3

«Обзор» — первый экран кабинета: сколько запросов прошло за сутки, какая доля ошибок, что случилось последним и какие сервисы сколько методов отдают. Все цифры считаются по журналу запросов и по каталогу в момент запроса; в вёрстку не зашито ни одно число.

Сводка

GET /api/overview собирает четыре блока.

Что в ответе

БлокСодержимое
kpiзапросы за 24 часа, рост к предыдущим суткам, средняя задержка, доля ошибок, активные ключи
recentвосемь последних запросов: сервис, метод, путь, код, время, ключ
alertsпять свежих уведомлений
servicesпо каждому сервису: число методов, дата снимка спецификации, статус
{
  "requests24h": 929,
  "requestsGrowthPercent": 91.94214876033058,
  "avgLatencyMs": 227,
  "errorRatePercent": 3.4445640473627552,
  "activeKeys": 8
}

Как читать эти цифры:

  • Рост считается к предыдущим суткам — окну «от 48 до 24 часов назад». Если тогда запросов не было, поле равно null, а не нулю: делить не на что, и рисовать «+100 %» было бы враньём.
  • Доля ошибок — запросы с кодом 400 и выше от всех запросов за сутки.
  • Активные ключи — все, кроме отозванных. Ключ со статусом «истекает» продолжает работать и считается активным.
  • Число методов и дата снимка берутся из каталога, который живёт в памяти движка; в базу за ними не ходят. Сервис без методов получает статус planned.

Ещё два эндпоинта того же экрана: GET /api/search ищет метод сразу по трём демо-API (совпадение в пути ценнее, чем в описании), а GET /api/search/preview/:id показывает предполагаемый обмен — запрос и ответ — не уходя с экрана и не записывая ничего в журнал.

Счётчики сайдбара

GET /api/auth/me возвращает шесть счётчиков одним заходом — сайдбар рисуется на каждом экране, и делать ради него пять последовательных запросов к базе значило бы платить их задержками при каждом переходе.

{
  "usage": {"requestsThisMonth": 1416, "hasLimits": false},
  "counts": {"requestsToday": 42, "keys": 10, "mocks": 13, "webhooks": 7, "alerts": 3, "catalogMethods": 2421}
}

requestsThisMonth — это запросы за последние 30 дней, а не за календарный месяц. hasLimits: false — не заглушка: лимитов на количество ключей и запросов у продукта нет.

Блок «Первые шаги» тоже считается по данным: шаг «Создайте ключ» отмечен, когда ключей больше нуля, «Сделайте первый запрос» — когда есть запросы за 30 дней, и так далее. Когда пройдены все четыре, блок исчезает.

Уведомления

Колокольчик в шапке открывает GET /api/alerts — двадцать свежих записей. У каждой пять полей: важность (info, warning, danger), заголовок, вторая строка meta, имя иконки и ссылка на экран кабинета, где это чинится. Например, уведомление об ошибках 500 у Ozon ведёт на /logs?status=500 — журнал открывается сразу с этим фильтром.

Точка на колокольчике означает ровно «уведомления есть», а не «есть непрочитанные»: прочитанность в кабинете не показывается и пометить уведомление прочитанным из интерфейса нельзя.

Уведомления пока не появляются сами

В коде нет ни одного места, которое создаёт уведомление в рантайме: истёкший ключ, серия неудачных доставок вебхука или всплеск ошибок сейчас уведомление не заводят. Все записи, которые вы видите в демо-песочнице, кладёт сид демо-данных. Правил, по которым уведомление появляется, в продукте ещё нет — читайте панель как витрину формата, а не как работающий мониторинг.

Пока это так, следить за ошибками стоит по журналу: фильтр «Код ответа» → 5xx за нужный период, а не по колокольчику.