Salta ai contenuti

XCP-ng / XenServer

Un pool XCP-ng o XenServer (Citrix Hypervisor), letto tramite XAPI, l’API di gestione che ogni host esegue già. Non serve Xen Orchestra.

Ogni minuto DumbMonit invia chiamate JSON-RPC a https://<coordinatore>/jsonrpc: un session.login_with_password (la sessione viene poi mantenuta da un polling al successivo e riaperta una volta se il pool la invalida) e un get_all_records per classe: host, host_metrics, VM, VM_metrics, SR e pool. Non viene mai modificato nulla: l’account ha il ruolo integrato read-only, che XAPI applica a ogni chiamata.

Aggiungi il pool una sola volta, con l’indirizzo del suo coordinatore: segnala tutti gli host, le VM e gli storage repository. Se l’indirizzo che hai inserito è quello di un membro del pool, questo risponde HOST_IS_SLAVE con l’indirizzo del coordinatore; DumbMonit lo segue una volta, con lo stesso protocollo e la stessa porta, così un cambio di coordinatore non ti obbliga a modificare il monitor.

Tutte le metriche hanno il prefisso dumbmonit_xcpng_.

MetricaEtichetteSignificato
hosts, hosts_enabledHost del pool, e quanti accettano nuove VM.
host_infohost, versionValore 1: la versione del prodotto di ogni host.
host_enabledhost0 quando l’host è disabilitato (manutenzione o evacuato).
host_livehost1 quando l’heartbeat dell’host raggiunge il coordinatore, 0 quando è offline.
host_cpu_cores, host_memory_total_bytes, host_memory_used_byteshostCapacità e memoria in uso.
vms, vms_runningVM, esclusi template, snapshot e domini di controllo.
vm_power_state_infovm, stateValore 1: running, halted, paused o suspended.
vm_runningvm1 quando la VM è in esecuzione.
vm_vcpus, vm_memory_bytesvmvCPU all’avvio; memoria in uso per una VM in esecuzione, altrimenti il massimo configurato.
vm_ha_protected_downvmSolo per le VM con una priorità di riavvio, in un pool con alta disponibilità attiva: 1 quando la VM è ferma.
srsStorage repository.
sr_size_bytes, sr_used_bytes, sr_used_percentsrLivello di riempimento (le librerie ISO sono contate, non dettagliate).
sr_sharedsr1 per un repository condiviso (NFS, iSCSI…).
pool_infopool, masterValore 1: il pool e il suo coordinatore attuale.
pool_ha_enabledpool1 quando l’alta disponibilità è attiva.
pool_ha_overcommittedpoolCon la HA attiva: 1 quando il pool non può più riavviare le sue VM protette dopo i guasti di host che è configurato per tollerare.
pool_ha_host_failures_to_toleratepoolIl numero di guasti di host che la HA è configurata per sopportare.

XenAPI non ha uno stato di alimentazione «in crash». Una VM protetta trovata ferma è il segnale più vicino che l’API fornisce di una VM che si è fermata contro la tua volontà; se spegni di proposito una VM protetta, rimuovi prima la sua priorità di riavvio.

Le regole integrate che si applicano:

  • Host XCP-ng offline: l’heartbeat di un host non raggiunge il coordinatore da cinque minuti (Avvertenza).
  • SR XCP-ng quasi pieno: uno storage repository è pieno al 90% per quindici minuti (Avviso).
  • VM XCP-ng protetta da HA ferma: una VM protetta dall’alta disponibilità è ferma da due minuti (Avvertenza).
  • HA del pool XCP-ng in overcommit: il pool è in overcommit da cinque minuti (Avviso).
  1. XAPI accetta account diversi dal suo superutente integrato solo quando il pool usa l’autenticazione esterna. Se il pool è già unito a Active Directory, crea lì un account dumbmonit e passa al punto 3.

  2. Altrimenti, crea un account locale con una password lunga e casuale su ogni host del pool, poi attiva una volta l’autenticazione PAM, dal coordinatore del pool. Finché non gli viene assegnato un ruolo, l’account non può chiamare nulla.

    useradd -M -s /sbin/nologin dumbmonit
    passwd dumbmonit
    xe pool-enable-external-auth auth-type=PAM service-name=pam
  3. Sul coordinatore del pool, registra l’account come soggetto, poi assegna a quel soggetto il ruolo integrato read-only, con l’UUID stampato dal primo comando.

    xe subject-add subject-name=dumbmonit
    xe subject-role-add uuid=SUBJECT_UUID role-name=read-only
  4. In DumbMonit, inserisci l’indirizzo del coordinatore del pool, per esempio “xcp01.lan”, con quel nome utente e quella password. Aggiungi il pool una sola volta: il coordinatore segnala tutti gli host, le VM e gli storage repository. Un membro del pool risponde con l’indirizzo del coordinatore, che DumbMonit poi segue.

  5. DumbMonit si limita a leggere, tramite l’interfaccia JSON-RPC di XAPI (/jsonrpc): non avvia, non ferma né migra mai una VM e non modifica mai uno storage repository né l’alta disponibilità del pool.

CredenzialeCampi
Nome utente e passwordL’account dumbmonit, registrato come soggetto con il ruolo read-only.

Indirizzo: il nome host o l’IP del coordinatore del pool, host:port, oppure un URL. Opzioni:

  • Port (443).
  • Accept an unverifiable certificate: il certificato proprio degli host è autofirmato.
  • Timeout per richiesta (15 s).

“XCP-ng refused the user name or password”: password errata, oppure l’account non è registrato come soggetto (xe subject-list).

“XCP-ng accepted the account but refused the call”: il soggetto non ha ruolo, o ha un ruolo senza accesso in lettura; assegnagli read-only.

“This host is a pool member, not the coordinator”: DumbMonit non ha potuto raggiungere il coordinatore indicato dal membro; inserisci tu stesso l’indirizzo del coordinatore.