mdzio / ccu-jack

CCU-Jack bietet einen einfachen und sicheren REST- und MQTT-basierten Zugriff auf die Datenpunkte der Zentrale (CCU) des Hausautomations-Systems HomeMatic. Zudem können einfach Fremdgeräte an die CCU angebunden werden.
GNU General Public License v3.0
121 stars 12 forks source link

Healthcheck Endpunkt und Programm bereitstellen #41

Closed ptweety closed 3 years ago

ptweety commented 3 years ago

Hallo @mdzio,

für das Dockerfile hatte ich einen healthcheck vorgeschlagen. Dort wird schlicht innerhalb des Containers ein Aufruf mit curl auf http://localhost:2121 ausgeführt und auf die HTTP return codes 200 oder 401 geprüft. Diese Lösung ist nicht besonders schön und bricht natürlich, sobald der Benutzer den Port in der ccu-jack.cfg ändert.

Wäre es möglich einen entsprechenden Status direkt in ./ccu-jack vorzuhalten, diesen evtl. per Kommandozeile oder HTTP-Endpunkt (ggfs. auch nur intern für localhost:80/health) bereitzustellen und dann das ganze per separatem Programm ./healthcheck an den Benutzer/Container zu melden?

Referenzen:

mdzio commented 3 years ago

Ein HTTP-GET auf http://localhost:2121/ui ist von den Benutzerberechtigungen nicht betroffen. Der Port kann zur Not aus der Konfigurationsdatei ermittelt werden. Einen neuen HTTP-Endpunkt für den Healthcheck würde ich daher nicht hinzufügen. Dieser müsste dann auch wieder konfigurierbar sein. Sicherlich kann der Healthcheck auch in Go implementiert werden. Aber für einen einfachen HTTP-GET würde ich erst einmal bei curl bleiben.

ptweety commented 3 years ago

Ok, das funktioniert auch ganz gut, wenn der Healthchekc dann z.B. so konfiguriert ist:

# Add a healthcheck (default every 30 secs)
HEALTHCHECK --interval=30s --timeout=5s --start-period=40s --retries=3 \
  CMD curl -Isf -o /dev/null -w "%{scheme}/%{http_version} %{http_code}\n" http://localhost:2121/ui/ || exit 1

Ich mache dann hier mal zu.