Eliminare i picchi anomali dai grafici di Munin (anche quelli negativi)

Tags: 

Se munin ha registrato un dato anomalo potrebbe sballare tutti i grafici, rendendoli illeggibili.

La soluzione è spiegata in questa guida ufficiale: http://guide.munin-monitoring.org/en/latest/howtos/remove-spikes.html

Il problema è che quella guida tiene conto solo dei picchi POSITIVI: se il vostro problema è in un picco negativo non lo risolverà. Ad esempio nel caso di un plugin che usa la direttiva "negative" per inserire dei dati come valori negativi del grafico (caso classico dei rilevatori di velocità di rete upload/download).

Premessa: il problema alla base è che il plugin non ha dichiarato degli estremi (min, max) per i dati. La base per la soluzione proposta è quella di impostare questi parametri. Vedi: http://guide.munin-monitoring.org/en/latest/reference/plugin.html#plugin...

  • Consiglio: fate un backup della cartella con i dati di munin /var/lib/munin, oppure /var/lib/munin/DOMAIN . Gli script che vi do sotto fanno un backup .bak dei singoli file cambiati, ma se per caso eseguite lo script più volte poi si perdono... e a me è già capitato di perdere TUTTO lo storico munin per un errore... attenzione!
  • Dopo aver impostato i dati di min e max corretti, ed avere aspettato almeno un giro di cron (di base ogni 5 minuti) possiamo applicare la soluzione (Attenzione: va eseguita come root o come utente munin)

    cd /var/lib/munin/DOMAIN
    perl -ne 'next unless /:PLUGIN/; if (/.*;(\S+):(\S+)\.(\S+)\.max\s+(\d+)/) {foreach (glob "$1-$2-$3-?.rrd") {print qq{File: $_\tMax: $4\n};qx{rrdtool tune $_ -a 42:$4};qx{rrdtool dump $_ > /tmp/rrdtool-xml};qx{mv $_ $_.bak};qx{rrdtool restore -r /tmp/rrdtool-xml $_};qx{chown munin:munin $_}}}' ../datafile
    perl -ne 'next unless /:PLUGIN/; if (/.*;(\S+):(\S+)\.(\S+)\.min\s+(-\d+)/) {foreach (glob "$1-$2-$3-?.rrd") {print qq{File: $_\tMin: $4\n};qx{rrdtool tune $_ -i 42:$4};qx{rrdtool dump $_ > /tmp/rrdtool-xml};qx{mv $_ $_.bak};qx{rrdtool restore -r /tmp/rrdtool-xml $_};qx{chown munin:munin $_}}}' ../datafile

    Sostituite "DOMAIN" con l'host per il quale volete cambiare i dati (per vederli, guardate le dir presenti in /var/lib/munin/), e "PLUGIN" con il nome del plugin. Per capire questo nome potete vedere i file .rrd presenti nella cartella "/var/lib/munin/DOMAIN". Considerate che per funzionare dovete inserire solo la parte di nome del plugin (oppure, se inserite tutto il nome di file rrd, dovete fare l'escaping corretto dei caratteri).

    Se i comandi sopra fanno qualcosa lo scriveranno a schermo, ad esempio:

    File: DOMAIN-PLUGIN-down_lan-g.rrd    Min: -5242880
    File: DOMAIN-PLUGIN-down_wan-g.rrd    Min: -5242880

    Significa che sono stati impostati i dati di "Min" per i file specificati.

    Alla fine del comando potete verificare se è stato tutto impostato correttamente facendo il comando sottostante, che vi mostrerà i dati di min/max impostati.

    rrdtool info DOMAIN-PLUGIN-ID-g.rrd  | grep "ds\[42\]"

    (Dovete ovviamente inserire il nome di file che vi interessa).

     

    La verifica definitiva si avrà quando si rebuilderanno i grafici di munin (ogni 5 minuti, anche se grafici più estesi come "mensile" o "annuale" potrebbero impiegarci più tempo).

     

    IN ALTERNATIVA

    Si può fare il dump XML del file rrd che va modificato, tramite il comando:

    rrdtool dump DOMAIN-PLUGIN-ID-g.rrd.rrd > tmp.xml

    Quindi si può modificare manualmente tmp.xml per cambiare i dati che si vogliono (attenzione a tenere la notazione scientifica che credo sia obbligatoria).

    A questo punto si può ricostruire il file rrd tramite:

    rrdtool restore tmp.xml DOMAIN-PLUGIN-ID-g.rrd.rrd

    (Potete quindi cancellare il file tmp.xml)

    Aggiungi un commento

    Scrivi la risposta in lettere (ad esempio "tre" e non "3")