Quark
Quark è software agent destinato alla raccolta di generici dati sui sistemi remoti di tipo Microsoft Windows.
Dopo aver fatto uno scouting delle varie architetture possibili e aver testato la loro implementazione abbiamo scelto di sviluppare un sistema client server point-to-multipoint in grado di inviare una generica richiesta al sistema client che la eseguirà nei modi e nei tempi impostabili.
Il sistema client è dotato di un database locale e di uno schedulatore, quindi è autonomo nell’esecuzione dei comandi anche in assenza di connessione con il server. È stato implemento un linguaggio di comunicazione tra server e client che garantisca la sicurezza e la compressione dei dati.
Attraverso questo canale è possibile inviare comandi:
- di sistema e diagnostica come: aggiorna client, imposta intervalli di schedulazione, richiesta parametri client, ecc
- di raccolta dati come: leggi log degli eventi, leggi utenti collegati, leggi processi in esecuzione, ecc
- per l’esecuzione di azioni, come: scarica un file, setta una chiave di registro, spegni il client, ecc
Il sistema è totalmente flessibile e permette di implementare le più svariate funzioni, rendendolo uno strumento particolarmente adatto alle operazioni di IT Service management. Per la comunicazione tra client e server si è implementato un sistema di signalR che permette, tra le altre cose, una comunicazione in tempo reale tra client e server anche se il client è installato dietro firewall di rete che non permettono le connessioni dall’esterno.
Quark è dotato di un sistema di aggiornamento automatico in modo da permettere le attività di bugfix e le implementazioni di nuove funzioni senza interventi on-site. Per questo si sono implementati dei comandi da inviare ai client che premettono, secondo le logiche imposte dal server centrale, di aggiornare i sistemi client in maniera centralizzata. Per aumentare l’affidabilità del sistema e garantire un aggiornamento sicuro del sistema client è stato sviluppato un secondo servizio che ha il compito di monitorare il servizio principale e, in caso di blocco, riavviarlo. Questo servizio accessorio viene utilizzato anche per le attività di aggiornamento del servizio principale.
Simulando diversi scenari abbiamo trovato notevoli problemi legati alle scarse performance nell’esecuzione di alcuni comandi, in particolare se ripetuti frequentemente (es. lettura processi in esecuzione) utilizzando Windows Management Instrumentation (WMI). Per risolvere questi problemi abbiamo sviluppato del codice ad hoc in modo da evitare l’utilizzo di alcune di queste funzioni.
Comandi implementati
Risposta ai comandi
Il codice sorgente di quark e i dataset utilizzati sono scaricabili gratuitamente previa richiesta da inviare a saidea@saidea.it