Closed jacitty closed 2 months ago
Die Anzeige "Keine Verbindung" erfolgt dann, wenn der Zeitpunkt der letzten Messung zu lange her ist. Meist passiert das, wenn INFLUX_POLL_INTERVAL
zu klein ist, insbesondere kleiner als das Intervall, mit dem die Daten hereinkommen.
Wenn das nicht hilft: Welche Version verwendest du? Wo kommen die Daten her (welche Kollektoren)? Wie sieht deine .env
und docker-compose.yml
? Was hast du geändert, bevor dieses Problem das erste mal auftrat?
Hi. Danke für die schnelle Antwort. Als Version habe ich die v0.14.5 im Einsatz, das wird jede Nacht bei Bedarf aktualisiert. Ich vermute, es könnte sein dass der Fehler auftritt seit ich vor kurzem in der .env die Parameter für die Anlagenausrichtung angepasst habe. Ich kann zumindest keinen Parameter in der .env namerns INFLUX_POLL_INTERVAL finden. Merkwürdig, da ich dort nix geändert habe. Ich füge jetzt ,al wieder INFLUX_POLL_INTERVAL=5 ein und starte neu.
INFLUX_POLL_INTERVAL
steht hier:
https://github.com/solectrus/hosting/blob/main/guide/raspberry-pi/.env#L60-L61
und hier (nicht vergessen!): https://github.com/solectrus/hosting/blob/main/guide/raspberry-pi/docker-compose.yml#L38
Wenn der Wert nicht gesetzt ist, wird ein Default von 5
angenommen.
Bei weiter bestehenden Problemen bitte unbedingt .env
und docker-compose.yml
posten, sonst ist das alles nur ein Raten.
Das ist ja nun doch etwas merkwürdig, da ich an der docker-compose.yml nichts geändert habe. Trotzdem fehlen dort einige Zeilen. .env: env.txt
docker-compose.yml: docker-compose.yml.txt
Nachdem ich die docker-compose.yml korrigiert habe startet docker zum einen viel schneller und der Raspberrry fühlt sich auch zum andern wieder viel schneller an. Starten/Stoppen von docker dauert nicht mehr "eine Ewigkeit", die Startzeiten sind von ca. 80 sec runter auf 20 sec. Vermutlich war der Raspi so dermaßen ausgebremst dass die Daten vom senec nicht mehr rechtzeitig abgeholt werden konnten. Ob das nur alleine an der defekten yml-File lag kann ich nicht sagen, ich hatte aber jeweils mit defekter als auch korrigierter Datei jeweils 1x komplett den raspi neu gestartet.
Es ist so, dass ich die Anleitung mit der Konfiguration im Laufe der Zeit oftmals verbessert und ausgebaut habe. INFLUX_POLL_INTERVAL
ist beispielsweise vor 9 Monaten dazugekommen, das war vorher fest auf 5 eingestellt, nun ist es konfigurierbar. Wenn du es jetzt selbst manuell auf 5 stellst, sollte sich eigentlich nichts ändern.
Dass der ganze Raspi jetzt viel schneller ist, wundert mich sehr. Das klingt nach etwas ganz anderen Problem, was du möglicherweise nebenbei behoben hast. Ich würde mal prüfen, welche Docker-Container laufen, ob möglicherweise die Docker-Logs vollgelaufen sind, was docker stats
sagt, ob apt update && apt upgrade
vielleicht schon lange nicht mehr gemacht wurde usw.
Verstehe ich dich denn richtig, dass jetzt alles wieder korrekt ist, die Anzeige "Keine Verbindung" also nicht mehr erscheint?
So, ich konnte mir das ganze jetzt mal in Ruhe anschauen. Ja, apt update und apt upgrade liefen schon lange nicht mehr und da lag einiges im Argen. Ist jetzt behoben. Jetzt hab ich mir die .yml mal genauer angeschaut. Die Aktuelle hier aus github hat doch ein paar neuere Versionen genannt (influx 2.7, bisher 2.6, postgres 16, bisher 15). So 1:1 kann ich die nicht einfach austauschen, da bekomme ich doch andere Probleme, z. B. wird mir Influx als "uinhealthy" gemeldet. Gibt es eine Anleitung, wie ich die Versionen innerhalb des Containers aktualisieren kann? Wie mache ich eigentlich Sicherungen der DB? Oder einfach immer das ganze solectrus-Verzeichnis sichern? Da bekomme ich dann Probleme mit den Berechtiugungen, da einige Dateien für den User nicht lesbar sind (.../solectrus/pgsql und .../solectrus/redis):
> pi@raspberrypi:~/solectrus $ ls -al
> insgesamt 84
> drwxr-xr-x 6 pi pi 4096 25. Jun 17:08 .
> drwxr-xr-x 19 pi pi 12288 25. Jun 17:08 ..
> drwxr-xr-x 2 pi pi 12288 18. Jan 14:37 csv
> -rw-r--r-- 1 pi pi 2552 25. Jun 17:20 docker-compose.yml
> -rw-r--r-- 1 pi pi 2552 25. Jun 16:11 docker-compose.yml.old
> -rw-r--r-- 1 pi pi 5928 25. Jun 16:38 docker-compose.yml.orig
> -rw-r--r-- 1 pi pi 5301 25. Jun 17:08 .env
> -rw-r--r-- 1 pi pi 5301 25. Jun 17:01 env.new
> drwx------ 4 pi pi 4096 14. Dez 2023 influxdb
> drwx------ 19 70 pi 4096 26. Jun 00:05 postgresql
> drwxr-xr-x 2 999 pi 4096 26. Jun 06:48 redis
Zu den Versionen:
Alle anderen Services (also die von SOLECTRUS selbst) in der docker-compose.yml
sollten das latest
-Tag verwenden. Richtet man dann noch WatchTower ein (siehe https://github.com/solectrus/hosting/blob/main/guide/raspberry-pi/docker-compose.yml#L215-L226), dann kommen Updates automatisch, was ich sehr empfehle.
Backups siehe https://github.com/orgs/solectrus/discussions/3014. Manuelles Kopieren kann man machen (mit sudo
wegen der Rechte), aber dazu müssen vorher alle Container beendet werden. Das ist daher nur eine Notlösung.
Ist der ursprüngliche Fehler mit "Keine Verbindung" denn jetzt beseitigt?
Ist der ursprüngliche Fehler mit "Keine Verbindung" denn jetzt beseitigt?
So wie es aussieht ja, ich vermute durch zu hohe Last auf dem Raspi (warum auch immer) wurden die Daten nicht immer rechtzeitig empfangen.
Den Rest überarbeite ich mal.
So, jetzt hatte ich dann mal alles überarbeitet, die docker-compose.yml und .env sind hier im Anhang.
docker-compose.yml.txt env.txt
Leider tritt das Problem mit der Verbindung immer noch auf, wie ein Blinker (keine Verbindung -> Verbunden -> keine Verbindung) Hover-Text: "letzte Messung vor xxx" wobei ich XXX jetzt schon als "halbe Minute" und auch als "vor weniger als 20 Sekunden" gesehen habe. Keine Ahnung warum, Auslastung des Systems ist ok.
Ich gehe davon aus, dass du nach einer Änderung von .env
oder docker-compose.yml
die Container neu erstellt hast, also docker compose up -d
ausgeführt hast. Wenn nicht, dann bitte nachholen.
Laut der Config ist INFLUX_POLL_INTERVAL=5
und SENEC_INTERVAL=5
. Das passt: Alle fünf Sekunden wird ein Messwert abgeholt und das UI aktualisiert ebenfalls alle 5 Sekunden. Wenn der SENEC-Speicher korrekt liefert, dann sollte es keine Fehlermeldung geben. Die Meldung "keine Verbindung" erscheint übrigens, wenn der jüngste Messwert älter ist als 2 * INFLUX_POLL_INTERVAL
, in deinem Fall also 10 Sekunden. Es ist nun die Frage, warum das bei dir passiert.
Bitte prüfe, ob die Messwerte wirklich korrekt abgeholt und in die Datenbank gespeichert werden und führe das hier aus: docker compose logs senec-collector
. Wie sieht der Output aus? Bitte poste mal die neuesten Zeilen. Am Zeitstempel lässt sich erkennen, ob es wirklich im 5-Sekunden-Turnus passiert.
Hat es einen Grund, dass du auf InfluxDB 2.6 geblieben bist? Es gab viele Bugfixes in der 2.7, das Update ist empfehlenswert. Das würde ich installieren, um weitere Fehlerquellen auszuschließen. Oben hattest du von einem "unhealthy" Status geschrieben, aber da vermute ich eine Verwechselung mit PostgreSQL. Wenn InfluxDB wirklich kein Upgrade auf 2.7 zulässt, liegt ein ernsteres Problem vor. Dann bitte prüfen, ob es im Log des InfluxDB-Containers Hinweise auf eine Ursache gibt.
Hallo. Mensch bist du schnell. Ich komme ja kaum damit nach alles noch zu prüfen und Watchtower noch einzubinden. Das Update von InfluxDB 2.6 auf 2.7 wollte ich später machen, hab das aber jetzt gemacht.
Also: docker compose down
Interessant, die Fehlermeldung Net::ReadTimeout
scheint die Ursache zu sein. Der SENEC-Collector kann manchmal die Messwerte nicht bei InfluxDB abladen. Das ist ungewöhnlich. Es ist nun herauszufinden, warum das geschieht.
Eine mögliche Erklärung wäre ein Defekt der SD-Karte, das hatten wir bereits mehrfach hier.
Ansonsten:
docker compose logs influxdb
top
. Bei mir nahe 0
.docker stats
könnte hilfreich sein. Eigentlich sollten sich die Container allesamt nur langweilen und eine CPU-Auslastung nahe 0 % haben. Bei mir springt die Auslastung des InfluxDB-Containers alle paar Sekunden auf höchstens 10%. Wenn das bei dir anders sein sollte, müsstest du deinen Raspi genauer untersuchen.Habe das Issue mal verschoben, es geht hier ja eher um ein Installationsproblem.
Hallo. Das von dir beschriebene Lastbild kann ich hier nachvollziehen. Raspi an sich langweilt sich großteils, bei 'docker stats' geht die CPU für die InfluxDB alle paar Sekunden mal auf rund 11%. Ich denke ich versuche es mal mit einer anderen SD-Karte. Da bruach ich aber jetzt erstmal ein wenig.
Ok, gucke aber vorher mal in die Logs der InfluxDB. Im Normalfall ist dort wenig los. Wenn es wirklich an der SD-Karte liegt, müsste die InfluxDB Probleme beim Schreiben haben und das (vermutlich) im Log protokollieren. Wenn nicht, dann bin ich ratlos. Austausch der SD-Karte würde ich dann (mangels anderer Ideen) wohl dennoch mal versuchen.
Ich habe jetzt einfach mal die SD-Karte geklont und mit dem Klon neu gestartet. Also anscheinend hat die alte Karte wirklich einen Schlag gehabt (Tests laufen noch), denn alleine das Booten des Raspi war viel schneller. Das 'docker compose up -d ' dauerte, bis bei allen Containern "Started" stand, insgesamt 4,4 Sekunden. Mit der alten Karte waren es hier Werte zwischen 20 und 60 Sekunden. Da muss also was mit der Karte faul gewesen sein. Fehler in den DB-Logs konnte ich jedoch keine finden, warum auch immer. Jetzt sind auch bereits seit mehr als einer Stunde keine Error-Einträge mehr beim Collector-Container aufgetreten, so wie es aussieht war es die SD-Karte.
Danke für die schnelle und so umfangreiche Hilfe, ich denke ich habe heute wieder einiges dazu gelernt. Watchtower läuft jetzt auch mit und das Backup-Skript ist ebenfalls fertig, es fehlt nur noch die Auslagerung aufs NAS.
Wohl dem, der immer eine zweite SD-Karte in der Schublade hat :) Danke für die Rückmeldung! Freut mich, dass eine Lösung gefunden wurde.
Seit ein paar Wochen sehe ich ständig "Keine Verbindung" aber es werden die aktuellen Werte angezeigt.