Il mio server Hyper-V è in salute? Come controllare Hyper-V senza usare Operations Manager

La soluzione che dovrebbe essere usata per il monitoring di un’infrastruttura basata Windows è System Center Operations Manager 2007 R2 (SCOM) che consente di tenere sotto controllo tutti i parametri vitali degli host di virtualizzazione e delle macchine virtuali (anche basate su Linux) e di implementare Performance e Resource Optimization, se associato a System Center Virtual Machine Manger 2008 R2.

Cosa fare se non si ha la possibilità di implementare SCO?

Ci sono diverse cose che possiamo implementare.

Monitoring dei servizi

La prima cosa è tenere sotto controllo i servizi di base di Hyper-V:

  • Hyper-V Image Management Service (Vhdsvc):  gestione e creazione VHD
  • Hyper-V Virtual Machine Management (Vmms): gestione ed esecuzione delle VM
  • Hyper-V Networking Management Service (Nvspwmi): gestione ed esecuzione reti virtuali

È possibile monitorare lo stato dei servizi usando uno script PowerShell eseguito ad intervalli regolari (Task Manager) che verifica lo stato del servizio e in caso non sia Running, esegua una qualche azione. Qualcosa come le righe qui sotto:

$status = (get-service Vhdsvc).Status
If ($status –neq “Running”) {do-something}

Possiamo però fare qualcosa di meglio utilizzando una funzionalità già prevista da Windows: la possibilità di eseguire un’azione allo spegnimento inaspettato di un servizio.

In questo modo riduciamo l’hoverhead sul sistema, riuscendo comunque ad eseguire tempestivamente un’azione a fronte di problemi legati ad un servizio

image

Tenere sotto controllo l’esecuzione dei servizi nonè però sufficiente.

Monitoring dei log di Hyper-V

Tutti gli eventi generati da Hyper-V sono registrati in Event Viewer nei nuovi log, sotto "Application and Service Logs |  Microsoft | Windows”.

In particolare sotto le categorie

  • Hyper-V-Config:
    In questa sezione si trovano tutti gli eventi relativi ai file di configurazione delle VM. Se ci sono file di configurazione mancanti o errati in questa sezione si trovano le informazioni relative al problema
  • Hyper-V-High-Availability:
    In questa sezione si trovano informazioni relative alla modifiche e agli eventi legati al clustering.
  • Hyper-V-Hypervisor:
    È la sezione che contiene gli eventi specifici dell’hypervisor. È utile quardare in questa sezione solo se l’hypervisor non si avvia dopo una ripartenza del server.
  • Hyper-V-Image-Management-Service:
    Il servizio Vhdsvc scrive in questa sezione gli eventi relative alle operazioni sui VHD (creazione, editing, conversione). In caso di problemi con i VHD questo è il posto dove cercare errori.
  • Hyper-V-Integration:
    Questa sezione contiene gli eventi relativi agli integration service.
  • Hyper-V-Network:
    Sezione relativa agli eventi legati alle reti virtuali. Qui sono registrati eventi relativi alla creazione e configurazione delle reti, ma non al loro funzionamento.
  • Hyper-V-SynthNic:
    In questa sezione si trovano gli eventi relativi alle schede di rete virtuali: vi vengono registrati eventi all’avvio di VM con schede di rete virtuali ed eventi di errore in caso di problemi di avvio delle schede di rete virtuali.
  • Hyper-V-SynthStor:
    È la sezione dove sono registrati gli eventi relative ai VHD associate alle macchine virtuali in esecuzione.
  • Hyper-V-VMMS:
    Questa è la sezione più importante che registra gli eventi relative al servizio Vmms (Hyper-V Virtual Machine Management) che è il servizio centrale di gestione. Eventi presenti in questa sezione possono essere relativi a merge di snapshot, Import/Export di VM, stato del Virtualization WMI Provider, stato del servizio Vmms.
    Molti degli errori che possono essere presenti nelle altre sezioni hanno una ricaduta in questa e quindi questa è la sezione da tenere più strettamente sotto controllo.
  • Hyper-V-Worker:
    In questa sezione sono registrati gli eventi relativi ai worker process associati alle diverse macchine virtuali in esecuzione: avvio/arresto di VM, creazione di snapshot, stato dei device sintetici ed emulati

Anche in questo caso è possibile utilizzare script PowerShell, eseguiti ad intervalli regolari da Task Manager, per verificare la presenza di messaggi di errore e quindi eseguire opportune azioni di notifica.

L’accesso ai log via PowerShell può avvenire anche da remoto.

Di seguito trovate un esempio di script PowerShell per l’accesso all’ultimo errore dell’Event Log del servizio VMMS.

$event = Get-WinEvent -LogName "Microsoft-Windows-Hyper-V-VMMS-Admin" -MaxEvents 1
If($event.LevelDisplayName –like “Error ”) {do-something}

I provider che è possibile passare alla cmdlet Get-WinEvent –LogName, e relativi ad Hyper-V, sono:

  • Microsoft-Windows-Hyper-V-Config-Admin
  • Microsoft-Windows-Hyper-V-Config-Operational
  • Microsoft-Windows-Hyper-V-Hypervisor-Admin
  • Microsoft-Windows-Hyper-V-Hypervisor-Operational
  • Microsoft-Windows-Hyper-V-Image-Management-Service-Admin
  • Microsoft-Windows-Hyper-V-Image-Management-Service-Operational
  • Microsoft-Windows-Hyper-V-Integration-Admin
  • Microsoft-Windows-Hyper-V-Network-Admin
  • Microsoft-Windows-Hyper-V-Network-Operational
  • Microsoft-Windows-Hyper-V-SynthNic-Admin
  • Microsoft-Windows-Hyper-V-SynthStor-Admin
  • Microsoft-Windows-Hyper-V-SynthStor-Operational
  • Microsoft-Windows-Hyper-V-VMMS-Admin
  • Microsoft-Windows-Hyper-V-Worker-Admin

Alcuni Log hanno due provider Admin e Operational contenenti informazioni differenti. I log che possiamo trovare sotto Application and Service Logs possono essere di quattro diverse categorie. 

  • Admin
    Eventi indirizzati a utenti, amministratori e personale di supporto. Questi eventi indicano un problema e una soluzione ben definita. Questi eventi sono ben documentati o la descrizione dell’evento stesso contiene le informazioni necessarie ad eseguire eventuali azioni di rimedio.
  • Operational
    Questi eventi devono essere usati per l’analisi e la diagnosi di problemi o di accadimenti. Gli eventi di questa categoria possono essere usati per scatenare automaticamente azioni a fronte di un problema o dell’accadere di qualcosa. Un esempio di azione di questo genere è la creazione di un VHD.
  • Analytic
    Eventi pubblicati in grande volume che descrivono le operazioni eseguite da un programma e che non possono essere gestite dall’intervento di un utente.
  • Debug
    Eventi generati e usati dai programmatori per fare troubleshooting delle applicazioni.

Una tecnica migliore per essere avvisati o per eseguire un’azione a fronte della creazione di un evento in uno dei log di Hyper-V è associare ai Log stessi un trigger che scateni uno specifico task.

Per generare i trigger, dalla console di Task Scheduler si deve creare un task collegato al Log che si desidera monitorare selezionando il container Event Viewer Task e quindi l’azione Create Task.

image

Si deve quindi seguire il wizard di creazione del task indicando tutti i parametri necessari e lo script che si intende eseguire.

In particolare si deve definire l’account con cui si desidera eseguire l’azione

image
Per poter indicare a quale Log agganciare il task e il tipo di evento (ed eventualmente anche l’ID delle’evento) che lo scatena si deve scegliere di creare di un task di tipo Custom:

image

Alla fine deve essere definita l’azione desiderata, per esempio l’esecuzione di uno script PowerShell.

image

Per oggi ci fermiamo qui e in un prossimo post vedremo come accedere ai Counter di funzionamento.

Non è Operations Manager (che continuo a consigliarvi caldamente), ma un minimo di controllo lo abbiamo implementato.

Buona giornata e buona settimana.

Giorgio