Libvmod-rtstatus: metriche, statistiche e vari numeri di Varnish in tempo reale.

Sono felice di introdurre un nuovo VMOD che colleziona counters e statistiche di Varnish in un JSON file e mostra questi dati tramite un’ user interface. Se vuoi sapere in tempo reale come Varnish e backends stanno lavorando, allora questo e’ il VMOD che devi usare. Questo VMOD ti permette di avere un’overview di alcuni counters di Varnish dedicando particolare attenzione a quelli relativi ai backends e alle statistiche per backend. Trovo che tutto cio’ sia assolutamente fantastico soprattutto se usi Varnish come load balancer e vuoi sapere che transazione stanno avvenendo e come Varnish sta performando.

Il VMOD si trova qui: https://github.com/varnish/libvmod-rtstatus.

Il VMOD ha due funzioni:

  • rtstatus(REAL delta): questa e la funzione responsabile della creazione del JSON file contente counters, statistiche ed altri numeri. Il parametro delta viene utilizzato per calcolare hitrate e request load, questi sono valutati su basi differenziali.

json

  • html(): il JSON file creato dalla sopracitata funzione viene passato a questa funzione che lo utilizza per creare una UI.

frontend

Riguardo quest’ultima funzione vorrei aggiungere che si tratta di un c-wrapper per un’applicazione HTML/Javascript. Questa applicazione viene presentata a Varnish come una grande stringa che poi viene utilizzata per generare un synthetic object in vcl_synth. La UI proposta nel VMOD e’ quella di default, ma puo’ essere modificata a secondo delle esigenze.
Per utilizzare il VMOD dovresti scrivere nel tuo VCL qualcosa del genere:

import rtstatus;

sub vcl_recv {
        if (req.url ~ "/rtstatus.json") {
                return(synth(700, "OK"));               }
        if (req.url ~ "/rtstatus") {
                return(synth(800, "OK"));
        }
}
sub vcl_synth {
        if (resp.status == 700){
                set resp.status = 200;
                set resp.http.Content-Type = "text/plain; charset=utf-8";
                synthetic(rtstatus.rtstatus(5));
                return (deliver);
        }
        if (resp.status == 800) {
                set resp.status = 200;
                set resp.http.Content-Type = "text/html; charset=utf-8";
                synthetic(rtstatus.html());
                return (deliver);
                }
}
Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...