NEWS
Grafana Tages/Monatsverbräuche Performance u. Darstellung?
-
Hi
um Verbräuche zu Visualisieren hab ich nun doch mal Grafana ausprobiert.
Leider hab ich den Beitrag hier verloren und noch einmal Danke für die Flux-Schnipsel um mir das so zu bauen:
Tagesverbrauch im aktuellen Monat:
from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Heizöl.Zaehlerstandverbrauch") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: 1d , fn: last, timeSrc: "_start") |> difference(nonNegative: true, columns: ["_value"]) |> yield(name: "last")
Monatsverbräuche im aktuellen Jahr:
from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Heizöl.Zaehlerstandverbrauch") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: 1mo , fn: last, timeSrc: "_start") |> difference(nonNegative: true, columns: ["_value"]) |> yield(name: "last")
Nun brauchen die Grafana Dashboards ca. 5 Sekunden eh sieh auf der VIS-View geladen sind, was schon ein extremer Nachteil ist. Liegt dass an den InfluxDB Abfragen und könnte ich das Beschleunigen indem man die Werte einzeln abfragt und in DPs speichert und dann mittels Grafana visualisiert oder gibt es bessere Ansätze?
Desweiteren, kann man nur die Panels im iFrame darstellen ohne das Grafana Menü der Dashborads drumherum ?
Thx
-
@dieter_p sagte in Grafana Tages/Monatsverbräuche Performance u. Darstellung?:
Desweiteren, kann man nur die Panels im iFrame darstellen ohne das Grafana Menü der Dashborads drumherum ?
Hast du die "Embed" Option ausgewählt?
-
Hast du die "Embed" Option ausgewählt?
nein, hatte per iFrame den Link des Dashboards eingefügt.
So aber als HTML-Frame viel besser, Danke! -
@dieter_p sagte in Grafana Tages/Monatsverbräuche Performance u. Darstellung?:
So aber als HTML-Frame viel besser
Wichtig ist, die Stellung des Schalters "Current time range" zu beachten, sonst wird immer nur ein fixer Zeitraum dargestellt.
Ansonsten sehen deine Queries ganz normal aus. Ich wüsste jetzt nicht, dass man da viel optimieren könnte. Es könnte höchstens sein, dass du unnötig viele Daten wegschreibst, und z.B. alle paar Sekunden/Minuten einen Eintrag in die InfluxDB machst.
-
@marc-berg said in Grafana Tages/Monatsverbräuche Performance u. Darstellung?:
@dieter_p sagte in Grafana Tages/Monatsverbräuche Performance u. Darstellung?:
So aber als HTML-Frame viel besser
Wichtig ist, die Stellung des Schalters "Current time range" zu beachten, sonst wird immer nur ein fixer Zeitraum dargestellt.
Danke, auch angepasst.
Ansonsten sehen deine Queries ganz normal aus. Ich wüsste jetzt nicht, dass man da viel optimieren könnte. Es könnte höchstens sein, dass du unnötig viele Daten wegschreibst, und z.B. alle paar Sekunden/Minuten einen Eintrag in die InfluxDB machst.
In die DB schreibe ich nicht wirklich viel. Der Ölzähler ist in IOB gebaut und schreibt mit dem Stop des Ölbrenners den Verbrauch bzw. Zählerstand in die DB. Das passiert aktuell vielleicht jede 20-30 Minuten.
Bei der "Performance" stören mich diese gefühlt ewigen Ladescreens von Grafana. Dies auch unbestimmt abwechselnd zwischen den beiden Panels.
In Grafana selbst kommen mir die Panels flotter vor, aber da bin ich immer nur in einem unterwegs.
Edit: Mmmh, gefühlt hat das auch mit dem Browser zu tun. Bisher Firefox und nun mal Chrome probiert und hier läd er bisher beide Panels zuverlässig und nach dem ersten mal auch flotter.
-
@dieter_p sagte in Grafana Tages/Monatsverbräuche Performance u. Darstellung?:
Edit: Mmmh, gefühlt hat das auch mit dem Browser zu tun. Bisher Firefox und nun mal Chrome probiert und hier läd er bisher beide Panels zuverlässig und nach dem ersten mal auch flotter.
Um ein wenig von dem "gefühlt" weg zu kommen, könntest du die Query mal in den InfluxDB DataExplorer einfügen und schauen, wie lang die Laufzeit ist:
So kann man sich vielleicht der Ursache nähern.
-
@marc-berg said in Grafana Tages/Monatsverbräuche Performance u. Darstellung?:
und schauen, wie lang die Laufzeit ist:
Monatsverbräuche übers aktuelle Jahr: 0,19s
Tagesverbräuche über aktuellen Monat: 0,12s (über November 0,14s) -
@dieter_p sagte in Grafana Tages/Monatsverbräuche Performance u. Darstellung?:
Monatsverbräuche übers aktuelle Jahr: 0,19s
Tagesverbräuche über aktuellen Monat: 0,12s (über November 0,14s)Dann scheint die InfluxDb bzw. die Query nicht die Ursache zu sein. Vielleicht irgendwelche Transformationen in Grafana?
-
@marc-berg
Den Browser kannst Du ausschließen?Habe gerade noch etwas probiert, da Chrome auf Standard-Einstellungen steht und der Firefox etwas schärfer eingestellt ist (Privater-Modus und alle Verläufe/Temp Files beim Beenden löschen etc.).
Nachdem ich den Firefox in Standard-Einstellungen versetzt hab, läd er bisher beide Panels zuverlässig. Aber es erscheinen bei Aufruf der Seite immer wieder die Ladeanzeigen von Grafana.
Bei Chrome ist das nicht der Fall und bei Wiederaufruf sind die Panels sofort sichtbar ohne erkennbare Ladezeiten.
-
@dieter_p sagte in Grafana Tages/Monatsverbräuche Performance u. Darstellung?:
Den Browser kannst Du ausschließen?
Ich kann gar nichts ausschließen. Vielleicht ist deine Hardware auch zu schwach, mehrere Abfragen gleichzeitig zu bedienen. Was passiert, wenn du mal eine deaktivierst?
-
Was passiert, wenn du mal eine deaktivierst?
Verhält sich dann in Firefox und Chrome identisch.
Ich sehe noch ganz kurz ein "Loading" aber kein hüpfendes Grafana Logo mehr. Das bleibt auch in beiden Browsern so.Dann das 2te Panel wieder ergänzt. In Firefox beide Panels laden wieder recht langsam mit Loading und Grafana Logo. In Chrome bleibt es bei der kurzen Sichtbarkeit von "Loading" jetzt in beiden Panels.
-
@marc-berg sagte in Grafana Tages/Monatsverbräuche Performance u. Darstellung?:
Hast du die "Embed" Option ausgewählt?
Sehr interessant! Das ist bei einem Solo-Dashboard in der Tat performanter, wie aber funktioniert das in einem Dashboard mit mehreren Dashboard?
Wenn ich dort share auswähle, gibt es keine embed-Option, oder klicke ich mal wieder falsch? -
@meister-mopper sagte in Grafana Tages/Monatsverbräuche Performance u. Darstellung?:
Wenn ich dort share auswähle, gibt es keine embed-Option, oder klicke ich mal wieder falsch?
Meines Wissens kann man nur einzelne Panels ("Solo Dashboard") als iFrame bereitstellen. Für ein Dashboard geht das nicht.
-
Danke, schade, denn ich habe nur wenige 'Solos'.
Trotzdem, die wenigen habe ich dank deines Tipps umgestellt.
-
@marc-berg, @Meister-Mopper ,
doch das geht.
Das Dashboard als public dashboard freigeben. ggf. localhost im Link durch die lokale IP-Adresse des Grafana-Hosts ersetzten.Vorher natürlich /usr/share/grafana/conf/defaults.ini im Grafana-Host anpassen.
Darin muss allow_embedding auf true gesetzt werden.
Anschließend des Service neustarten. -
@dieter_p Schau dir mal die Infos von @haus-automatisierung an:
https://haus-automatisierung.com/software/2023/05/11/influxdb2-pv-dashboard.htmlIn dem Beitrag geht es zwar um eine PV-Anlage, aber die Reduzierung der Datenmenge durch tasks ist sicher auch für dich hilfreich.
Ggf. kann bei den Abfragen auf die range optzimiert werden, auch dazu gibt es in dem Beitrag einige Infos.
-
Danke. Die allgemeine Info, dass es eine Performancesache ist hilft mir auch schon sehr.
Wie oben bei den Screenshots andeuteutungsweise zu sehen ist, gibt es eine Welt vor Grafana wo ich mir diese Visualisierung mit Datenpunkten und Queries in die Datenpunkte selbst gebaut hab.
Vom Prinzip, empfinde ich es ja auch unnötig außer für den aktuellen Tag und den aktuellen Monat bei jedem Aufruf die DB fürs ganze Jahr zu durchwurschteln. An den anderen Werte ändert sich ja erstmal nix.
Die manuell gebauten Abfragen sind nur recht komplex geworden durch viele Wenn/dann Fälle und die Visualisierung vielleicht nicht "brillant-bright". Hier der Versuch mit Grafana das mit einem Wisch zu verbessern.
Da das nicht geht, muß ich mal überlegen ob ich eine optimierte Version mit Grafana baue oder wieder ganz drauf verzichte.
-
Hab nun etwas probiert bzgl. reduzierter Datenmengen und wie ich nun festgestellt hab, hatte ich eh schon Aggregationen der Tagesverbräuche in der Datenbank die ich jeden Tag um 23:59h bilde und dareinschreibe.
Die Nutzung in Grafana also
Tageswerte:
from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "OelVerbrTag") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: 1d, fn: sum, createEmpty: false) |> yield(name: "sum")
Monatswerte:
from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "OelVerbrTag") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: 1mo, fn: sum, createEmpty: false) |> yield(name: "sum")
Wirkt sich deutlich spürbar auf die Performance aus und lesbare "Loading"-Anzeigen oder Grafana-Symbole sind verschwunden.
Nun hab ich jedoch noch eine Frage was besonders gut in der Tagesdarstellung sichtbar ist. Dort eine Verschiebung in der Zeitachse um 1Tag drin. Ich schreibe den Tagesverbrauch defintiv vor 24h in die Datenbank somit ist der Zeitstempel auch vom gleichen Tag, aber die Aggregation verschiebt das.
Wie ist das anpassbar?b) Kann ich eine eine 2te Abfrage in das gleiche Panel reinbringen für den aktuellen Tag/Monat (je nach Panel)? Hier ändert sich ja mit jedem aktuellen Verbrauch gemäß dem Zeitpunkt des Abrufs etwas und ich müßte den einen Bargraph für den Tag/monat wirklich so fein dynamisch nach Aufrufzeitpunkt haben. Lässt Grafana das zu?
Thx!
-
@dieter_p sagte in Grafana Tages/Monatsverbräuche Performance u. Darstellung?:
Dort eine Verschiebung in der Zeitachse um 1Tag drin. Ich schreibe den Tagesverbrauch defintiv vor 24h in die Datenbank somit ist der Zeitstempel auch vom gleichen Tag, aber die Aggregation verschiebt das.
Wie ist das anpassbar?Du solltest jeweils vor deine Query
import "timezone" option location = timezone.location(name: "Europe/Berlin")
reinschreiben. (Ich nehme an, dass du mit "23:59h" lokale Zeit meinst?)
b) Kann ich eine eine 2te Abfrage in das gleiche Panel reinbringen für den aktuellen Tag/Monat (je nach Panel)? Hier ändert sich ja mit jedem aktuellen Verbrauch gemäß dem Zeitpunkt des Abrufs etwas und ich müßte den einen Bargraph für den Tag/monat wirklich so fein dynamisch nach Aufrufzeitpunkt haben. Lässt Grafana das zu?
ja, das geht:
Was du damit erreichen willst, habe ich aber leider nicht verstanden. Eine zweite Abfrage ergibt aus meiner Sicht nur Sinn, wenn es um die gleichen Zeitbereiche geht.
-
@marc-berg said in Grafana Tages/Monatsverbräuche Performance u. Darstellung?:
Was du damit erreichen willst, habe ich aber leider nicht verstanden. Eine zweite Abfrage ergibt aus meiner Sicht nur Sinn, wenn es um die gleichen Zeitbereiche geht.
Danke, was ich möchte: Die Datenbankeinträge "Tagesverbrauch" stehen für jeden Tag "erst" um 23:59h zur Verfügung. Wenn ich jetzt aber die Graphen aufrufe möchte ich möglichst auch den aktuellen temporären Wert für den heutigen Tag sehen. Die Abfrage kann ich mir nicht über den measurement Tagesverbrauch holen, sondern muß ich wirklich "just in time" für den heutigen Tag berechnen lassen über die Zählerstände (nur für den heutigen Tag).
Alles mit der Intention eine möglichst performance-optimierte Ansicht zu bekommen.