Gli amministratori di sistema hanno la possibilità di monitorare da remoto cosa sta accadendo sui terminali gestiti, per effettuare un controllo più semplice e immediato negli anni sono nati diversi alerting e visualization tool dedicati a questo scopo.
Sostanzialmente gli alerting e visualization tool analizzano in flusso di input e output del sistema e forniscono una rappresentazione grafica al sysadmin. Quelli più avanzati offrono anche un sistema di allarme che si attiva quando viene rilevato un comportamento ambiguo o anomalo, gli avvisi generati contengono solitamente un rapporto con i dettagli delle operazioni sospette cosi da facilitare la comprensione del problema corrente.
Questi tool sono inoltre programmati per inviare un messaggio all'amministratore solo quando necessario o solo quando è possibile risolverlo o l'utente ha gli strumenti per farlo. Ad esempio, se un operatore dovesse ricevere centinaia di e-mail al giorno dal sistema per un determinato problema, presto egli ignorerà tutte le e-mail a riguardo. Col tempo sarà portato ad intervenire solo al verificarsi di incidenti che riscontra in prima persona o su segnalazione di un cliente. Gli avvisi continui perdono quindi presto significato e utilità.
Gli avvisi degli alerting e visualization tool non devono essere intesi come un flusso costante di informazioni, ma sono pensati per comunicare un problema che il sistema non riesce a gestire in autonomia. Tali avvisi vengono inoltre inviati solo all'utente che ha più probabilità di poter correggere l'anomalia. Essi inoltre vengono suddivisi in livelli di priorità cosi da capire subito la gravità della situazione, solitamente sono divisi in "Informational," "Warning," e "Critical." Vi sono poi varie forme di visualizzazione e monitoraggio dei dati, oltre alle classiche Line chart sono di uso comune anche le Heatmaps, i Gauges o i Flame graphs.
Bosun
Negli anni la community open source ha realizzato diversi tool e, di seguito, analizzeremo quelli più gettonati. Partiamo da Bosun, si tratta dell'alert management system open source sviluppato dal team di Stack Exchange. È scritto completamente in Golang e si interfaccia con il sistema tramite metrics aggregation. Può inoltre gestire dati e log provenienti da event aggregation system e supporta Graphite, InfluxDB, OpenTSDB e Elasticsearch.
L'architettura di Bosun consiste in un singolo server binary, dunque in un backend come OpenTSDB o Redis oppure come un generico scollector agent. Lo scollector agent si occupa di rilevare automaticamente i servizi presenti in un host e di eseguire dei report metrici per i processi e le risorse attive sul sistema. Questi dati sono inviati ad un metrics backend e successivamente il Bosun server binary interroga il backend per determinate se i vari alert necessitano di essere inviati all'amministratore. Per salvare e catalogare i dati ed i metadati raccolti Bosun sfrutta Redis.
Bosun può anche essere usato con tool come Grafana per interrogare i backend tramite un unica interfaccia grafica. Altra feature interessante di questo tool è la possibilità di eseguire dei test per essere sicuri che il sistema funzioni correttamente, con altri tool simili era necessario creare dei dati "fittizi" da inserire manualmente per poi ricevere un alert di test, Bosun ha reso il test delle funzionalità molto più semplice, eliminando la necessità di importare i dati fittizi manualmente.
Cabot
Passiamo adesso su Cabot, si tratta di un progetto realizzato dalla Arachnys, quest'azienda solitamente si occupa dello sviluppo di soluzioni cloud-based per il mondo della finanza e per contrastare i reati finanziari. Cabot è stato scritto completamente con Django e Bootstrap, questo ha reso molto semplice contribuire al progetto visto che sono due framework molto conosciuti e gettonati. L'architettura di Cabot è molto simile a quella di Bosun, infatti di base non colleziona direttamente i dati raccolti ma vi accedere tramite un sistema di API che sfrutta per generare gli alert.
Cabot utilizza un modello di pull (piuttosto che un sistema di push) per generare l'alert. Richiama le API di ciascun sistema e recupera le informazioni necessarie per decidere se mandare l'avviso all'utente o meno in base a un controllo specifico. Cabot memorizza i dati dell'avviso in un database Postgres e dispone anche di una cache implementata tramite Redis.
Cabot supporta nativamente Graphite e Jenkins, in particolare quest'ultimo viene utilizzato da Arachnys come se fosse una sorta di cron centralizzato. Inoltre è possibile interfacciare Cabot con Google Calendar per mostrare e pianificare le on-call rotation.
StatsAgg
È il turno di StatsAgg, si tratta di una piattaforma di alert e metrics aggregation. StatsAgg è scritto in Java e si compone solo della parte server e dell'interfaccia utente, cosi da diminuire il grado di complessità generale della sua architettura. Può inviare avvisi basati sulla corrispondenza delle espressioni regolari.
Supporta Graphite, StatsD, InfluxDB e OpenTSDB e può anche inviare dati alle rispettive piattaforme, tuttavia in alcuni contesti tale feature può essere controproducente visto che aumenta i carichi sul sistema e ciò potrebbe diventare un problema andando ad impattare sulle performance. Tuttavia se l'infrastruttura sottostante StatAgg è abbastanza robusta può comunque produrre avvisi anche quando la piattaforma di backend è sovraccarica o presenta delle interruzioni di servizio.
Grafana
Andiamo ora su Grafana, questo tool si focalizza principalmente sul monitoraggio dei dati. Dispone di una dashboard molto semplice e del supporto nativo a Graphite, Elasticsearch, OpenTSDB, Prometheus e ad InfluxDB. Oltre alla versione gratuita esiste anche una versione dedicate alle aziende che permette di accedere ad un sistema di plugin che sblocca il supporto a più data source.
Grafana si può usare tramite un'interfaccia web, dunque è possibile accedere ai dati di Grafane da qualsiasi postazione con le medesime credenziali d'accesso. È possibile visualizzare i dati del sistema in vari modi e tipologie e dispone anche di funzionalità di alert base che normalmente non sono disponibili nei visualization tool tradizionali.
Tramite Grafana è possibile impostare degli avvisi direttamente dai grafici visualizzati nella dashboard. Si può anche impostare un valore o un trigger che fa attivare il sistema di notifica degli avvisi. Tale funzionalità però non può replicare a pieno un sistema di alert completo anche se in casi estremi può rappresentare una soluzione di backup. Grafana dispone inoltre di vari feature collaborative, gli utenti infatti possono condividere la propria dashboard oltre a poter aggiungere delle note accanto ad un grafico, cosi da aiutare la comprensione di un valore o di determinati dati. Questo facilità notevolmente la condivisione delle conoscenze e la comunicazione tra un team di sysadmin, riducendo quindi la possibilità di incedenti.