Мониторинг Basis Dynamix с помощью Proto Observability Platform
На этой странице:
- Сбор метрик Basis Dynamix Enterprise
Сбор метрик Basis Dynamix Enterprise
Интеграция basis_dynamix собирает метрики из платформы виртуализации
Basis Dynamix Enterprise через её REST API. Источники данных:
- учетные записи (consumption / reserved / limits),
- ресурсные группы (consumption / reserved / limits),
- виртуальные машины: аллокация (vCPU, RAM, диски, статус) из
cloudapi/compute/list, живая утилизация (vCPU / RAM / диск) изcloudbroker/resmon/getByComputes, рантайм диск/сеть I/O изcloudapi/prometheus/computes, - вычислительные узлы / гипервизоры: ёмкость (CPU, RAM, NUMA, overcommit,
статус) из
cloudbroker/node/listи живая утилизация (CPU% / RAM% по узлу) изcloudbroker/resmon/get_by_nodes.
Версия Dynamix и API
Страница описывает интеграцию для Basis Dynamix 4.6. Используется гибрид двух
контуров API: cloudapi (аккаунты, ресурсные группы, список ВМ, Prometheus) и
cloudbroker (гипервизоры через node/list и живая утилизация через resmon).
Контур cloudbroker требует токен с правами администратора.
В 4.6 сущность stack переименована в node, а вызов resmon/getByStacks — в
resmon/get_by_nodes (функциональность та же); resmon/getByCompute(s) сохранил
имя. Эндпоинты resmon агрегируют данные по часу: окно запроса короче
~3600 с возвращает пустой результат, поэтому окно вынесено в отдельный
параметр resmon_window_seconds (по умолчанию и минимум — 3600), не связанный
с lookback_seconds.
В системе доступен сбор метрик аккаунтов, ресурсных групп, виртуальных машин и гипервизоров; поставляются встроенные дашборды для визуализации иерархии сущностей и их метрик:

Метрики нормализуются: имена и ключи приводятся к нижнему регистру, пробелы и
дефисы заменяются на _. В protoobp имена метрик не содержат точек — точки
заменяются на _: агент эмитит basis_dynamix.<...>, в хранилище и запросах это
basis_dynamix_<...>. Все имена метрик в этом документе приведены в итоговом виде
(с _). Для метрик Prometheus дополнительно удаляется префикс compute из имени
метрики.
Конфигурация ProtoOBP агента
Поставка интеграции
Файлы интеграции пока не входят в дистрибутив Агента. Для полученияchecks.d/basis_dynamix.py и шаблона conf.d/basis_dynamix.d/conf.yaml
обратитесь в техническую поддержку вендора или к вашему системному
интегратору.Если агент запускается в виде службы на хосте
Положите файл проверки
basis_dynamix.pyв/etc/protoobp-agent/checks.d/.Создайте файл
/etc/protoobp-agent/conf.d/basis_dynamix.d/conf.yaml:init_config: instances: - client_id: "<BASIS_CLIENT_ID>" client_secret: "<BASIS_CLIENT_SECRET>" base_url: "https://dynamix.example.ru" sso_url: "https://sso-dynamix.example.ru/v1/oauth/access_token" timeout: 10 ssl_verify: false min_collection_interval: 20 tags: - platform:basis_dynamix # Опционально: размер страницы cloudapi/compute/list (для парков 1000+ ВМ) #compute_page_size: 1000 # Опционально: окно живой утилизации resmon (get_by_nodes / getByComputes), # секунды. Эндпоинты агрегируют по часу — значения < 3600 возвращают пустой # ответ. По умолчанию и минимум 3600; меньшие значения поднимаются до 3600. #resmon_window_seconds: 3600 # Опционально: Prometheus compute метрики (рантайм ВМ). # Имена нормализуются в basis_dynamix_compute_* без префикса "compute". # Пример: computeReadBytes -> basis_dynamix_compute_readbytes. # Если не задано — используется встроенный набор по умолчанию # (CPU, память, диск/сеть I/O). #prometheus_metric_ids: # - computeCPUload # - computeMemoryUsage # - computeMemoryUsed # - computeMemoryAvailable # - computeReadBytes # - computeReadRequests # - computeWriteBytes # - computeWriteRequests # - computeReceiveBytes # - computeTransmitBytes # - computeReceivePackets # - computeTransmitPackets prometheus_for_last: 300 # окно агрегации Prometheus, секунды prometheus_step: 15 # шаг; сервер требует for_last >= 2*step #prometheus_decimal_places: 0Перезапустите агента:
systemctl restart protoobp-agent.
Если агент запускается в виде Docker контейнера
В этом сценарии файл проверки и конфигурация монтируются с хоста внутрь контейнера агента, а параметры подключения к Basis Dynamix передаются через переменные окружения. Так не нужно хранить секреты в YAML и пересобирать образ при ротации кредов.
1. Подготовьте каталог рядом с docker-compose.yml:
.
├── docker-compose.yml
├── .env
├── checks.d/
│ └── basis_dynamix.py
└── conf.d/
└── basis_dynamix.d/
└── conf.yaml
2. Файл conf.d/basis_dynamix.d/conf.yaml — без секретов; всё, что нужно
для подключения, придёт из переменных окружения:
init_config:
instances:
- # client_id / client_secret / base_url / sso_url придут из
# BASIS_CLIENT_ID / BASIS_CLIENT_SECRET / BASIS_BASE_URL / BASIS_SSO_URL —
# в YAML их можно не указывать.
lookback_seconds: 300
#resmon_window_seconds: 3600 # окно живой утилизации resmon; минимум 3600 (агрегация по часу)
timeout: 10
ssl_verify: false
min_collection_interval: 20
tags:
- platform:basis_dynamix
# Опционально: Prometheus compute метрики
#prometheus_metric_ids:
# - computeReadBytes
# - computeWriteBytes
# - computeReceiveBytes
# - computeTransmitBytes
#prometheus_for_last: 0
#prometheus_step: 20
#prometheus_decimal_places: 0
3. Файл .env рядом с docker-compose.yml (добавьте его в .gitignore):
# ProtoOBP backend
POBP_API_KEY=<your_protoobp_api_key>
POBP_BACKEND_URL=<your_protoobp_backend_url>
# Basis Dynamix Enterprise
BASIS_BASE_URL=https://dynamix.example.ru
BASIS_SSO_URL=https://sso-dynamix.example.ru/v1/oauth/access_token
BASIS_CLIENT_ID=<your_basis_client_id>
BASIS_CLIENT_SECRET=<your_basis_client_secret>
4. Файл docker-compose.yml:
services:
protoobp-agent:
container_name: protoobp-agent
image: registry.git.proto.group/protoobp/protoobp-artifacts/protoobp-agent:7.40.3
pid: host
ports:
- "8126:8126" # APM trace intake
- "8125:8125/udp" # DogStatsD
volumes:
# Хост-метрики и автоматическое обнаружение контейнеров:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /proc/:/host/proc/:ro
- /sys/fs/cgroup/:/host/sys/fs/cgroup:ro
- /etc/os-release:/host/etc/os-release:ro
# Файлы интеграции:
- ./checks.d:/etc/protoobp-agent/checks.d:ro
- ./conf.d/basis_dynamix.d:/etc/protoobp-agent/conf.d/basis_dynamix.d:ro
environment:
# Подключение к ProtoOBP backend
POBP_API_KEY: ${POBP_API_KEY}
POBP_POBP_URL: ${POBP_BACKEND_URL}
# Подключение к Basis Dynamix Enterprise
BASIS_BASE_URL: ${BASIS_BASE_URL}
BASIS_SSO_URL: ${BASIS_SSO_URL}
BASIS_CLIENT_ID: ${BASIS_CLIENT_ID}
BASIS_CLIENT_SECRET: ${BASIS_CLIENT_SECRET}
healthcheck:
test: ["CMD", "agent", "health"]
interval: 30s
timeout: 10s
retries: 3
Self-signed сертификаты
Если ProtoOBP агент работает с self-signed сертификатами Basis Dynamix (типичный случай для on-premise установок), вconf.yaml оставьте
ssl_verify: false. Корневой CA при необходимости можно добавить, смонтировав
его в /etc/ssl/certs/ внутри контейнера и обновив хранилище доверия.5. Запустите агента:
docker compose up -d
Если файл проверки или конфигурацию пришлось обновить уже после старта — перечитайте конфигурацию без перезапуска контейнера:
docker compose exec protoobp-agent agent reload
6. Проверьте, что проверка поднялась (см. Проверка ниже):
docker compose exec protoobp-agent agent status | grep -A 10 "basis_dynamix"
При смене кредов отредактируйте .env и выполните
docker compose up -d — контейнер перезапустится с новыми переменными
окружения, файл conf.yaml менять не нужно.
Переменные окружения
| Переменная | Назначение |
|---|---|
BASIS_CLIENT_ID | Идентификатор клиента OAuth2 (client_credentials). |
BASIS_CLIENT_SECRET | Секрет клиента OAuth2. |
BASIS_BASE_URL | Базовый URL Basis Dynamix Enterprise (REST API). |
BASIS_SSO_URL | URL получения токена SSO (endpoint oauth/access_token). |
Если значение указано и в YAML, и в переменной окружения, приоритет — у YAML.
Параметры конфигурации
| Параметр | Назначение |
|---|---|
client_id | Идентификатор клиента OAuth2 (см. также BASIS_CLIENT_ID). |
client_secret | Секрет клиента OAuth2 (см. также BASIS_CLIENT_SECRET). |
base_url | Базовый URL Basis Dynamix (см. также BASIS_BASE_URL). |
sso_url | URL получения токена SSO (см. также BASIS_SSO_URL). |
lookback_seconds | Не задаёт окно resmon (см. resmon_window_seconds); используется лишь как значение по умолчанию для prometheus_step. |
resmon_window_seconds | Окно живой утилизации resmon (get_by_nodes / getByComputes), секунды. Эндпоинты агрегируют по часу: значения < 3600 возвращают пустой ответ и поднимаются до 3600 (с предупреждением). По умолчанию 3600. |
timeout | Таймаут HTTP-запроса в секундах. |
ssl_verify | Проверка TLS-сертификата API. false — допускает self-signed сертификаты. |
tags | Статические теги, добавляемые ко всем метрикам. |
min_collection_interval | Интервал сбора на уровне агента, секунды. |
compute_page_size | Размер страницы cloudapi/compute/list (пагинация). По умолчанию 1000. |
prometheus_metric_ids | Список Prometheus-метрик для ВМ. Не задан — используется встроенный набор по умолчанию; пустой список [] — Prometheus-сбор отключён. |
prometheus_for_last | Диапазон в секундах для Prometheus (forLast). 0 — берётся последняя точка. |
prometheus_step | Шаг в секундах для Prometheus. Если prometheus_for_last > 0, берётся отсюда либо из min_collection_interval. |
prometheus_decimal_places | Количество знаков после запятой в значениях Prometheus. |
Префикс метрик basis_dynamix_ не настраивается.
Как происходит сбор метрик
- Получение SSO-токена через
sso_url(grant_type=client_credentials). - Список аккаунтов:
cloudapi/account/list(берутся только со статусомCONFIRMED). Для каждого аккаунта —cloudapi/account/getResourceConsumption(изConsumed/Reserved/resourceLimitsформируютсяaccount_*). - Список ресурсных групп:
cloudapi/rg/list. Для каждой РГ —cloudapi/rg/getResourceConsumption(rgId/gid— альтернативные идентификаторы при HTTP 400/404). - Вычислительные узлы (гипервизоры):
cloudbroker/node/list(требует admin-токен). ИзcpuInfo,memory,numaTopology,*_allocation_ratioиstatusформируются метрикиnode_*— это ёмкость, не утилизация. - Живая утилизация узлов:
cloudbroker/resmon/get_by_nodesс окном{starttime, endtime}(=resmon_window_seconds). Изusageформируютсяnode_usage_*(CPU% / RAM / vCPU по узлу), изcpuInfo—node_usage_cpu_info_*— отдельное от ёмкости пространство имён, источники не пересекаются. - Список ВМ:
cloudapi/compute/listс пагинацией (page/size). Из полей ответа формируются метрики аллокацииcompute_cpus/compute_ram/compute_total_disks_size/compute_disk_count/compute_vins_connected/compute_up, аidкаждой ВМ собирается в список для запроса Prometheus. - Живая утилизация ВМ:
cloudbroker/resmon/getByComputesс тем же окном. Изusageформируютсяcompute_usage_*(vCPU / RAM / CPU-время / storage), изdisks— агрегатыcompute_disk_size_max/compute_disk_size_used. Утилизация привязывается к уже собранным тегам ВМ поcomputeId. - Prometheus по ВМ (рантайм диск/сеть I/O):
cloudapi/prometheus/computesс параметрамиcomputeIds,metricIds,forLast,step,decimalPlaces. Ответ имеет вид{"<id>": {"<metricId>": [{"timestamp", "value"}, …]}}; из каждой серии берётся последняя точка.
Стадии выполняются с общим дедлайном (≈ 0.9 × min_collection_interval): если
бюджет времени исчерпан, медленные стадии пропускаются, а уже собранные метрики
публикуются. Во всех блоках публикуются только числовые значения (булевы и
нечисловые поля игнорируются). HTTP-уровень построен на requests
(RequestsWrapper агента): пул соединений, ретраи на
429/5xx/таймаут/connection-error и потоковое ограничение размера ответа.
Теги, добавляемые автоматически
В зависимости от типа метрики и данных API добавляются теги:
account_id,account_namerg_id,rg_name,rg_gid,rg_guidcompute_id,compute_name(метрики ВМ)node_id,node_name(метрики гипервизоров)
К каждой точке также добавляются статические теги из параметра tags.
Высококардинальные поля (IP / MAC сетевых интерфейсов, идентификаторы дисков) в теги не выносятся.
Проверка
Убедитесь, что проверка запустилась и собирает метрики:
docker exec protoobp-agent agent status | grep -A 10 "basis_dynamix"
Ожидаемый вывод — Instance ID: ... [OK] и ненулевое Metric Samples:
basis_dynamix (0.1.0)
---------------------
Instance ID: basis_dynamix:6f0a4c12d3a7b8e9 [OK]
Configuration Source: file:/etc/protoobp-agent/conf.d/basis_dynamix.d/conf.yaml
Total Runs: 120
Metric Samples: Last Run: 842, Total: 101,040
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 1, Total: 120
Average Execution Time : 2.815s
Last Execution Date : 2026-05-13 13:47:16 UTC
Last Successful Execution Date : 2026-05-13 13:47:16 UTC
Запустить проверку вручную:
docker exec protoobp-agent agent check basis_dynamix
Сервисные проверки
basis_dynamix_api— статус сбора метрик за итерацию (OK/CRITICAL).
Список метрик
Метрики аккаунтов
| Метрика | Описание | Метки |
|---|---|---|
basis_dynamix_account_consumed_<resource> | Потребление ресурсов аккаунтом. | account_id, account_name |
basis_dynamix_account_reserved_<resource> | Зарезервированные ресурсы аккаунта. | account_id, account_name |
basis_dynamix_account_limits_<resource> | Лимиты (квоты) ресурсов аккаунта. | account_id, account_name |
Типичные значения <resource>: cpu, ram, disksize, disksizemax,
extips, gpu, gpu_units, cu_c, cu_d, cu_dm, cu_i, cu_m.
Метрики ресурсных групп
| Метрика | Описание | Метки |
|---|---|---|
basis_dynamix_rg_consumed_<resource> | Потребление ресурсов ресурсной группы. | account_id, account_name, rg_id, rg_name, rg_gid, rg_guid |
basis_dynamix_rg_reserved_<resource> | Зарезервированные ресурсы ресурсной группы. | account_id, account_name, rg_id, rg_name, rg_gid, rg_guid |
basis_dynamix_rg_limits_<resource> | Лимиты ресурсов ресурсной группы. | account_id, account_name, rg_id, rg_name, rg_gid, rg_guid |
Набор <resource> — тот же, что и для аккаунтов.
Метрики виртуальных машин
Метки: account_id, account_name, rg_id, rg_name, compute_id,
compute_name.
Аллокация / инвентарь (из cloudapi/compute/list):
| Метрика | Описание |
|---|---|
basis_dynamix_compute_cpus | Количество выделенных vCPU. |
basis_dynamix_compute_ram | Выделенная RAM, MB. |
basis_dynamix_compute_bootdisk_size | Размер загрузочного диска, ГБ. |
basis_dynamix_compute_total_disks_size | Суммарный размер всех дисков ВМ, ГБ. |
basis_dynamix_compute_disk_count | Количество дисков ВМ. |
basis_dynamix_compute_vins_connected | Количество подключённых внутренних сетей (ViNS). |
basis_dynamix_compute_up | Состояние питания (1 — STARTED, иначе 0). |
Живая утилизация (из cloudbroker/resmon/getByComputes, раздел usage):
| Метрика | Описание |
|---|---|
basis_dynamix_compute_usage_vcpusconsumed | Используемые vCPU. |
basis_dynamix_compute_usage_vcpusreserved | Зарезервированные vCPU. |
basis_dynamix_compute_usage_ramconsumed | Выделенная RAM, MB. |
basis_dynamix_compute_usage_ramconsumedreal | Фактически используемая RAM, MB. |
basis_dynamix_compute_usage_ramreserved | Зарезервированная RAM, MB. |
basis_dynamix_compute_usage_cputime | Загрузка CPU, %. |
basis_dynamix_compute_usage_storage | Суммарный размер дисков ВМ. |
basis_dynamix_compute_usage_extips | Количество внешних IP. |
Агрегаты по дискам (из resmon/getByComputes, раздел disks):
| Метрика | Описание |
|---|---|
basis_dynamix_compute_disk_size_max | Суммарный максимальный размер дисков ВМ. |
basis_dynamix_compute_disk_size_used | Суммарно занятое место на дисках ВМ. |
Рантайм диск/сеть I/O ВМ поступает из Prometheus — см. Метрики Prometheus для ВМ.
Гранулярность resmon
Метрикиcompute_usage_* и compute_disk_size_* агрегируются платформой
по часу (окно resmon_window_seconds, минимум 3600 с), поэтому значение
может отставать до ~1 часа. Для более частой картины используйте Prometheus-метрики
ВМ (compute_cpuload, compute_memoryused, …). Признак питания публикуется
метрикой compute_up (из cloudapi/compute/list, поле techStatus); булево поле
isUp из resmon отдельной метрикой не публикуется.Метрики вычислительных узлов (гипервизоры)
Метки: node_id, node_name. Источников два: cloudbroker/node/list даёт
ёмкость / конфигурацию узла, а cloudbroker/resmon/get_by_nodes — живую
утилизацию (CPU% / RAM% по узлу). Оба контура требуют admin-токен.
Ёмкость / конфигурация (из cloudbroker/node/list):
| Метрика | Описание |
|---|---|
basis_dynamix_node_cpu_info_corecount | Количество физических ядер CPU узла. |
basis_dynamix_node_cpu_info_clockspeed | Тактовая частота CPU, MHz. |
basis_dynamix_node_memory | Объём оперативной памяти узла, MB. |
basis_dynamix_node_numa_nodes | Количество NUMA-доменов узла. |
basis_dynamix_node_cpu_allocation_ratio | Коэффициент переподписки (overcommit) CPU. |
basis_dynamix_node_mem_allocation_ratio | Коэффициент переподписки (overcommit) RAM. |
basis_dynamix_node_up | Состояние узла (1 — ENABLED, иначе 0). |
Живая утилизация (из cloudbroker/resmon/get_by_nodes, раздел usage):
| Метрика | Описание |
|---|---|
basis_dynamix_node_usage_cpuutil | Загрузка CPU узла, %. |
basis_dynamix_node_usage_pcpu | Загрузка физических CPU (как возвращает API). |
basis_dynamix_node_usage_cpupower | Вычислительная мощность CPU узла. |
basis_dynamix_node_usage_usedvcpus | Используемые vCPU на узле. |
basis_dynamix_node_usage_usedmem | Используемая RAM узла, MB. |
basis_dynamix_node_usage_reservedmem | Зарезервированная RAM узла, MB. |
basis_dynamix_node_usage_freemem | Свободная RAM узла, MB. |
Из раздела cpuInfo того же ответа (живые числовые поля):
basis_dynamix_node_usage_cpu_info_clockspeed, …_corecount, …_physcount,
…_threadcount. Нечисловые поля (model_name, flags) не публикуются.
Гранулярность и доступность
Метрикиnode_usage_* агрегируются платформой по часу (окно
resmon_window_seconds, минимум 3600 с). Пространство имён node_usage_*
намеренно отделено от ёмкостных node_* (node_memory, node_cpu_info_*) —
источники не перезаписывают друг друга.Не у всех узлов есть CPU-данные
cpu_info_* и numa_nodes присутствуют только у вычислительных узлов
(compute). У управляющих / storage-узлов (например, controller-*) этих полей
нет — для них публикуются только node_memory и node_up.Метрики Prometheus для ВМ
Источник — cloudapi/prometheus/computes; это рантайм-метрики ВМ. Префикс —
basis_dynamix_compute_ (без повторения слова compute в имени метрики).
Метки совпадают с метками ВМ (compute_id, compute_name, account_id,
account_name, rg_id, rg_name). Данные поступают только для запущенных
ВМ — у остановленных ряды пустые.
| Метрика | Описание |
|---|---|
basis_dynamix_compute_cpuload | Загрузка CPU ВМ, %. |
basis_dynamix_compute_memoryusage | Всего памяти ВМ, MB. |
basis_dynamix_compute_memoryused | Используемая память ВМ, MB. |
basis_dynamix_compute_memoryavailable | Доступная память ВМ, MB. |
basis_dynamix_compute_memoryusable | Память ВМ, пригодная к использованию, MB. |
basis_dynamix_compute_memoryunused | Неиспользуемая память ВМ, MB. |
basis_dynamix_compute_readbytes | Прочитано байт с дисков ВМ. |
basis_dynamix_compute_readrequests | Операции чтения с дисков ВМ. |
basis_dynamix_compute_writebytes | Записано байт на диски ВМ. |
basis_dynamix_compute_writerequests | Операции записи на диски ВМ. |
basis_dynamix_compute_receivebytes | Входящий сетевой трафик ВМ. |
basis_dynamix_compute_transmitbytes | Исходящий сетевой трафик ВМ. |
basis_dynamix_compute_receivepackets | Входящие сетевые пакеты ВМ. |
basis_dynamix_compute_transmitpackets | Исходящие сетевые пакеты ВМ. |
Полный список допустимых metricIds: computeCPUload, computeMemoryUsage,
computeMemoryUsable, computeMemoryUnused, computeMemoryUsed,
computeMemoryAvailable, computeReadBytes, computeReadRequests,
computeReceiveBytes, computeReceivePackets, computeTransmitBytes,
computeTransmitPackets, computeWriteBytes, computeWriteRequests.
Значения берутся из последней точки ряда за период prometheus_for_last.