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
![]() |
![]() |
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) oppurehttp
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ì:
- Sull’Host definito in Zabbix aggiungi una seconda Interface di tipo Agent con IP
127.0.0.1
- Sulle Discovery Rules dell’Host imposta questa Host Interface su tutti gli Item con Key
web.certificate.get[{#SSL_HOSTNAME},{#SSL_PORT},{#SSL_IP}]
Come mostrato in figura terremo così costantemente sotto controllo la scadenza del certificato ed il relativo thumbprint.
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.
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.
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
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.
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.
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!