Перейти к основному содержимому

Инвентаризация и мониторинг

Сводка по парку машин нужна почти любому клиенту: сколько всего, сколько работает, сколько создаётся, сколько сломано. Считать это обходом страниц списка не нужно и не следует — есть серверные счётчики, которые не зависят от размера проекта.

Сводка по машинам одним запросом

Эндпоинт счётчиков возвращает total и две разбивки: byStatus по статусам жизненного цикла и byPowerState по питанию. Счётчики считаются на сервере, поэтому остаются верными независимо от того, сколько машин в проекте.

curl --request GET \
  --url 'https://api.zennohosting.com/v1/projects/{projectId}/vms/state-counts' \
  --header 'Authorization: Bearer <token>' \
  --header 'Accept: application/json'

Как читать две разбивки

  • В byStatus присутствуют все пять статусов всегда: статус без машин возвращается как 0. Сумма полей равна total.

  • Каждое поле byStatus совпадает с числом строк, которые вернёт список машин по соответствующему фильтру status== на тех же данных. Это удобно для перехода «плитка со счётчиком → отфильтрованный список».

  • В byPowerState только running и stopped. Машины, у которых состояния питания ещё нет, потому что они создаются, здесь не учитываются — поэтому сумма этих двух полей может быть меньше total. Это не расхождение данных, а ожидаемое поведение.

Счётчики не кешируются

Два вызова, сделанных во время изменения машин, могут дать разные числа. Для панели состояния это нормально: не стройте логику на предположении, что два последовательных ответа совпадут, и не сверяйте счётчики со списком, полученным другим запросом в другой момент времени.

Счётчики уровня проекта

Ответ проекта содержит resourceCounts с полями vms, networks и publicIps. Это то, что нужно для списка проектов: по одному запросу на проект без обхода вложенных коллекций. Поле vmCount в том же ответе помечено устаревшим — используйте resourceCounts.vms.

Когда нужен именно список

Счётчики отвечают на вопрос «сколько». Когда нужен ответ «какие именно», используйте список машин с постраничной навигацией, сортировкой и фильтрами.

  • page начинается с 1, pageSize по умолчанию 20 и ограничивается сервером диапазоном 1–100.

  • Сортировка задаётся через sorts: префикс - означает убывание. По умолчанию для машин действует -createdAt,name.

  • Фильтры задаются через filters в формате field<operator>value, например status==active или cpu>=4. Перечень допустимых полей у каждого эндпоинта свой и указан в его описании в справочнике.

curl --request GET \
  --url 'https://api.zennohosting.com/v1/projects/{projectId}/vms?page=1&pageSize=20&filters=status==active&sorts=-createdAt,name' \
  --header 'Authorization: Bearer <token>' \
  --header 'Accept: application/json'
  1. 1

    Постройте сводку на счётчиках

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

  2. 2

    Свяжите плитку с отфильтрованным списком

    Клик по счётчику статуса ведёт в список с фильтром status== того же значения — числа совпадут, потому что считаются по одним и тем же данным.

  3. 3

    Отдельно покажите failed

    Статус failed означает, что ресурс сам не восстановится и нужно вмешательство команды провайдера. Это единственный статус, который стоит выделять как требующий действий, — остальные проходят сами.

  4. 4

    Добавьте остаток по квотам

    Рядом со сводкой полезен остаток из GET /limits: сколько машин, сетей и адресов ещё можно создать и сколько осталось ядер, памяти и диска.

Метрики машины пока недоступны

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

Связанные эндпоинты