Per chi non lo conoscesse Milestone XProtect è una dei software di gestione video (VMS) tra i più diffusi in ambito enterprise.

Citando quanto riportato dal produttore:

The XProtect VMS products are video management software designed for installations of all shapes and sizes. Whether you want to protect your store from vandalism or you want to manage a multi-site, high security installation, XProtect makes it possible. The solutions offer centralized management of all devices, servers, and users, and provide an extremely flexible rule system driven by schedules and events.

Naturale che, vista la sua diffusione, prima o poi potrebbe capitare di averne uno attivo anche su ambienti e aziende gestite da noi. Ed infatti questo è proprio quello che mi è successo!

Ora, per quanto ho visto negli anni, la supervisione del funzionamento di un’infrastruttura VMS non è strettamente materia che viene gestita lato IT.
Tuttavia avendo dei trascorsi con questo prodotto, culminati pure con qualche certificazione in passato, speravo di poter trovare una soluzione abbastanza rapida…

NO!

Non fraintendetemi, uno strumento nativo esiste ed è molto valido, si tratta di MilestonePSTools, un modulo PowerShell che fa da wrapper a molte funzioni dell’ SDK Milestone.
Ultimamente però lavoro spesso con Zabbix, naturale che dopo aver cercato in vano un template già pronto, mi sono detto: perchè non crearne uno?

Zabbix e Milestone XProtect

L’idea è di sfruttare l’ SDK Milestone, che grazie al cielo è basato su HTTP (btw grazie per la parte REST, meno per la parte SOAP), per monitorare lo stato di tutte le componenti dell’infrastruttura VMS: i singoli server, lo storage, le telecamere, i servizi.
Per fare ciò utilizzeremo un utente Milestone e tutta la potenza del Discovery Zabbix in modo da rendere la configurazione il più snella possibile.

Configurazione XProtect

Iniziamo quindi dal predisporre un Ruolo ed un Utente di servizio sul Management Client che abbia i seguenti permessi:

  • Info -> Allow Web Client Login
  • Overall Security -> Management Server -> Connect
  • Overall Security -> Management Server -> Status API
  • Overall Security -> Cameras -> Read

milestone zabbix integration setup

milestone zabbix integration role milestone zabbix integration settings

Configurazione Zabbix

Definiamo, se non ancora presente, un Host che punti al Milestone Management Server IP o DNS e settiamo tre semplici MACRO:

  • {$MILESTONE.USER} - L’utente precedentemente configurato su XProtect
  • {$MILESTONE.PASSWORD} - La password dell’utente XProtect
  • {$MILESTONE.CONN} - Il protocollo di connessione alle API Milestone, https (default) oppure http

milestone zabbix integration settings

Fatto ciò associamo a questo Host il Template Milestone XProtect e attendiamo che il processo di Discovery generi tutti gli Item che andremo a monitorare.
Vediamoli nel dettaglio.

Milestone XProtect VMS - Zabbix monitoring

Al primo avvio del Template Milestone XProtect gli Items presenti si contano sulle dita di una mano, sono letteralmente 5. Tra questi quello da considerarsi fondamentale è uno:

Milestone: XProtect Discovery - Il vero cuore pulsante di questa integrazione. É questo Script infatti che si occupa di enumerare tutte le componenti VMS configurate e mantenere un token di autenticazione valido da passare agli altri Script Item creati in Discovery.

Se tutto va come deve, a discovery ultimato otteremo numerosi Item identificati da [tag] diversi a seconda del componente VMS a cui appartengono:

  • [MGM] - Management Server
  • [REC] - Recording Server
    • [CAM] - Camera
    • [STR] - Storage
    • [ARC] - Archive storage
  • [MOB] - Mobile Server
  • [SVC] - Service registered (e.g. Event Server, Report Server)
  • [UPD] - Hotfixes disponibili sul sito Milestone

Verifica dei certificati TLS

La sicurezza dei dati in transito è un must-have, ragion per cui l’encryption tramite certificati TLS deve essere abilitata su tutte le componenti Milestone e tali certificati vengono monitorati da questo template Zabbix. Come?

Ad oggi, l’unica soluzione nativa Zabbix è quella di usare una funzione di Zabbix Agent 2, quindi le opzioni più ovvie sono:

  • Avere uno Zabbix Agent 2 attivo sul Milestone Management Server
  • Usare Zabbix Agent 2 sullo stesso Zabbix server

Solo nel secondo caso va fatta una piccola customizzazione, procedi così:

  1. Sull’Host definito in Zabbix aggiungi una seconda Interface di tipo Agent con IP 127.0.0.1
  2. Sulle Discovery Rules dell’Host imposta questa Host Interface su tutti gli Item con Key web.certificate.get[{#SSL_HOSTNAME},{#SSL_PORT},{#SSL_IP}]

milestone zabbix agent configuration

milestone zabbix discovery configuration

Come mostrato in figura terremo così costantemente sotto controllo la scadenza del certificato ed il relativo thumbprint.

milestone xprotect certificate check

Controllo di Storage e Archive Storage

Lo storage e la sua disponibilità è una delle componenti essenziali di una piattaforma VMS, monitoriamo quindi lo spazio disponibile e lo stato di ogni risorsa di Storage o Archive configurata sui Recording Server. In particolare lo status che, soprattutto nel caso di iSCSI o SMB, potrebbe diventare Unavailable o Unmounted.

milestone storage monitoring tool

Stato telecamere

Monitoriamo lo stato delle telecamere chiedendolo direttamente al Recording Server, in questo modo otteniamo un dettaglio di alto livello che copre sia un banale Offline della telecamera sia problematiche più specifiche come Not licensed o Media overflow.

milestone camera status monitoring

milestone camera status monitoring values

Mobile Server

Lato Milestone Mobile Server le API disponibili forniscono un discreto dettaglio sugli utenti connessi, la banda utilizzata e le risorse utilizzate.
Se, come dovrebbe essere, il Mobile Server è configurato per HTTPS non c’è altro da sapere, in caso contrario consiglio vivamente di personalizzare la Macro {$MILESTONE.MOBILE.DH.PRIME} usata per l’encryption di utente e password.

{$MILESTONE.MOBILE.DH.PRIME} - Mobile Server expects the username and password to be encrypted with a Diffie-Hellman-Merkle shared secret. This is the prime number used (length 1024 or 2048 bit) in hexadecimal format

milestone mobile status monitoring

Monitoraggio Event Server e altri servizi

Molti altri servizi girano solitamente su XProtect, siano essi nativi come l’Event Server o sviluppati da terze parti, se sono registrati correttamente vengono monitorati da questo template. Il controllo si limita alla verifica che l’URI HTTP/S corrispondente sia raggiungibile il che solitamente significa che il servizio è attivo.

milestone service status monitoring

Notifiche Hotfix Milestone

La disponibilità di aggiornamenti, specie se riguardanti patch di sicurezza, deve sempre essere tenuta sotto controllo. Questo è esattamente ciò di cui si occupa l’ultimo Discovery disponibile nel template Milestone XProtect: verifica periodicamente le patch pubblicate sul sito Milestone e notifica tramite Trigger la presenza di nuovi Hotfix.
Per una rapida consultazione viene anche salvato il dettaglio descrittivo dei fix presenti come visibile nell’immagine.

milestone hotfix available check

milestone hotfix available notification

Conclusioni

Il Template Milestone XProtect per Zabbix, anche se perfettibile, fornisce out-of-the-box un monitoraggio a 360° delle installazioni XProtect.

Dovrebbe essere compatibile con tutte le versioni che implementano ApiGateway e IDP, se riscontrate problemi o avete la possibilità di migliorarlo/testarlo sentitevi liberi di aprire Issues e PR su GitHub in pieno spirito FOSS!