Ta bort spikar / extremer ur RRD, läs här hur!

RRDTool är en Linuxmjukvara som kan användas för att lagra data i Round-Robin Databaser för att sedan generera grafer utifrån den lagrade datan.
Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
rothman
Wannabe
Inlägg: 17
Blev medlem: 21 aug 2009, 09:37
Ort: Mjölby

Ta bort spikar / extremer ur RRD, läs här hur!

Inlägg av rothman »

Jag hade min elmätare lite väl exponerad för solen och LED detektorn fick frispel. Jävligt trist för jag har samlat data över året som jag inte vill förlora.

Efter mycket sökande hittade jag ett sätt som funkar, killspike2:

Först! Ta en kopia på den RRD filen du ska jobba med!

Skapa en fil som heter killspike2.sh med följande innehåll.

Kod: Markera allt

#!/bin/sh

#
# killspike2
# Remove (presumably erroneous) peaks from RRD files
#
# Matt Zimmerman <mdz@debian.org>, 05/2002
#

set -e

usage() {
    >&2 echo "Usage: $0 <ds> <max> <rrd>..."
    >&2 echo
    >&2 echo "Remove all peaks above <max> from <ds> in the RRDs <rrd>..."
    exit $1
}

backupdir=backup.killspike2

ds=$1
max=$2

if [ -z "$ds" -o -z "$max" ]; then
    usage 1
fi

shift 2

rrds=$*

if [ "$ds" = "-h" -o -z "$rrds" ]; then
    usage 1
fi

[ ! -d $backupdir ] && mkdir $backupdir
echo "Making backups in $backupdir"

if type tempfile >/dev/null 2>&1; then
    tempfile=`tempfile`
else
    tempfile=killspike2.$$
fi

for rrd in $rrds; do
    echo $rrd

    oldmax=`rrdtool info "$rrd" | awk '$1 == "ds['$ds'].max" { print $3 }'`
    if [ -z "$oldmax" ]; then
        >&2 echo "Could not determine current max for DS '$ds' in $rrd"
        exit 1
    elif [ "$oldmax" = "NaN" ]; then
        oldmax=U
    fi

#    cp "$rrd" "$backupdir"
    rrdtool tune "$rrd" --maximum "$ds:$max"
    rrdtool dump "$rrd" > "$tempfile"
    mv "$rrd" "$backupdir"
    rrdtool restore -r "$tempfile" "$rrd"
    rrdtool tune "$rrd" --maximum "$ds:$oldmax"
done

rm -f "$tempfile"

Kör sedan:

Kod: Markera allt

sh killspike2.sh energi 10 energi.rrd
Där 10 är maximala värde, där får man laborera lite, börja högt och sänk mer och mer medans ni kollar på graferna. 4.5 ger mig max 10 kW. Your mileage may vary
(min datakälla heter energi i filen energi.rrd)


OBS! Denna sänker inte spikarna utan tar bort dom! Det blir alltså hål i graferna.
andreas
Tar hemautomation på allvar
Inlägg: 61
Blev medlem: 17 jan 2010, 01:06
Ort: Borås
Kontakt:

Re: Ta bort spikar / extremer ur RRD, läs här hur!

Inlägg av andreas »

Precis vad jag behövde för att städa bort spikar i min loggning av elförbrukning.
Niklas
Moderator
Inlägg: 1019
Blev medlem: 22 mar 2008, 21:13
Ort: Stockholm
Kontakt:

Re: Ta bort spikar / extremer ur RRD, läs här hur!

Inlägg av Niklas »

Idag så sket sig min rapportering med en jättespik när vi fick strömavbrott.

Scriptet verkar inte funka. Katastrof!

Så här är det innan scriptet:
energi-1day (1).png
energi-1day (1).png (22.03 KiB) Visad 2444 gånger
Så här blir det efter:
energi-1day.png
energi-1day.png (19.97 KiB) Visad 2444 gånger
Jag försökte att konvertera RRD-filen till XML och manuellt ta bort allt som hände från 9 och framåt men det blir likadant med scriptet. :(

HJÄLP!
Skriv svar