Monitorare le nostre web application può essere utile e parecchio facile, così come monitorare l'uptime o il carico di un server. Abbiamo visto qualche tempo fa come monitorare il proprio server Linux sia fattibile anche solo con qualche comando interessante, tuttavia a volte occorre portare la nostra opera di sorveglianza ad un livello successivo. Se siamo sysadmin, può essere utile avere un software che ci tracci l'andamento del traffico su un webserver, per visualizzare immediatamente picchi di traffico e in caso di problemi reagire in maniera adeguata.
E può essere utile vedere tutto ciò renderizzato in maniera carina.
Un software utile per un colpo d'occhio simile è Logstalgia, che si occupa di leggere il file di log di Apache o di un qualsiasi webserver che generi un file con traccia compatibile (come nginx), per poi generare a video un filmato in grafica 2D che simula il comportamento del nostro server web, raffigurato come la barra in una partita di Pong, mentre le richieste arrivano in forma di palline.
Un logger per gli amanti del gaming classico, che permette di essere sempre sul pezzo in quanto a sorveglianza: può legggere file di log "precotti", oppure possiamo utilizzare come input il log del nostro webserver in continuo aggiornamento.
Installare Logstalgia sul nostro server Linux
Installare Logstalgia su Linux è semplice: basta fare riferimento ai repository della propria distribuzione, che in genere lo include precompilato.
sudo apt-get install logstalgia
Altrimenti, possiamo compilarne i sorgenti su ogni altra distro, installandone le dipendenze ed eseguendo i classici comandi per la compilazione di un software, scaricando prima l’archivio.
sudo apt-get install libsdl1.2-dev libsdl-image1.2-dev libpcre3-dev libftgl-dev libpng12-dev libjpeg62-dev
wget https://logstalgia.googlecode.com/files/logstalgia-1.0.3.tar.gz
tar xvf logstalgia-1.0.3.tar.gz
cd logstalgia
./configure
make
sudo make install
Utilizzare Logstalgia sul nostro server Linux
Utilizzare Logstalgia sulla macchina su cui stiamo lavorando (anziché sul server in produzione) è molto semplice: possiamo utilizzare il comando di default, passando come argomento al software direttamente il file di log degli accessi di Apache.
logstalgia /var/www/apache2/access.log
Però, possiamo anche essere più raffinati e sincronizzare Logstalgia con il file, costantemente, passandogli un flusso STDIN (standard input) che contenga informazioni costanti provenienti sempre dallo stesso file. Per fare questo ci basta usare tail in pipeline e l'opzione sync di Logstalgia:
tail -f /var/log/httpd/access_log | logstalgia --sync
Ovviamente il software non serve quasi a niente se utilizzato sul nostro server in locale, dove sviluppiamo cosette piccole con la nostra configurazione di development. Il divertimento vero comincia utilizzando Logstalgia per monitorare un server in produzione. Per fare questo non dobbiamo fare altro che utilizzare sapientemente ssh come nell'esempio sottostante, che creerà di fatto una connessione remota con SSH da cui fare streaming dei dati in STDIN.
ssh vivek@example.com tail -f /var/log/nginx/www.example.com_access.log | logstalgia --sync
Ottenere un output video da Logstalgia
Abbiamo una riunione col responsabile delle risorse e vogliamo chiedergli un bilanciatore di traffico in più perché i nostri server sono pieni di richieste. Sicuramente possiamo chiederglielo con le buone, con le cattive... ma vuoi mettere far vedere il tutto con un video dove il server Linux e le richieste sono simulati con una battaglia a Pong? Sicuramente fa più effetto: Logstalgia permette di ottenere l'output in formato ppm, e in un paio di passaggi possiamo sfruttare questo file risultante per creare un filmato visualizzabile dalla maggior parte dei player multimediali e, dato che nelle sale riunioni ancora spopolano, dei riproduttori da tavolo in commercio.
Ci è succificiente utilizzare l'opzione --output-ppm-stream, che permette di generare un output in formato ppm: non è leggibile da molti software o hardware, ma è quantomeno qualcosa da cui partire per lavorarci su con altri programmi. Diamo quindi il comando da terminale:
ssh user@example.com tail -f /var/log/nginx/www.example.com_access.log | logstalgia -1280x720 --output-ppm-stream --sync output.ppm
Grazie a ffmpeg infatti possiamo tranquillamente passare in input il file che abbiamo appena estratto da Logstalgia collegato alla nostra macchina Linux remota, per convertire il blob ppm in nostro possesso al fine di renderlo un file edibile da qualsiasi player (o quasi). Per fare tutto ciò dobbiamo semplicemente agire da terminale con ffmpeg e le dovute opzioni. Quello sottostante è un esempio che produce un output MP4 dove il nostro webserver Linux gioca a Pong con i suoi utenti.
ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i output.ppm -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 nginx.server.log.mp4
Che altro dire? In questo modo potremo essere sicuramente più incisivi nelle riunioni, e monitorare i nostri webserver in maniera più visuale e "divertente". Riuscissero a rendere divertenti anche i DDoS, sarebbe un altro grosso passo in avanti.