Skillnad mellan versioner av "RRDtool HowTo"

Från Temperatur.nu/m.nu Wiki
Hoppa till:navigering, sök
m (Beskrivning)
(Ersätter sidans innehåll med 'Denna sida har flyttat till [http://wiki.m.nu/index.php/RRDTool_Howto http://wiki.m.nu/index.php/RRDTool_Howto]')
 
Rad 1: Rad 1:
{| align="right"
+
Denna sida har flyttat till [http://wiki.m.nu/index.php/RRDTool_Howto http://wiki.m.nu/index.php/RRDTool_Howto]
  | __TOC__
 
  |}
 
==Bakgrund==
 
Detta är en fortsättning på [[OWFS_HowTo|HowTo OWFS]] skulle man kunna säga och syftet är att kunna göra sin första graf över temperaturen. Detta är inte så knepigt, eller i alla fall inte lika knepigt som att få igång OWFS! Dock är inte RRDtool helt solklart direkt från början, det skiljer sig lite från en traditionell databas. Antingen så gör ni guiden uppifrån och ned utan att ställa frågor, eller så börjar ni med att läsa på lite om RRDtool från början, se ''Läs vidare'' nedan.
 
 
 
==Mål==
 
Få igång vår första loggning av temperatur och spara det till en RRD databas, samt att rita en enkel graf med hjälp av RRDtool
 
 
 
==Programvaror==
 
* [http://oss.oetiker.ch/rrdtool/ RRDtool]
 
* [http://www.owfs.org/ OWFS]
 
 
 
==Beskrivning==
 
Jag förutsätter att du har OWFS igång redan (eller annan programvara), för att kunna läsa av ditt 1-wire nätverk. Om du inte har det så läs [[OWFS_HowTo|HowTo OWFS]] först. Den här är gjord på Ubuntu, men som vanligt så bör det funka även på andra distributioner.
 
 
 
Till att börja med så måste vi installera RRDtool, och även stöd för Perl.
 
sudo apt-get install rrdtool perl librrdp-perl librrds-perl
 
Bör inte vara några konstigheter
 
 
 
Sen för att visa själva grafen så behövs även Apache2 installerat. Om ni inte redan har den igång installera den då
 
sudo apt-get install apache2
 
 
 
Sen vill vi skapa katalogerna där vi tänkt spara rrddata'n och script katalogen.
 
sudo mkdir ~/bin
 
sudo mkdir ~/rrddata
 
''Jag har valt att lägga skripten i '''/home/anders/bin/''' och rrd-filer (databaser) i '''/home/anders/rrddata/'''. Ni skall givetvis skriva ert användarnamn istället för '''anders'''. Alternativt om ni väljer att spara skripten/filerna någon annanstans så får ni anpassa de sökvägar som berörs nedan.''
 
 
 
Sen skall vi skapa vår första rrd databas. Antingen så kan man skriva allt direkt i prompten, men jag tycker det är lättare att skapa ett enkelt shell script för att då har man kvar vad man gjort. ;-) Vissa kanske tycker att det är en omväg, men i slutändan lönar det sig, i alla fall i utbildningssyfte.
 
  cd /home/anders/rrddata/
 
  sudo nano create_rrd.sh
 
Lägg till följande...
 
#!/bin/bash
 
# Script to create rrd-file
 
 
# 24h with 2,5 min resolution
 
# 7d with 5 min resolution
 
# 1y with 10 min resolution
 
# 20y with 1h resolution
 
 
directory="/home/anders/rrddata/"
 
filename="outside_temp.rrd"
 
 
# Check i file already exists
 
if [ ! -f "$directory$filename" ]
 
then
 
# File doesn't exist, create new rrd-file
 
echo "Creating RRDtool DB for outside temp sensor"
 
rrdtool create $directory$filename \
 
--step 150 \
 
DS:outsidetemp:GAUGE:300:-50:60 \
 
RRA:AVERAGE:0.5:1:576 \
 
RRA:AVERAGE:0.5:2:2016 \
 
RRA:AVERAGE:0.5:4:52560 \
 
RRA:AVERAGE:0.5:24:175200 \
 
RRA:MAX:0.5:1:5760 \
 
RRA:MAX:0.5:2:2016 \
 
RRA:MAX:0.5:4:52560 \
 
RRA:MAX:0.5:24:175200 \
 
RRA:MIN:0.5:1:5760 \
 
RRA:MIN:0.5:2:2016 \
 
RRA:MIN:0.5:4:52560 \
 
RRA:MIN:0.5:24:175200
 
echo "Done!"
 
else
 
echo $directory$filename" already exists, delete it first."
 
fi
 
...och spara sen. (i '''nano''', CTRL-X) Tidsrymden och upplösningen på den sparade datan kanske är i överkant, men det kan ni ändra sen om ni vill.
 
 
 
Ändra så att vi får kör rättigheter på scriptet.
 
sudo chmod +x create_rrd.sh
 
 
 
Kör scriptet
 
create_rrd.sh
 
och förhoppningsvis så skall det ha skapats en outside_temp.rrd fil.
 
 
 
Om man får felmeddelandet "command not found", kan man prova att sätta ./ före
 
./create_rrd.sh
 
 
 
Nu har vi själva filen för att spara information i. Nu skall vi skapa script som loggar temperaturen.
 
cd /home/anders/bin
 
sudo nano get_temp.sh
 
Lägg till följande
 
#!/bin/bash
 
 
OutsideTempSensor="10.51777C010800"
 
RRDDataDirectory="/home/anders/rrddata/"
 
RRDDataFile="outside_temp.rrd"
 
 
# Get temps form OWFS
 
OutsideTemp=`cat /mnt/1wire/$OutsideTempSensor/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
 
 
#Update RRD database
 
rrdtool update $RRDDataDirectory$RRDDataFile N:$OutsideTemp
 
echo $OutsideTemp
 
och spara.
 
 
 
Ändra så att vi får kör rättigheter på scriptet.
 
sudo chmod +x get_temp.sh
 
 
 
Nu har vi en rrd fil som sparar information, vi har ett script som hämtar information och uppdaterar rrd filen, återstår gör biten med att rita en graf. Så nu fixar vi det! Detta görs med ett Perl script.
 
sudo nano graph_temp.pl
 
lägg till följande
 
#!/usr/bin/perl
 
 
use RRDs;
 
 
my $cur_time = time();
 
my $start_time = $cur_time - 86400;    # set end time to 24 hours ago
 
               
 
RRDs::graph "/var/www/graph_temp.png", 
 
"--start= $start_time",
 
"--end= $cur_time",
 
"--title= Temp ute",
 
"--height= 300",
 
"--width= 500",
 
"--vertical-label= °C",
 
      "DEF:OutsideTemp=/home/anders/rrddata/outside_temp.rrd:outsidetemp:AVERAGE",                         
 
"COMMENT:\t\t\t\tNu    Medel    Max    Min\\n",
 
"HRULE:0#0000FF",       
 
      "LINE2:OutsideTemp#0000FF:Ute\t\t\t",   
 
"GPRINT:OutsideTemp:LAST:%6.1lf",
 
"GPRINT:OutsideTemp:AVERAGE:%6.1lf",
 
"GPRINT:OutsideTemp:MAX:%6.1lf",
 
"GPRINT:OutsideTemp:MIN:%6.1lf\\n";
 
 
my $err=RRDs::error;
 
if ($err) {print "problem generating the graph: $err\n";}
 
 
print "Done!\n"
 
Det här läser från vår rrd fil och skapar en graf med senaste 24h i /var/www/
 
 
 
För att det här skall "gå av sig själv" så måste vi lägga till två jobb i crontab för att det skall funka. Öppna crontab för redigering
 
sudo crontab -e
 
lägg till
 
*/2.5 * * * *          /home/anders/bin/get_temp.sh
 
*/2.5 * * * *          export LANG=sv_SE.utf8 && /home/anders/bin/graph_temp.pl
 
och spara.
 
 
 
Om nu allt funkar som det skall så loggas temperatur och det skapas en ny graf var 5:e minut. För att se grafen gå till http://localhost/graph_temp.png eller http://mindoman/graph_temp.png
 
 
 
==Läs vidare==
 
Som jag skrev ovan så är det inte självklart hur RRDtool funkar, i alla fall tycker inte jag det. Så tipset för att komma vidare är att läsa på deras hemsida, och speciellt deras [http://oss.oetiker.ch/rrdtool/tut/rrdtutorial.en.html rrdtutorial]. Läser ni den och gör exemplen så har ni kommit en bra bit på vägen. Sen är det bara att ändra/lägga_till/testa i era script för att se vad som händer ;-). Mer info exakt vad dom olika delarna i skapandet av rrd databasen och graferna betyder läser ni om i [http://oss.oetiker.ch/rrdtool/doc/index.en.html RRDtools dokumentation].
 
Om ni vill gå vidare och logga er elförbrukning sen så kan jag rekommendera Eriks guide [[Mäta elförbrukning med rrdtool]].
 
 
 
Det här är ETT sätt att få ingång loggning, det går att göra på hur många olika sätt som helst. Kanske inte är det enklaste eller bästa sättet som jag beskrivit men det bör fungera och hjälpa er att komma igång. Som alltid så kan det finnas felaktigheter. Hittar ni några så [http://www.temperatur.nu/forum/guider-artiklar-how-to/howto-rrdtool-pa-ubuntu-installera-logga-rita-graf-t634.html skriv gärna en kommentar] så ser jag till att hålla HOWTO'n uppdaterad. Håll till godo (...än en gång)! ;-)
 
 
 
==Källor==
 
* http://www.temperatur.nu/forum/viewtopic.php?f=24&t=526
 
* http://www.temperatur.nu/forum/viewtopic.php?f=24&t=565
 
 
 
[[Kategori:Linux]]
 
[[Kategori:HowTo]]
 

Nuvarande version från 26 september 2014 kl. 19.49

Denna sida har flyttat till http://wiki.m.nu/index.php/RRDTool_Howto