Мониторинг vSphere / vCenter с помощью Proto Observability
На этой странице:
- Сбор метрик vSphere
- События vSphere
Сбор метрик vSphere
Интеграция vsphere собирает метрики через vSphere SOAP API
(/sdk на TCP 443) с помощью pyvmomi-клиента. JMX не используется
— образ агента берётся обычный, без суффикса -jmx.
Чек собирает 87 метрик семью группами: CPU, память, сеть, диск,
ресурсный шедулер (rescpu.*), системные (sys.*) и сводные
(vm.count / host.count). Дополнительно тянутся события vSphere
(power on/off, vMotion, reconfigure, clone, destroy и т.д.) и одна
Service Check на инстанс.
Конфигурация vCenter
Создайте read-only пользователя для агента (через vSphere Web Client → Administration → Single Sign On → Users and Groups или
dir-cliв Photon shell):user: protoobp@vsphere.local role: Read-only (или кастомная с минимальным набором — см. ниже) scope: на корневой объект vCenter, propagate=trueДля базового сбора метрик достаточно встроенной роли Read-only. Для сбора тегов через REST API дополнительно понадобятся привилегии
Global → vCenter Server,Global → TagиProfile-driven storage.Откройте сетевой доступ агенту до vCenter по TCP
443. Альтернативный порт не поддерживается — pyvmomi.SmartConnect в текущей версии чека ходит на дефолтный 443 без override-параметра.
ESXi напрямую не поддерживается
Чек целевой для vCenter Server, а не для одиночных ESXi-хостов. Если вы укажете вhost: адрес ESXi, агент опубликует ошибку и не
будет собирать метрики.Конфигурация ProtoOBP агента
Если агент запускается в виде службы на хосте
Создайте файл
/etc/protoobp-agent/conf.d/vsphere.d/conf.yaml:init_config: instances: - host: vcenter.example.com username: protoobp@vsphere.local password: "<PASSWORD>" # Чек — cluster-level, метрики не привязаны к хосту агента. # Обязательно true. empty_default_hostname: true # Текущая (non-legacy) реализация чека — обязательный параметр. use_legacy_check_version: false # 1 — базовый набор, 4 — все доступные performance counters. # 4 даёт ~1100 точек на каждый run на инвентарь из 10 VM + 7 host. collection_level: 4 # realtime — VM/Host метрики (резолюция 20s). # Для Datacenter / Cluster / Datastore нужен `historical`. collection_type: realtime # Тянуть события vCenter (power on/off, vMotion, reconfigure и т.п.). collect_events: true # Теги через REST API (vAPI). Включайте только при наличии # Read-only роли с правами Global → Tag. collect_tags: false # Самоподписанный сертификат vCenter — на проде корректный путь: # положить CA в ssl_capath. На стендах допустимо ssl_verify: false # (тогда добавьте tls_ignore_warning: true, чтобы убрать варнинги # urllib3 в логах чека). ssl_verify: true # ВАЖНО excluded_host_tags: - vsphere_type - vsphere_host - vsphere_cluster - vsphere_compute - vsphere_datacenter - vsphere_folder - vsphere_datastore - vsphere_resource_pool # Произвольные теги на всех метриках/событиях этого инстанса. tags: - env:production - vcenter:mainПерезапустите агента:
systemctl restart protoobp-agent.
Если агент запускается в виде Docker контейнера
vCenter — это внешний сервис, контейнером ProtoOBP не управляется, поэтому autodiscovery-лейблы здесь не применимы. Подсуньте конфиг файлом через bind-mount:
services:
protoobp-agent:
image: registry.git.proto.group/protoobp/protoobp-artifacts/protoobp-agent:7.40.3
volumes:
- ./agent-conf/vsphere.d/conf.yaml:/etc/protoobp-agent/conf.d/vsphere.d/conf.yaml:ro
environment:
POBP_API_KEY: <API_KEY>
POBP_POBP_URL: <protoobp-backend-url>
# Глобальные теги — навешиваются на все метрики/события агента
# (в дополнение к tags: внутри conf.yaml).
POBP_TAGS: env:production project:vcenter
Где ./agent-conf/vsphere.d/conf.yaml — тот же instances:-блок,
что описан в предыдущей секции (вместе с excluded_host_tags — без
него метрики придут без лейблов инвентаря).
Параметр excluded_host_tags
На практике это обязательный параметр: без него дашборды и алерты по виртуальным машинам, ESXi-хостам и кластерам не заработают.
excluded_host_tags:
- vsphere_type
- vsphere_host
- vsphere_cluster
- vsphere_compute
- vsphere_datacenter
- vsphere_folder
- vsphere_datastore
- vsphere_resource_pool
Проверка
Убедитесь, что проверка запустилась и собирает метрики:
docker exec protoobp-agent agent status | grep -A 8 "^ vsphere"
Ожидаемый вывод — Total Runs > 0, Last Successful Execution Date
заполнен, Metric Samples ненулевые:
vsphere (6.2.0)
Instance ID: vsphere:68d783e6f300152 [OK]
Total Runs: 3
Metric Samples: Last Run: 1106, Total: 3300
Events: Last Run: 2, Total: 4
Service Checks: Last Run: 1, Total: 3
Average Execution Time : 458ms
Собираемые метрики
В ProtoOBP backend (Prometheus / VictoriaMetrics) метрики приходят с
префиксом vsphere_.
Лейблы
Общие (на всех метриках)
Добавляются агентом и ProtoOBP backend’ом:
| Лейбл | Значение |
|---|---|
env | Тег env (через tags: в конфиге чека или POBP_TAGS) |
service | Тег service |
host | Имя инвентарного объекта vSphere (host, VM, datastore, cluster, DC) |
Специфичные для vSphere
Лейблы инвентаря требуют `excluded_host_tags`
Всеvsphere_*-лейблы из таблицы ниже (кроме vcenter_server)
появляются на метриках только если соответствующий тег перечислен
в excluded_host_tags — см. Параметр excluded_host_tags.
Без этого блока на perf-метриках будут только host и vcenter_server.| Лейбл | Где появляется | Пример |
|---|---|---|
vcenter_server | На всех метриках | vcenter.example.com |
vsphere_type | На всех метриках | vm / host / datacenter / cluster / datastore |
vsphere_datacenter | На всех объектах в DC | DC0 |
vsphere_cluster | На объектах внутри cluster | DC0_C0 |
vsphere_host | На VM и компонентах host’а | DC0_C0_H0 |
vsphere_resource_pool | На VM в resource pool | DC0_C0_RP1 |
vsphere_folder | Если объект в кастомной folder | Production |
vsphere_compute | Compute resource (cluster или standalone) | DC0_C0 |
vsphere_datastore | На объектах datastore | LocalDS_0 |
Метрики CPU
Группа vsphere_cpu_* (27 метрик). Несут лейбл vsphere_type =
vm или host.
| Имя метрики | Единица | Описание |
|---|---|---|
vsphere_cpu_usage_avg | % | Использование CPU (доля от capacity) |
vsphere_cpu_usagemhz_avg | MHz | Использование CPU в абсолютных значениях |
vsphere_cpu_utilization_avg | % | Утилизация physical CPU (host) с учётом hyper-threading |
vsphere_cpu_coreUtilization_avg | % | Утилизация по физическим ядрам (host) |
vsphere_cpu_totalCapacity_avg | MHz | Суммарная capacity CPU |
vsphere_cpu_reservedCapacity_avg | MHz | Зарезервированная capacity |
vsphere_cpu_demand_avg | MHz | CPU, запрошенное VM (могло не быть выделено) |
vsphere_cpu_demandEntitlementRatio_latest | % | demand / entitlement |
vsphere_cpu_entitlement_latest | MHz | CPU entitlement (право на ресурс по shares + reservation) |
vsphere_cpu_run_sum | ms | Время в состоянии run (выполнение vCPU на pCPU) |
vsphere_cpu_ready_sum | ms | Время ожидания vCPU доступа к pCPU (главный индикатор CPU contention) |
vsphere_cpu_readiness_avg | % | То же, в процентах |
vsphere_cpu_wait_sum | ms | Время в состоянии wait (idle + ввод/вывод) |
vsphere_cpu_idle_sum | ms | Время idle vCPU |
vsphere_cpu_costop_sum | ms | co-stop time (синхронизация SMP vCPU) |
vsphere_cpu_overlap_sum | ms | Время, в течение которого ESXi обрабатывал прерывания от имени vCPU |
vsphere_cpu_system_sum | ms | CPU времени, потраченного гипервизором на обслуживание VM |
vsphere_cpu_used_sum | ms | Общее CPU-время, потраченное VM/host |
vsphere_cpu_latency_avg | % | Доля времени, когда VM не могла получить запрошенный CPU |
Метрики памяти
Группа vsphere_mem_* (33 метрики). Самые ходовые:
| Имя метрики | Единица | Описание |
|---|---|---|
vsphere_mem_usage_avg | % | Использование памяти (доля от назначенной) |
vsphere_mem_active_avg | KB | Активно используемая память (working set) |
vsphere_mem_activewrite_avg | KB | Активно изменяемая память (write working set) |
vsphere_mem_consumed_avg | KB | Физически выделенная VM/host’у память |
vsphere_mem_granted_avg | KB | Память, выданная гостю (включая shared) |
vsphere_mem_shared_avg | KB | Shared pages (за счёт TPS — transparent page sharing) |
vsphere_mem_sharedcommon_avg | KB | Shared pages, дедуплицированные между VM |
vsphere_mem_zero_avg | KB | Pages, заполненные нулями (не занимают физпамять) |
vsphere_mem_overhead_avg | KB | Overhead гипервизора per VM |
vsphere_mem_overheadMax_avg | KB | Максимальный overhead для VM |
vsphere_mem_overheadTouched_avg | KB | Реально использованный overhead |
vsphere_mem_swapped_avg | KB | Память VM, выгруженная гипервизором в swap |
vsphere_mem_swapin_avg | KB | Память VM, прочитанная из swap |
vsphere_mem_swapout_avg | KB | Память VM, записанная в swap |
vsphere_mem_swaptarget_avg | KB | Целевой объём swap для VM (от memory ballooning policy) |
vsphere_mem_vmmemctl_avg | KB | Память, отнятая у VM через balloon driver |
vsphere_mem_vmmemctltarget_avg | KB | Целевой размер balloon |
vsphere_mem_entitlement_avg | KB | Memory entitlement (право на память) |
vsphere_mem_unreserved_avg | KB | Незарезервированная физическая память (host) |
vsphere_mem_reservedCapacity_avg | MB | Зарезервированная capacity |
vsphere_mem_totalCapacity_avg | MB | Суммарная физпамять (host) |
vsphere_mem_lowfreethreshold_avg | KB | Порог, ниже которого ESXi начинает агрессивный reclaim |
vsphere_mem_sysUsage_avg | KB | Память, занятая VMkernel |
vsphere_mem_heap_avg | KB | Heap VMkernel |
vsphere_mem_heapfree_avg | KB | Свободно в heap’е VMkernel |
vsphere_mem_vmfs_pbc_size_latest | KB | Размер pointer block cache VMFS |
vsphere_mem_vmfs_pbc_sizeMax_latest | KB | Максимальный размер PBC |
vsphere_mem_vmfs_pbc_overhead_latest | KB | Overhead на PBC |
vsphere_mem_vmfs_pbc_workingSet_latest | KB | Рабочее множество PBC |
vsphere_mem_vmfs_pbc_workingSetMax_latest | KB | Максимальный рабочий набор PBC |
Метрики сети
Группа vsphere_net_* (12 метрик). Несут лейбл vsphere_type =
vm или host.
| Имя метрики | Единица | Описание |
|---|---|---|
vsphere_net_usage_avg | KB/s | Суммарный сетевой трафик (rx+tx) |
vsphere_net_received_avg | KB/s | Принято |
vsphere_net_transmitted_avg | KB/s | Отправлено |
vsphere_net_bytesRx_avg | KB/s | Принято байт |
vsphere_net_bytesTx_avg | KB/s | Отправлено байт |
vsphere_net_packetsRx_sum | packets | Принято пакетов |
vsphere_net_packetsTx_sum | packets | Отправлено пакетов |
vsphere_net_broadcastRx_sum | packets | Принято broadcast-пакетов |
vsphere_net_broadcastTx_sum | packets | Отправлено broadcast-пакетов |
vsphere_net_multicastRx_sum | packets | Принято multicast-пакетов |
vsphere_net_pnicBytesRx_avg | KB/s | Трафик на физическом NIC (host) |
vsphere_net_pnicBytesTx_avg | KB/s | Исходящий трафик на физическом NIC (host) |
Метрики диска
Группа vsphere_disk_* и vsphere_virtualDisk_*.
| Имя метрики | Единица | Описание |
|---|---|---|
vsphere_disk_usage_avg | KB/s | Суммарный disk I/O |
vsphere_disk_read_avg | KB/s | Read I/O |
vsphere_disk_write_avg | KB/s | Write I/O |
vsphere_disk_maxTotalLatency_latest | ms | Максимальная latency на любой LUN |
vsphere_virtualDisk_read_avg | KB/s | Read на virtual disk (per VM) |
vsphere_virtualDisk_write_avg | KB/s | Write на virtual disk (per VM) |
vsphere_datastore_maxTotalLatency_latest | ms | Максимальная latency datastore (требует collection_type: historical) |
Метрики ресурсного шедулера (rescpu)
Группа vsphere_rescpu_* (13 метрик) — глобальный шедулер ESXi,
скользящие средние и пики:
| Базовое имя | Описание |
|---|---|
vsphere_rescpu_actav(1|5|15)_latest | Active average за 1 / 5 / 15 минут |
vsphere_rescpu_actpk(1|5|15)_latest | Active peak за 1 / 5 / 15 минут |
vsphere_rescpu_runav(1|5|15)_latest | Run average за 1 / 5 / 15 минут |
vsphere_rescpu_runpk(1|5|15)_latest | Run peak за 1 / 5 / 15 минут |
vsphere_rescpu_sampleCount_latest | Количество сэмплов в окне |
vsphere_rescpu_samplePeriod_latest | Длительность окна сэмплирования |
Системные метрики
| Имя метрики | Единица | Описание |
|---|---|---|
vsphere_sys_uptime_latest | seconds | Uptime VM/host |
vsphere_sys_osUptime_latest | seconds | Uptime гостевой OS (только при включённых VMware Tools) |
vsphere_sys_heartbeat_latest | counter | Heartbeats от VMware Tools (рост = живой гость) |
Сводные счётчики инвентаря
Появляются на уровне Datacenter / Cluster / Resource Pool / Host:
| Имя метрики | Единица | Где появляется | Описание |
|---|---|---|---|
vsphere_vm_count | VM | DC, Cluster, RP, Host | Количество VM в области |
vsphere_host_count | host | DC, Cluster | Количество ESXi-хостов в области |
Service check
| Имя | Описание |
|---|---|
vsphere.can_connect | OK если SmartConnect успешен; CRITICAL при сетевых/auth ошибках |
В Prometheus-эндпоинте появляется как vsphere_can_connect, лейбл
vcenter_server различает несколько инстансов.
Ключевые метрики для дашбордов и алертов
Здоровье инфраструктуры
vsphere_can_connect != 0— алерт: агент не может подключиться к vCenter (auth, сеть, expired session).vsphere_sys_heartbeat_latestне растёт у работающей VM — VMware Tools умерли или гость завис.vsphere_host_countупал — потеряли ESXi-хост (HA event).
CPU contention
rate(vsphere_cpu_ready_sum[5m]) / 200(на 1 vCPU за 20s окно = 20000 ms) → доля времени ready. Алерт > 5%.vsphere_cpu_latency_avg > 5— VM ждёт CPU > 5% времени.vsphere_cpu_costop_sum > 0стабильно — SMP-конкуренция, скорее всего у VM слишком много vCPU для текущего host’а.
Memory pressure
vsphere_mem_swapped_avg > 0илиvsphere_mem_vmmemctl_avg > 0— ESXi отнимает у VM память (balloon или swap, активный reclaim).vsphere_mem_active_avg / vsphere_mem_granted_avg > 0.9— горячая VM, скоро упрётся в выделенный объём.vsphere_mem_unreserved_avgна host’е стремится к 0 — кончается свободная физпамять для новых reservations.
Disk / Datastore
vsphere_disk_maxTotalLatency_latest > 20(ms) — деградация storage путей или LUN-а.vsphere_datastore_maxTotalLatency_latest > 30(ms) — конкретный datastore тормозит.rate(vsphere_disk_read_avg[5m])и_write_avg— IOPS-профиль для capacity planning.
Сеть
rate(vsphere_net_packetsRx_sum[5m])≫_packetsTx_sumили наоборот — асимметрия (приёмник/отправитель).vsphere_net_pnicBytesRx_avgприближается к bandwidth NIC → насыщение физического линка.
Capacity / shape
vsphere_vm_countper cluster в динамике — рост парка.vsphere_cpu_totalCapacity_avg - sum(rate(vsphere_cpu_usagemhz_avg))— свободная capacity для миграций.
События vSphere
При collect_events: true чек подписывается на vSphere Event Manager
и шлёт каждое событие в ProtoOBP backend как Event с тегами
vcenter_server, vsphere_datacenter, vsphere_host, vsphere_vm.
Покрываются стандартные события vCenter:
- VM lifecycle:
VmCreatedEvent,VmRemovedEvent,VmClonedEvent,VmReconfiguredEvent,VmRenamedEvent. - Power:
VmPoweredOnEvent,VmPoweredOffEvent,VmSuspendedEvent,VmGuestRebootEvent,VmGuestShutdownEvent. - Migration:
VmMigratedEvent(vMotion),VmRelocatedEvent(Storage vMotion),DrsVmMigratedEvent(DRS-driven),DrsVmPoweredOnEvent. - HA / Cluster:
HostConnectionLostEvent,HostDisconnectedEvent,HostShutdownEvent,DasHostFailedEvent,VmFailedToPowerOnEvent. - Permission / Auth:
UserLoginSessionEvent,UserLogoutSessionEvent,BadUsernameSessionEvent,PermissionAddedEvent. - Alarms:
AlarmStatusChangedEvent,AlarmCreatedEvent.
Дублирование событий
Если вы создаёте сразу два инстанса (один сcollection_type: realtime
для VM/Host, второй с collection_type: historical для
Cluster/Datastore), оставьте collect_events: true только в одном
инстансе — иначе события будут дублироваться. По дефолту чек
выставляет collect_events: true именно в realtime-инстансе.