Può succedere, come nel cso in esame, che venga richiesto di monitorare sistemi Windows senza poter usare l’agente di Zabbix. In questo caso il protocollo SNMP è un valido aiuto, essendo nativo su tutti i sistemi operativi, di facile configurazione e in grado di raccogliere le metriche di uso più comune.
Una cosa che manca però è il monitoraggio dello stato dei servizi di Windows, in quanto nativamente non è possibile ottenere queste informazioni dal protocollo SNMP.
Per aggirare il problema rispettando le specifiche di progetto ho preceduto in questo modo:
1) tramite lo script remoteservice.sh, trovato in rete e opportunamente modificato, si va a recuperare lo stato dei singoli servizi usando l’utility snmpwalk e le MIB del sistema operativo.
2) poi tramite un template apposito le metriche stesse vengono lette dallo Zabbix server.
Vediamo come procedere. Innanzitutto sullo Zabbix server devono essere presenti l’utiliy snmpwalk e le HOST-RESOURCES-MIB. Per l’installazione di questa parte fare riferimento alla documentazione del sistema operativo in uso.
Occorrerà poi copiare il file remoteservice.sh nella cartella degli script di Zabbix (di solito /usr/lib/zabbix/externalscripts) e importare il template attraverso la GUI di Zabbix
Ora dobbiamo cercare il nome del servizio che ci interessa. Questo si ottiene con il comando “snmpwalk -v2c -c {SNMP_COMMUNITY} {IP} hrSWRunName impostando correttamente la community SNMP e l’indirizzo IP.
Una volta trovato questo nome annotiamolo da qualche parte.
A questo punto associamo il template al nostro host e creiamo una macro a livello host chiamandola {$SERVICE_NAME_1} e valorizziamola con il valore trovato al punto precedente. Ripetiamo l’operazione per eventuali altri servizi da controllare, incrementando il valore numerico (Valori possibili: da 1 a 9)
Infine nell’host disabilitiamo items e triggers presenti nel template e non utilizzati (quelli per i quali non è stata fatta l’operazione descritta al punto 3)