Перейти к содержанию

XCP-ng / XenServer

Пул XCP-ng или XenServer (Citrix Hypervisor), считываемый через XAPI — API управления, которое и так работает на каждом хосте. Xen Orchestra не нужен.

Каждую минуту DumbMonit отправляет вызовы JSON-RPC на https://<координатор>/jsonrpc: один session.login_with_password (затем сессия сохраняется от опроса к опросу и один раз открывается заново, если пул её аннулировал) и по одному get_all_records на класс: host, host_metrics, VM, VM_metrics, SR и pool. Ничего никогда не изменяется: у учётной записи встроенная роль read-only, которую XAPI проверяет при каждом вызове.

Добавьте пул один раз, по адресу его координатора: он сообщает обо всех хостах, ВМ и репозиториях хранилища. Если введённый вами адрес принадлежит члену пула, тот отвечает HOST_IS_SLAVE с адресом координатора; DumbMonit один раз переходит по нему, с тем же протоколом и портом, поэтому смена координатора не требует правки монитора.

Проверено только по документации производителя — пока не испытано на реальной системе

Эта интеграция построена на документации XAPI (протокол JSON-RPC, классы host, VM, SR и pool) и проверена на записанных ответах, а не на работающем пуле. Сообщите нам, если что-то не работает.

Что отслеживается

Все метрики с префиксом dumbmonit_xcpng_.

Метрика Метки Значение
hosts, hosts_enabled Хосты пула и сколько из них принимают новые ВМ.
host_info host, version Значение 1: версия продукта каждого хоста.
host_enabled host 0, когда хост отключён (обслуживание или эвакуирован).
host_live host 1, когда heartbeat хоста доходит до координатора, 0, когда хост офлайн.
host_cpu_cores, host_memory_total_bytes, host_memory_used_bytes host Ёмкость и используемая память.
vms, vms_running ВМ, без шаблонов, снимков и управляющих доменов.
vm_power_state_info vm, state Значение 1: running, halted, paused или suspended.
vm_running vm 1, когда ВМ работает.
vm_vcpus, vm_memory_bytes vm vCPU при запуске; используемая память для работающей ВМ, иначе настроенный максимум.
vm_ha_protected_down vm Только для ВМ с приоритетом перезапуска в пуле с включённой высокой доступностью: 1, когда ВМ остановлена.
srs Репозитории хранилища.
sr_size_bytes, sr_used_bytes, sr_used_percent sr Уровень заполнения (ISO-библиотеки учитываются, но не детализируются).
sr_shared sr 1 для общего репозитория (NFS, iSCSI…).
pool_info pool, master Значение 1: пул и его текущий координатор.
pool_ha_enabled pool 1, когда высокая доступность включена.
pool_ha_overcommitted pool При включённой HA: 1, когда пул больше не может перезапустить защищённые ВМ после отказов хостов, которые он настроен выдерживать.
pool_ha_host_failures_to_tolerate pool Число отказов хостов, которые HA настроена пережить.

В XenAPI нет состояния питания «аварийно завершена». Найденная остановленной защищённая ВМ — ближайший сигнал, который даёт API, о ВМ, остановившейся против вашей воли; если вы намеренно выключаете защищённую ВМ, сначала снимите с неё приоритет перезапуска.

Применяемые встроенные правила:

  • XCP-ng host offline: heartbeat хоста не доходит до координатора пять минут (Warning).
  • XCP-ng SR almost full: репозиторий хранилища заполнен на 90 % пятнадцать минут (Advisory).
  • XCP-ng HA-protected VM down: ВМ, защищённая высокой доступностью, остановлена две минуты (Warning).
  • XCP-ng pool HA overcommitted: пул перегружен по HA пять минут (Advisory).

Дайте DumbMonit учётную запись XAPI только для чтения

  1. XAPI принимает учётные записи, отличные от встроенного суперпользователя, только если пул использует внешнюю аутентификацию. Если пул уже присоединён к Active Directory, создайте там учётную запись dumbmonit и переходите к шагу 3.

  2. В противном случае создайте на каждом хосте пула локальную учётную запись с длинным случайным паролем, затем один раз включите аутентификацию PAM на координаторе пула. Пока ей не назначена роль, учётная запись ничего не может вызывать.

    useradd -M -s /sbin/nologin dumbmonit
    passwd dumbmonit
    xe pool-enable-external-auth auth-type=PAM service-name=pam
    
  3. На координаторе пула зарегистрируйте учётную запись как субъект (subject), затем назначьте этому субъекту встроенную роль read-only, указав UUID, который выведет первая команда.

    xe subject-add subject-name=dumbmonit
    xe subject-role-add uuid=SUBJECT_UUID role-name=read-only
    
  4. В DumbMonit введите адрес координатора пула, например «xcp01.lan», с этим именем пользователя и паролем. Добавьте пул один раз: координатор сообщает обо всех хостах, ВМ и репозиториях хранилища. Член пула отвечает адресом координатора, по которому DumbMonit затем переходит.

  5. DumbMonit только читает, через интерфейс JSON-RPC XAPI (/jsonrpc): он никогда не запускает, не останавливает и не переносит ВМ и никогда не изменяет репозиторий хранилища или высокую доступность пула.

Warning

Никогда не передавайте DumbMonit пароль суперпользователя хостов: с ролью read-only утёкший пароль ничего не сможет изменить. XCP-ng и XenServer поставляются с самоподписанным сертификатом: отметьте Accept an unverifiable certificate, если хост DumbMonit не доверяет сертификату, который предъявляет пул.

Учётные данные

Учётные данные Поля
Имя пользователя и пароль Учётная запись dumbmonit, зарегистрированная как субъект с ролью read-only.

Адрес: имя хоста или IP координатора пула, host:port или URL. Параметры:

  • Порт (443).
  • Принимать непроверяемый сертификат: собственный сертификат хостов самоподписан.
  • Тайм-аут на запрос (15 с).

Диагностика

«XCP-ng refused the user name or password»: неверный пароль, либо учётная запись не зарегистрирована как субъект (xe subject-list).

«XCP-ng accepted the account but refused the call»: у субъекта нет роли или роль без доступа на чтение; назначьте ему read-only.

«This host is a pool member, not the coordinator»: DumbMonit не смог связаться с координатором, указанным членом пула; введите адрес координатора сами.