Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Bohdan.K 10. 02. 2021, 09:54:50
-
Dobrý den.
Nenajde se tu někdo, kdo umi v RRDtool a zvladne ho i přes web a pomuže začatečnikovi?
Mam vytvořený graf pro 3 hodnoty a umím ho i krmit
rrdtool update /media/Disk/databaze_teploty.rrd N:teplota1:teplota2:teplota3
Našel jsem toto
https://github.com/oetiker/RrdGraphJS
Je tam index.html a v něm
<div><img
style="width:695px;height:238px" class="graph"
data-src-template="graphA?width={{width}}&height={{height}}&start={{start}}&end={{end}}&zoom={{zoom}}&rand={{random}}"
/></div>
<div><img
style="width:695px;height:238px" class="graph"
data-src-template="graphB?width={{width}}&height={{height}}&start={{start}}&end={{end}}&zoom={{zoom}}&rand={{random}}"
/></div>
Neporadi někdo jak přes to načist moji databazi?
Neumím přes web ale vola se tam nějaký soubor graphA a graphB
Děkují za jakoukoliv pomoc či radu, ktera mi toto pomuže vyřešit.
-
Tady je seriál https://www.root.cz/clanky/prechadzame-na-rrdtool/
-
Tu stranku znam, je to ale psane v perl.
Už jsem se naučil přes bash vytvořit databazi, krmit ji i vygenerovat png fraf.
Ten web je ma slabina :-\
-
RRDtool
Možná by nebylo špatný zamyslet se nad tím, jestli v roce 2021 je smysluplný používat rrdtool. Zvlášť, pokud s tím začínáš, tak bych kouknul na influxdb, prometheus, či obecně time-series databáze používané v posledních 10 letech.
-
Ten web je ma slabina :-\
Pouzijte Rozhranní obecné brány
-
Zkoušel jsem influxdb, prometheus, Collectd, Monitorix a RRDtool se mi libi nejvic.
Pomuže někdo?
-
Primitivnejsi reseni:
<html>
<head>
<meta charset="utf-8"><meta http-equiv="refresh" content="300">
</head>
<img src="plot/rack_plot_1d.png">
...
</body>
</html>
-
Nevím, jestli rozumíš tomu, do ten kód dělá - na základě Tvé interakce s webovou stránkou posílá požadavky na server, který generuje samotné obrázky a posílá je zpět browseru, který je zobrazí. Dříve jsem zkoušel něco podobného, ale bylo to na houby.
Osobně bych se na to vykašlal, pokud nutně nepotřebuješ interaktivní grafy. Nejjednodušší věc, co můžeš udělat, je primitivní CGI skript v Bashi. Ukázka stránky, kterou jsem dělal pro své potřeby je zde:
https://www.hepplerovi.cz/teploty/
Data i grafy jsou statické, takže se nic nebude aktualizovat. Ale celá stránka je generovaná skriptem gen_stranku.cgi a grafy jakési interaktivní grafy skriptem graf.cgi. Oba jsou v archivu https://www.hepplerovi.cz/teploty/teploty.tar.gz
Tento skript již nepoužívám, jak je vidět na stránce. Data do RRD stále sbírám, ale spíš jen jako zálohu, takže puštěním skriptu jsem vyrobil nové obrázky. Grafy jsou tedy dnešní ;)
Pokud chceš interaktivitu, tak bych se raději podíval po Grafaně, jestli umí kreslit data z RRD. Tu používám nyní v kombinaci s Influxdb. Je to řešení jednoduché, skripty, kterými jsem plnil RRD jsem jen mírně upravil a plním s nimi Influxdb (přes collectd).
-
@ mhepp - Tak ja jsem to zas pochopil jinak.
Je tam toto.
data-src-template="graphA?width={{width}}&height={{height}}&start={{start}}&end={{end}}&zoom={{zoom}}&rand={{random}}"
Takže v tom adresaři si vytvořim soubor třeba graf1.php
A při kliknuti na ten button ho zavolam a pošlu mu nastavene parametry
data-src-template="graf1.php?width={{width}}&height={{height}}&start={{start}}&end={{end}}&zoom={{zoom}}&rand={{random}}"
A při kliknuti na ten button ten soubor graf1.php zavolam s parametry.
V tom souboru se za pomoci php-rrd vytvoři graf a odešle zpatky.
Ja to určitě dam, ale bez vás mi to bude dost dlouho trvat :-\
-
Tak jinak.
Když tu moji stranku zavolam takto.
data-src-template="graf1.php?width={{width}}&height={{height}}&start={{start}}&end={{end}}&zoom={{zoom}}&rand={{random}}"
Jak v te strance graf1.php načtu do proměn ty hodnoty, width, height, start atd?
-
Tiez si myslim, ze v roku 2021 je rrd uz za zenitom (ja by som isiel do kombinacie InfluxDB + Grafana). Pokial predsa len chces rrd, tak mozes pozriet/skusit stary Zenoss 4.x - to je komplet monitoring s webom, ktory pouziva data v rrd.
-
InfluxDB + Grafana jsem take zkoušel.
Nejste tu ochotní mi pomoct s RRDtool a ja polezu do grafany.
-
Tak jinak.
Když tu moji stranku zavolam takto.
data-src-template="graf1.php?width={{width}}&height={{height}}&start={{start}}&end={{end}}&zoom={{zoom}}&rand={{random}}"
Jak v te strance graf1.php načtu do proměn ty hodnoty, width, height, start atd?
Je to jinak nez si myslis. Co dela ten JS je, ze do data-src-template dynamicky vklada hodnoty a ceka, ze mu vratis obrazek podle parametru => musis si napsat backend, ktery to za tebe udela:
dej_obrazek.php?width={{width}}&height={{height}}&start={{start}}&end={{end}}&zoom={{zoom}}&rand={{random}}
Napis si PHP dej_obrazek.php, ktere bude prebirat predane parematry a na zaklade toho vracet PNG obrazek pouzitim.
https://www.php.net/manual/en/function.rrd-graph.php
Chapes?
-
Jeste technicka, pokud nevis jak se nacitaji v PHP promenne z HTTP requestu, tak se na to radeji vybodni..
-
Takto v te HTML zavolam ten PHP rrd.php
<img src="rrd.php" />
<?php
$opts = array(
"--start", "-1d",
"--title=Bohdan",
"--width=800",
"--height=240",
"DEF:teplota1=/media/databaze_teplota.rrd:teplota1:AVERAGE",
"DEF:teplota2=/media/databaze_teplota.rrd:teplota2:AVERAGE",
"DEF:teplota3=/media/databaze_teplota.rrd:teplota3:AVERAGE",
);
$graphObj = new RRDGraph('-');
$graphObj->setOptions($opts);
$res = $graphObj->saveVerbose();
header("Content-type: image/png");
echo $res['image'];
?>
Alespon poradte, jak dosadit ty odeslane data?
-
Nastuduj si to laskave z nejakeho tutorialu: https://php.baraja.cz/metody-odesilani-dat
-
Jeste technicka, pokud nevis jak se nacitaji v PHP promenne z HTTP requestu, tak se na to radeji vybodni..
Vsak uz jsem mu psal at to udela pres Rozhranní obecné brány
-
Takto v te HTML zavolam ten PHP rrd.php
<img src="rrd.php" />
<?php
$opts = array(
"--start", "-1d",
"--title=Bohdan",
"--width=800",
...
?>
Alespon poradte, jak dosadit ty odeslane data?
Když dáš natvrdo "rrd.php", tak ti to žádná data neodesílá. Ten skript načítání řeší sám a parametry doplňuje podle toho template, tak to tak nech a nešahej na to. Pak v PHP jsou ta data v poli $_GET, takže místo
"--width=800"
dáš
"--width=" . $_GET['width']