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 только для чтения¶
-
XAPI принимает учётные записи, отличные от встроенного суперпользователя, только если пул использует внешнюю аутентификацию. Если пул уже присоединён к Active Directory, создайте там учётную запись dumbmonit и переходите к шагу 3.
-
В противном случае создайте на каждом хосте пула локальную учётную запись с длинным случайным паролем, затем один раз включите аутентификацию PAM на координаторе пула. Пока ей не назначена роль, учётная запись ничего не может вызывать.
useradd -M -s /sbin/nologin dumbmonit passwd dumbmonit xe pool-enable-external-auth auth-type=PAM service-name=pam -
На координаторе пула зарегистрируйте учётную запись как субъект (subject), затем назначьте этому субъекту встроенную роль read-only, указав UUID, который выведет первая команда.
xe subject-add subject-name=dumbmonit xe subject-role-add uuid=SUBJECT_UUID role-name=read-only -
В DumbMonit введите адрес координатора пула, например «xcp01.lan», с этим именем пользователя и паролем. Добавьте пул один раз: координатор сообщает обо всех хостах, ВМ и репозиториях хранилища. Член пула отвечает адресом координатора, по которому DumbMonit затем переходит.
-
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 не смог связаться с координатором, указанным членом пула; введите адрес координатора сами.