Seite 1 von 3
Grafana Ladezeiten Timeseries
Verfasst: Do Sep 06, 2018 10:42 pm
von Matthias
Hallo zusammen,
ich mache gerade meine ersten Versuche in Grafana. Nun habe ich ein Diagramm mit 3 Graphen erstellt und spiele damit etwas rum. Was mich wundert, ist das das Laden der Daten sehr lange dauert. Für Daten von 2 Tagen ca. 20s+
Das scheint mir nicht normal....
Ideen?
Gruß
Matthias
PS: Wo kann man den Server eigentlich rebooten ?
Re: Grafana Ladezeiten Timeseries
Verfasst: Do Sep 06, 2018 10:56 pm
von Judas_z
Wieviele Datenpunkte hast du denn?
Bei mir Läuft Grafana ziemlich responsiv.
Einzig bei der Stromüberwachung mit dem Enertex Smartmeter über viele Tage (90) (ist ziemlich scharf eingestellt und müllt deshalb den Bus zu), schaffe ich es 2-3 Sekunden Verzögerung zu provozieren.
Info Reboot geht oben rechts auf Administrator siehe Bild.
Re: Grafana Ladezeiten Timeseries
Verfasst: Fr Sep 07, 2018 9:00 am
von S. Kolbinger
Hallo Matthias,
ich hatte am Anfang auch meine Schwierigkeiten und mich nicht selten gefragt, warum entweder gar nichts angezeigt wird, oder es ewig dauert.
Im Prinzip fragt Grafana immer eine Datenbank ab, um sich die Werte zu holen, die angezeigt werden sollen.
Je nach Menge der Daten, kann das schon mal einige Zeit dauern, z.B. wenn man einen sekündlich aufgezeichneten Wert über den Zeitraum einer Woche anschauen möchte.
Ein guter Check, wie viele Datensätze angefordert wurden, ist mit dem eingebauten "Query Inspector" möglich.
Dabei bitte folgende Struktur aufklappen: "response" -> "result" -> .... -> "values" (siehe Anhang).
Hier sieht man schnell wie groß das Array ist, das zurück geschickt wurde.
Um diese Datenmenge zu reduzieren, gibt es die Möglichkeit, die Daten vor dem Senden zu "aggregieren", d.h. zusammenzufassen.
Die meist gebrauchte Aggregation ist wohl der Durchschnitt (mean) über einen Zeitabschnitt (time($__interval)) (siehe Anhang).
Worauf man hier achten muss, ist die Fülloption, mit der man einstellt, was geschickt wird, wenn es in einem Zeitintervall keine Daten gibt.
Ich verwende hier meist "none". (Bei "null" verschwinden schon mal die Linien im Grafen).
In Grafana gibt es eine Unmenge von Einstellungen und auch ich habe bisher nur einen Bruchteil davon verwendet.
Der Query Inspector als Debug-Tool hat mir in den meisten Fällen weiter geholfen.
Stimmt, die ersten Schritte mit Grafana sind nicht ganz einfach, aber wenn man die mal hinter sich hat, ist es ein echt scharfes Tool.
Viel Spaß beim Ausprobieren.
Gruß,
S. Kolbinger
Re: Grafana Ladezeiten Timeseries
Verfasst: Fr Sep 07, 2018 1:31 pm
von Dante
[mention]Matthias[/mention]:
Solche Ladezeiten hab ich nicht, hab z.B. einen Graph mit 6 Linien / abgefragten Werten (gemischt 1Wire/KNX), in dem auch die RRD-Daten von > 1 Jahr drin sind und der brauchte bei der Ansicht "Last 1 year" erstmal bis zu 3.5 Sekunden. Nach Anwendung von mean() und time() wie vorgeschlagen sind es jetzt nur noch 350ms. (Werte jeweils aus Browser-DevTools / Netzwerk)
[mention]S. Kolbinger[/mention]:
Wieso empfehlt ihr eigentlich beim Info-Button unter Timeseries dann, dass man mean und time löschen soll? Ich hatte das bei allen durchgeführt und füg sie nun wieder ein, da die Graphen damit auch wesentlich schöner werden v.a. bei langen Zeiträumen.
grafana_1.PNG
Re: Grafana Ladezeiten Timeseries
Verfasst: Fr Sep 07, 2018 4:24 pm
von S. Kolbinger
Hallo Dante,
beide Varianten --- mit und ohne mean() + time(interval) --- haben ihre Vor- und Nachteile.
Mit [mean() + time($__interval)]:
Hier teilt Grafana den Gesamtabfragezeitraum in Intervalle auf (bei einem Jahr ist das Intervall 6h, glaube ich).
Alle Werte in einem Intervall werden gemittelt und dieser Mittelwert bekommt den Zeitstempel des Intervallanfangs.
Als Ergebnis bekommt man dann alle Mittelwerte mt ihren Zeitstempeln zurück geliefert.
Ohne [nur "field(Val)"] :
Bei der Variante ohne alles werden sämtliche Werte mit ihrem jeweiligen Zeitstempel im entsprechenden Zeitraum zurückgeliefert.
Dabei entspricht sowohl der Wert, als auch der Zeitstempel (auf die Millisekunde genau) eine einzelne Messung, bzw. einem einzelnen Telegramm.
Damit erahnt man auch schon wo die Vor- und Nachteile der jeweiligen Variante liegen:
- Bei "Ohne" bekommt man die "echten" Werte (eventuell sehr viele davon) bei "Mit" sind die Werte bearbeitet.
- Bei "Mit" kann es durch weitere Einstellungen, z.B. fill(null), dazu kommen, dass man im Grafen keine Linie sieht, obwohl auch keine Meldung "No data points" erscheint. Das hat mich viel Kopfzerbrechen gekostet, um herauszufinden, dass keine Linien zwischen den "null"-Werten gezogen werden. Bei der "Ohne" Variante passiert das nicht (ausser ich habe wirklich nur einen Wert im gesamten Zeitraum).
Je nachdem, wie die Daten zeitlich liegen und wie groß das Betrachtungsfenster liegt, ist mal die eine oder andere Variante besser.
Wir haben uns für die Variante "Ohne" beim Info-Button entschieden, da hier die Gefahr, gar nichts zu sehen, deutlich geringer ist.
Ich werde deine Anregung weitergeben, um die Beschreibung unter Info zu erweitern.
Sorry, falls du dir hier zusätzlich Arbeit gemacht hast, aber ich hoffe, dass ich hier wenigstens zu einem besseren Verständnis beitragen konnte.
Gruß,
S. Kolbinger
Re: Grafana Ladezeiten Timeseries
Verfasst: Fr Sep 07, 2018 6:05 pm
von Robert_Mini
Ich werde die Diskussion auch in die KB einarbeiten.
Robert
Re: Grafana Ladezeiten Timeseries
Verfasst: Sa Sep 08, 2018 10:07 am
von Matthias
Hallo S. Kolbinger,
danke für die Tips
Hier sieht man schnell wie groß das Array ist, das zurück geschickt wurde.
Ich hatte mean verwendet und einen Intervall von 1s hinterlegt

da kam ich dann bei 90 Tagen auf 4x 190000 Datenpunkte! Grafana belegte dann mit 2 solchen Diagrammen auch 2,4GB im Arbeitsspeicher des TW.
Mit der Einstellung "Intervall" funktioniert es.
Noch eine Weitere Frage:
Was muss ich denn auswählen wenn ich switch signale DPT 1.001 mir anzeigen lassen möchte? Ich schaffe es nur die Temperaturwerte vom KNX in Diagrammen darzustellen.
Gruß
Matthias
Re: Grafana Ladezeiten Timeseries
Verfasst: Sa Sep 08, 2018 10:31 am
von gbglace
Bei mir ist das generierte SQL:
SELECT "Val" FROM "KNX_LINE1" WHERE ("GA" = '1/1/46') AND $timeFilter
Und unter dem Reiter "Display" Lines und Staircase aktivieren.
Re: Grafana Ladezeiten Timeseries
Verfasst: Sa Sep 08, 2018 3:18 pm
von Dante
Hier mal meine Umsetzung von 0/1-Werten als Beispiel.
Um die Werte nicht oben und unten kleben zu lassen, hab ich unter Axes als Y-Min -0.5 und Y-Max 1.5 angegeben und die Decimals auf 0 gestellt. Und dann ist Staircase unter Display wichtig, damit die harten Stufen entstehen.
grafana_binaer_1.PNG
grafana_binaer_2.PNG
grafana_binaer_3.PNG
Hinzugefügt nach 7 Minuten 56 Sekunden:
Hier noch als Variante mit mehreren 0/1-Werten, die ohne Modifikation keine Informationen transportieren würden. Mittels math() wird der Wert einfach Multipliziert und Y-Max ist auf 3.5 hochgesetzt. Damit hat der Graph wieder Aussagekraft.
grafana_binaer_4.PNG
grafana_binaer_5.PNG
Re: Grafana Ladezeiten Timeseries
Verfasst: Sa Sep 08, 2018 5:15 pm
von gbglace
Das mit der Multiplikation der 0/1 ist sehr clever um mehrere davon anzuzeigen.