ok...może to być początek czegoś wielkiego
Aby był porządek trzeba stworzyć katalogi
/etc/rrdtool/ a w nim
/etc/rrdtool/bazy/
i
/etc/rrdtool/skrypty/
(tu użyłem katalogów jakie stworzył automagiczny konfigurator Marska - ale mogą być dowolne ważne aby zmienić ścieżki wszędzie)
Na początek musimy zrobić bazę w której bedą przechowywane dane. W jednej bazie może być kilka mierzonych wartości.
Robimy ją jednorazowo.
Rrdtool jest zestawem programów które wykonuje się z parametrami.
A ponieważ tych parametrów jest dużo i często są długie dlatego wygodnie jest je umieścić w jednym pliku-skrypcie.
oto przykładowy plik który służył do stworzenia mojej bazy
rrdtool create /etc/rrdtool/bazy/temperatura.rrd --step 300 \
DS:tpiec:GAUGE:600:-1:105 \
DS:twoda:GAUGE:600:-1:105 \
DS:tdom:GAUGE:600:-5:55 \
DS:tcopow:GAUGE:600:-1:105 \
DS:tdwor:GAUGE:600:-27:55 \
RRA:AVERAGE:0.5:1:1200 \
RRA:MIN:0.5:12:2400 \
RRA:MAX:0.5:12:2400 \
RRA:AVERAGE:0.5:12:2400
znak
\ oznacza przełamanie wiersza, czyli powyższy zapis jest równoznaczny z wpisanym w jednej lini.
teraz gdy mamy bazę należy zapisać w nią dane.
sposobów pewnie jest nieskończenie wiele np z crona, lub przy pomocy sleep itp.
Ja stworzyłem jeden plik wykonywalny który jest odpalany z crona co 3 min.
czyli
crontab -e i dopisujemy:
*/3 * * * * /etc/rrdtool/skrypty/calosc
a w katalogu
/etc/rrdtool/skrypty/ tworzymy plik wykonywalny o nazwie
calosc a w nim
#!/bin/sh
#tu dopisujemy sktypty które maja byc odpalana z crona
/etc/rrdtool/skrypty/temperatura.upd
Dzięki temu nie będziemy musieli tworzyc dodatkowych wpisów w cronie jesli zapragniemy jeszcze coś dodać.
Plik
temperatura.upd wyglada tak
#!/bin/bash
. /etc/rrdtool.conf
a=(`digitemp -a -q`)
tpiec=${a[1]}
twoda=${a[2]}
tdom=${a[3]}
tcopow=${a[4]}
tdwor=${a[5]}
rrdtool update /etc/rrdtool/bazy/temperatura.rrd \
-t tpiec:twoda:tdom:tcopow:tdwor \
N:$tpiec:$twoda:$tdom:$tcopow:$tdwor \
> /dev/null
Wcześniej trzeba mieć działajacy digitemp.
...
od tego momentu dane są zbierane.
Aby narysować wykres bedziemy potrzebować jeszcze jeden skrypt w
/etc/rrdtool/skrypty/nazwiemy go
temperatura.www a w nim
#!/bin/sh
rrdtool graph /var/www/rrdtool/picture/"$1".png \
--end now --start end-"$2" --width 600 --height 180 \
DEF:copow=/etc/rrdtool/bazy/temperatura.rrd:tcopow:AVERAGE \
DEF:woda=/etc/rrdtool/bazy/temperatura.rrd:twoda:AVERAGE \
DEF:dom=/etc/rrdtool/bazy/temperatura.rrd:tdom:AVERAGE \
DEF:piec=/etc/rrdtool/bazy/temperatura.rrd:tpiec:AVERAGE \
DEF:dwor=/etc/rrdtool/bazy/temperatura.rrd:tdwor:AVERAGE \
LINE1:copow#000000:"temp. powrot wody co" \
LINE1:dom#FF8C00:"temp. w domu" \
LINE1:woda#CD5C5C:"temp. c.w.u" \
LINE1:dwor#0000CB:"temp. na zewnatrz" \
LINE1:piec#FF0000:"temp. na piecu" \
>/dev/null
skrypt tworzy w katalogu dla www obrazki-wykresy
uruchamia sie go z dwoma parametrami pierwszy to nazwa pliku wynikowego a drugi to okres za jaki ma byc tworzony wykres
czyli polecenie
temperatura.www test 1hstoworzy w katalogu /var/www/rrdtool/picture/ plik o nazwie test.png z wykresem godzinowym.
-----edit----
można używać następujących parametrów:
s (sekundy),
h (godziny),
d (dni),
w (tygodnie),
m (miesiące)
y (lata)
---------------------
Mozna go uruchamiać z crona - rozwiązanie dobre dla stron odwiedzanych przez wielu uzytkowników jednocześnie, kosztem użycia CPU.
Mozna uruchamiać podczas wywołania strony www - spada uzycie CPU.
Do drugiego rozwiązania potrzebny bedzie np lighttp lub apache z włączoną obsługą php lub cgi.
Ja zobiłem to na lighttp z cgi i ssi (to wszytko jest właczone standardowo przy instalacji).
dla porządku stwórzmy jeszcze dwa katalogi;
/var/www/rrdtool/i
/var/www/rrdtool/picture/Teraz w katalogu dla
/var/www/rrdtool tworzymy
index.shtmla w nim np:
<html>
<head>
<title>temperatura</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"
</head>
<body>
<!--#exec cmd="/etc/rrdtool/skrypty/temperatura.www temp-day 24h"-->
<b><center>
<a href="/rrdtool/temperatura.shtml"><img src="/rrdtool/picture/temp-day.png" al
<br><br>
</b></center>
</body>
</html>
ja mam jeszcze jeden plik
temperatura.shtml<html>
<head>
<title>temperatura</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"
</head>
<body>
<!--#exec cmd="/etc/rrdtool/skrypty/temperatura.www temp-week 168h"-->
<!--#exec cmd="/etc/rrdtool/skrypty/temperatura.www temp-month 1m"-->
<!--#exec cmd="/etc/rrdtool/skrypty/temperatura.www temp-year 1y"-->
<b><center>
<br>
<br><br>
<img src="/rrdtool/picture/temp-day.png" alt="Temperatura dobowa" />
<br><br>
<img src="/rrdtool/picture/temp-week.png" alt="Temperatura tygodniowa" />
<br><br>
<img src="/rrdtool/picture/temp-month.png" alt="Temperatura miesieczna" />
<br><br>
<img src="/rrdtool/picture/temp-year.png" alt="Temperatura roczna" />
<br><br>
</b></center>
ważne jest rozszerzenie
.shtml bo tylko dzięki temu skrypty odpalą się.
i tyle ... powinno działać, ale tu jedna
bardzo ważna uwaga należy nadać odpowiednie prawa własności skryptom i katalogom.
Piszę to dlatego bo np lighttpd uruchamia skrypty na prawach nobody .
Objaw jest taki że skrypt tworzy pliki ale po otwarciu przez www nic sie nie dzieje.
Gdyby jednak komuś było za mało opcji to proponuję przestudiować stone autora rrdtool i przeczytać dokumentację
http://oss.oetiker.ch/rrdtool/doc/index.en.html