HOWTO: RRDtool på Ubuntu (installera, logga, rita graf)

Hur gör man för att ... ? Hur fungerar ... ? Steg för steg-guider och förklarande artiklar finns i detta forum.
Många guider finner också på vår blogg: https://blog.m.nu/
Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
Användarvisningsbild
CirruZZ
Master Moderator
Inlägg: 1621
Blev medlem: 13 feb 2008, 16:46
Ort: Ystad

HOWTO: RRDtool på Ubuntu (installera, logga, rita graf)

Inlägg av CirruZZ »

Bakgrund
Detta är en fortsättning på HOWTO: Installera OWFS 2.7p10 på Ubuntu server 8.10 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 :wink: , 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
RRDtool
OWFS


Beskrivning
Jag förut sä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 HOWTO: Installera OWFS 2.7p10 på Ubuntu server 8.10 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.

Kod: Markera allt

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å

Kod: Markera allt

sudo apt-get install apache2
Sen vill vi skapa katalogerna där vi tänkt spara rrddata'n och script katalogen.

Kod: Markera allt

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! :wink: Vissa kanske tycker att det är en om väg, men i slutändan lönar det sig, i alla fall i utbildningssyfte.

Kod: Markera allt

cd /home/anders/rrddata/
sudo nano create_rrd.sh
Lägg till följande...

Kod: Markera allt

#!/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:576 \
		 RRA:MAX:0.5:2:2016 \
		 RRA:MAX:0.5:4:52560 \
		 RRA:MAX:0.5:24:175200 \
		 RRA:MIN:0.5:1:576 \
		 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. :wink:

Ändra så att vi får kör rättigheter på scriptet.

Kod: Markera allt

sudo chmod +x create_rrd.sh
Kör scriptet

Kod: Markera allt

create_rrd.sh
och förhoppningsvis så skall det ha skapats en outside_temp.rrd fil.

Nu har vi själva filen för att spara information i. Nu skall vi skapa script som loggar temperaturen.

Kod: Markera allt

cd /home/anders/bin
sudo nano get_temp.sh
Lägg till följande

Kod: Markera allt

#!/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.

Kod: Markera allt

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.

Kod: Markera allt

sudo nano graph_temp.pl
lägg till följande

Kod: Markera allt

#!/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

Kod: Markera allt

sudo crontab -e
lägg till

Kod: Markera allt

*/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 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 :wink: . Mer info exakt vad dom olika delarna i skapandet av rrd databasen och graferna betyder läser ni om i RRDtools dokumentation.
Om ni vill gå vidare och logga er elförbrukning sen så kan jag rekommendera Eriks guide Mäta elförbrukning via 1wire och 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 när jag skriver så kan finnas felaktigheter :shock: . Hittar ni några så skriv gärna en kommentar så ser jag till att hålla HOWTO'n uppdaterad. Håll till godo (...än en gång)! :wink:

Källor
Senast redigerad av CirruZZ den 06 apr 2011, 15:05, redigerad totalt 4 gång.
Anledning: Fixat fel gällande skapande av rrd filen.
Användarvisningsbild
HUSKii
Tar hemautomation på allvar
Inlägg: 270
Blev medlem: 16 jun 2008, 20:08
Ort: Oskarström

Re: HOWTO: RRDtool på Ubuntu (installera, logga, rita graf)

Inlägg av HUSKii »

Hej.

Är det svårt att lägga till fler sensorer? Hade inte varit fel att ha med det i guiden. :D

Tack för en bra guide! Keep up the good work!
Användarvisningsbild
CirruZZ
Master Moderator
Inlägg: 1621
Blev medlem: 13 feb 2008, 16:46
Ort: Ystad

Re: HOWTO: RRDtool på Ubuntu (installera, logga, rita graf)

Inlägg av CirruZZ »

Svårt och svårt...nej inte särskilt, men det beror ju på om du är med på vad scripten gör. :wink:

Till att börja med så måste du ju skapa fler rrd filer, en per sensor. Eller skapa fler data sources (DS) i samma rrd databas.

Sen får du lägga till fler rader med uppdateringar i get_temp.sh, typ

Kod: Markera allt

OutsideTemp=`cat /mnt/1wire/$OutsideTempSensor/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
Sen är det bara att göra fler grafer eller kombinera fler DEF i graferna.

Tipset är att du läser och gör tutorial'en om RRDtool på deras hemsida. Tror en del frågor kommer att klarna då. :wink:
Användarvisningsbild
HUSKii
Tar hemautomation på allvar
Inlägg: 270
Blev medlem: 16 jun 2008, 20:08
Ort: Oskarström

Re: HOWTO: RRDtool på Ubuntu (installera, logga, rita graf)

Inlägg av HUSKii »

Jag är helt grön på linux så jag behöver nog läsa lite på de länkarna du skrev.

Sen får vi se om det blir nån framgång. :D
Användarvisningsbild
HUSKii
Tar hemautomation på allvar
Inlägg: 270
Blev medlem: 16 jun 2008, 20:08
Ort: Oskarström

Re: HOWTO: RRDtool på Ubuntu (installera, logga, rita graf)

Inlägg av HUSKii »

Hej!

Jag har lyckats att installera ubuntu server och owfs.
Det fungerar till och med!! :D

Jag kan se temperaturerna när jag kör:

Kod: Markera allt

cat /mnt/1wire/10.3AD85F010800/temperature
Sen har jag även följt denna guiden, men sen när jag ska köra detta enligt guiden:

Kod: Markera allt

create_rrd.sh
Så står det "bash: create_rrd.sh: command not found"
fast utan "
Användarvisningsbild
Troy McClure
Tar hemautomation på allvar
Inlägg: 66
Blev medlem: 13 mar 2008, 12:47
Ort: Bångbro

Re: HOWTO: RRDtool på Ubuntu (installera, logga, rita graf)

Inlägg av Troy McClure »

HUSKii skrev:Så står det "bash: create_rrd.sh: command not found"
fast utan "
Gör på detta viset, skriv:

Kod: Markera allt

./create_rrd.sh
Du ska då stå i samma katalog som create_rrd.sh ligger i.
Och så måste filen vara körbar. Men det blir den om du gör enligt guiden tror jag.

Vidare undrar jag hur man gör för att få en kurva istället för en massa prickar i grafen.
Användarvisningsbild
HUSKii
Tar hemautomation på allvar
Inlägg: 270
Blev medlem: 16 jun 2008, 20:08
Ort: Oskarström

Re: HOWTO: RRDtool på Ubuntu (installera, logga, rita graf)

Inlägg av HUSKii »

Provade med:

Kod: Markera allt

./create_rrd.sh
men det gick inte hela vägen, har tydligen inte rättigheter att skapa filen: outside_temp.rrd.

Provade att köra:

Kod: Markera allt

sudo ./create_rrd.sh
Då gick det, en fil skapas i mappen rrddata
innehållet i outside_temp.rrd är:

Kod: Markera allt

RRD
Användarvisningsbild
Troy McClure
Tar hemautomation på allvar
Inlägg: 66
Blev medlem: 13 mar 2008, 12:47
Ort: Bångbro

Re: HOWTO: RRDtool på Ubuntu (installera, logga, rita graf)

Inlägg av Troy McClure »

Meningen är nog att du ska göra detta i din egen hemkatalog. Jag gör allt som root i katalogen /root.

Edit: Jag kör iofs Debian, där man FÅR vara root. I Ubuntu är nog sudo rätt väg att gå.
Användarvisningsbild
HUSKii
Tar hemautomation på allvar
Inlägg: 270
Blev medlem: 16 jun 2008, 20:08
Ort: Oskarström

Re: HOWTO: RRDtool på Ubuntu (installera, logga, rita graf)

Inlägg av HUSKii »

Men borde det inte finnas lite mer text i outside_temp.rrd?

Ser nästan ut som om jag inte har fått in rrdtool riktigt,
eller har nån en bättre fundering på vad jag har gjort fel? :oops:
Användarvisningsbild
CirruZZ
Master Moderator
Inlägg: 1621
Blev medlem: 13 feb 2008, 16:46
Ort: Ystad

Re: HOWTO: RRDtool på Ubuntu (installera, logga, rita graf)

Inlägg av CirruZZ »

HUSKii skrev:...
Provade att köra:

Kod: Markera allt

sudo ./create_rrd.sh
Då gick det, en fil skapas i mappen rrddata
innehållet i outside_temp.rrd är:

Kod: Markera allt

RRD
ok, i mappen .../rrddata/ så har du fått en fil som heter outside_temp.rrd?! Det är den filen som sen kommer att innehålla all information du loggar.

Hur menar du att den innehåller RRD? Har du skrivit cat outside_temp.rrd ?
Användarvisningsbild
HUSKii
Tar hemautomation på allvar
Inlägg: 270
Blev medlem: 16 jun 2008, 20:08
Ort: Oskarström

Re: HOWTO: RRDtool på Ubuntu (installera, logga, rita graf)

Inlägg av HUSKii »

Jag provade att lägga in xubuntu desktop genom att i ubuntu server skriva något i stil med:

Kod: Markera allt

sudo apt-get xubuntu-desktop
(googlade efter "GUI for Ubuntu" server)
Sen gick jag in i filhanteraren och öppnade filen med lämplig text editor som fanns i xubuntu delen.
Där stog bara i filen outside_temp.rrd: "RRD" utan ".

Så som jag ser det har jag nog inte fått in rrdtool helt.
Sen graph_temp.sh vill inte köras heller, får inte ut någon outside_temp.png,
jag har en liten aning om att det är ett rätighets relaterat problem iochmed att jag måste köra
create_rrd.sh genom att skriva sudo ./create_rrd.sh

Men jag ska kanske prova att köra om allt igen utan xubuntu delen.
Iochmed att jag är helt grön på linux så villle jag ha ett GUI,
men nu har jag efter lite google sökning och läsning i forum lärt mej lite mer om hur man tar sig runt i linux miljö.
Användarvisningsbild
HUSKii
Tar hemautomation på allvar
Inlägg: 270
Blev medlem: 16 jun 2008, 20:08
Ort: Oskarström

Re: HOWTO: RRDtool på Ubuntu (installera, logga, rita graf)

Inlägg av HUSKii »

Nu har jag lagt in allt pånytt igen, ubuntu server, owfs och rrdtool.
Men det blir ändå ingen graf ritad. när jag ska köra create_rrd.sh så måste jag skriva sudo före.

Kod: Markera allt

Kör scriptet

Kod: Markera allt
    create_rrd.sh

och förhoppningsvis så skall det ha skapats en outside_temp.rrd fil.
fast jag kör det med: ./create_rrd.sh
Det skapas en fil med namnet outside_temp.rrd men när jag sen kör:

Kod: Markera allt

cat /home/ubuntu/rrddata/outside_temp.rrd
så fylls skärmen av ruter tecken (ruter symbolen i en kortlek)
sen längst ner kommer det upp en ny ubuntu@ubuntu:~$ rad.
Användarvisningsbild
CirruZZ
Master Moderator
Inlägg: 1621
Blev medlem: 13 feb 2008, 16:46
Ort: Ystad

Re: HOWTO: RRDtool på Ubuntu (installera, logga, rita graf)

Inlägg av CirruZZ »

Ok men då har du kommit så långt att du har skapat själva filen för att spara information i. Du har än så länge inte loggat något.
Fortsätt med guiden för att göra själva loggningen. Det är då som det kommer att sparas information i filen. Men du kommer inte kunna läsa den bara med cat outside_temp.rrd, för informationen sparas inte i klartext i den filen, det sparas binärt.
Användarvisningsbild
HUSKii
Tar hemautomation på allvar
Inlägg: 270
Blev medlem: 16 jun 2008, 20:08
Ort: Oskarström

Re: HOWTO: RRDtool på Ubuntu (installera, logga, rita graf)

Inlägg av HUSKii »

Jag har gjort hela guiden 2 ggr, men det kommer fortfarande ingen graf :(
En vild gissning skulle vara att get_temp.sh eller graph_temp.sh inte körs för jag får inte ut någon bild alls.

Hur kollar man om man har fått in perl delen och att den fungerar?
Graph_temp.sd är ju ett perl skript.
Användarvisningsbild
CirruZZ
Master Moderator
Inlägg: 1621
Blev medlem: 13 feb 2008, 16:46
Ort: Ystad

Re: HOWTO: RRDtool på Ubuntu (installera, logga, rita graf)

Inlägg av CirruZZ »

Jag ser nu att jag har skrivit fel i guiden.

Jag har skrivit att filen skall heta graph_temp.sh vilket är fel för det är ett Perl script, rätt skall vara graph_temp.pl. Byt namn genom att först gå till katalogen där scriptet ligger och sen skriva

Kod: Markera allt

mv graph_temp.sh graph_temp.pl
Kan vara så att du måste sätta kör rättigheter på det igen efter namn bytet.

Sen i crontab så får du ändra till rätt filnamn där med.

Vet inte men det skulle kunna vara felet.

Jag uppdaterar guiden ovan också!
Skriv svar