Scenario
Windows Server 2008 R2 che funge da Domain Controller ed Exchange server (si tratta di una piccola LAN, ergo, non è indispensabile dislocare tali servizi su due macchine differenti). Per monitorarne le risorse (in termini di RAM, CPU e di spazio sul disco), utilizzo delle query WMI, instradate dall'NMS (Nagios) ad un servizio dedicato in ascolto sul server (ovvero NRPE_NT - per approfondire l'argomento vi consiglio di consultare questo post).
Problema
Poichè sul server in questione viene eseguito il backup dell'intero sistema operativo (compreso il DB di Exchange) a partire dalle 22 di ogni sera, durante tale lasso di tempo, Nagios produce una miriade di allarmi recanti l'errore Socket timeout after 10 seconds. Questo, in soldoni, significa che il DC non è stato in grado di servire la richiesta in quanto troppo impegnato (oppure la richiesta gli è giunta proprio durante il backup dei file utilizzati da NRPE_NT).
Soluzione
Disabilitare le query WMI di Nagios dalle 22 alle 23.
Per fare questo si possono seguire due strade:
1) utilizzare uno script bash creato ad hoc per disabilitare i check specifici, da lanciare mediante cron;
2) lavorare direttamente sul file di configurazione dell'NMS in questione.
Personalmente preferisco la seconda soluzione, in quanto più pulita (poichè coinvolge direttamente Nagios senza passare per uno script aggiuntivo e per cron - less is more).
Per prima cosa, occorre lavorare sul file timeperiods.cfg presente nella directory /etc/nagios/objects, creando l'oggetto NRPE_off:
define timeperiod{
timeperiod_name NRPE_off
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-22:00,23:00-24:00
monday 00:00-22:00,23:00-24:00
tuesday 00:00-22:00,23:00-24:00
wednesday 00:00-22:00,23:00-24:00
thursday 00:00-22:00,23:00-24:00
friday 00:00-22:00,23:00-24:00
saturday 00:00-22:00,23:00-24:00
}
A questo punto è necessario modificare l'oggetto windows-service, presente nel file templates.cfg. Nella fattispecie, l'opzione da editare è check_period il cui valore dovrà essere NRPE_off:
define service{
name windows-service
check_period NRPE_off
...
Ovviamente, le query WMI definite su Nagios sfruttano il template windows-service e quindi ereditano come check_period NRPE_off (precedentemente definito).
Per completezza, riporto uno stralcio della configurazione relativa alla query WMI che ha il compito di monitorare la RAM allocata:
define service{
use windows-service ; Name of service template to use
host_name domain-controller
service_description query WMI Memory for Microsoft Windows Machine
check_command check_WMI_mem!_TOTAL!85,95
}
Lanciamo un restart di Nagios per rendere effettive le suddette modifiche:
[root@nagios objects]# service nagios restart
ed abbiamo finito.
Alla prossima.