FHEM Forum

FHEM - Hardware => Server - Linux => Thema gestartet von: P.A.Trick am 03 November 2025, 06:15:01

Titel: docker image - health check Fehler
Beitrag von: P.A.Trick am 03 November 2025, 06:15:01
Moin Zusammen, ich habe mein FHEM nach k3s portiert. Soweit klappt auch alles, bis
auf den Health Check. Irgendwie stören mich die Meldungen im Log :-)



image: ghcr.io/fhem/fhem-docker:5.2.2-bookworm


2025.11.03 06:11:28.694 1: Read result file: Cannot open /tmp/health-check.result: No such file or directory

root@k3s-server-3:/opt/fhem# cd /tmp
root@k3s-server-3:/tmp# ls -lart
total 12
drwxr-xr-x 1 root root 4096 Nov  3 06:07 ..
drwxrwxrwt 1 root root 4096 Nov  3 06:07 .
-rw-r----- 1 fhem fhem   39 Nov  3 06:07 health-check.urls
root@k3s-server-3:/tmp# cat health-check.urls
http://localhost:8083/fhem/healthcheck
root@k3s-server-3:/tmp#│

Ein manueller curl auf den die Adresse http://localhost:8083/fhem/healthcheck klappt ohne Probleme.


Gibt es irgend etwas zu beachten?
Wie kann ich den healthcheck, zur Not, abschalten?

Titel: Aw: docker image - health check Fehler
Beitrag von: RalfRog am 03 November 2025, 09:23:59
Zum Healthcheck kann ich nichts sagen, aber die Fehlermeldung lautet:
...Cannot open /tmp/health-check.resultDu schaust dir aber "/tmp/health-check.urls" an, die andere gibt's nicht (sagt ja auch die Meldung).
Titel: Aw: docker image - health check Fehler
Beitrag von: P.A.Trick am 03 November 2025, 12:32:02
Zitat von: RalfRog am 03 November 2025, 09:23:59Zum Healthcheck kann ich nichts sagen, aber die Fehlermeldung lautet:
...Cannot open /tmp/health-check.resultDu schaust dir aber "/tmp/health-check.urls" an, die andere gibt's nicht (sagt ja auch die Meldung).

Stimmt und das ist ja auch das Problem. In der urls Datei steht die zu prüfende URL korrekt drin, allerdings wird die Ausgabe Datei nicht erstellt. Das ist das Problem!
Titel: Aw: docker image - health check Fehler
Beitrag von: passibe am 03 November 2025, 13:29:46
Ist jetzt zwar ein "shot in the dark", aber was sagt
list DockerImageInfo (bzw. was steht in den beiden INTERNALs zum healthcheck?)

Wahrscheinlich ist da aber irgendwo etwas anderes falsch. Poste mal rein zur Sicherheit dein compose file.
Du kannst sonst aber auch mal auf GitHub (https://github.com/fhem/fhem-docker) suchen, woher genau diese Read result file-Fehlermeldung kommt, vielleicht gibt das ja schon einen Hinweis auf die Fehlerquelle. Ich schaffe das frühestens Morgen.
Titel: Aw: docker image - health check Fehler
Beitrag von: CoolTux am 03 November 2025, 13:34:53
Das health Check kommt doch aus dem Container Image wenn ich das richtig sehe.
Wie hast du hast fhem im k3s deployt? Hast Du ein Helm Chart genommen oder alle Ressourcen von Hand als Manifest File angelegt?
Titel: Aw: docker image - health check Fehler
Beitrag von: CoolTux am 03 November 2025, 13:35:50
Zitat von: passibe am 03 November 2025, 13:29:46Ist jetzt zwar ein "shot in the dark", aber was sagt
list DockerImageInfo (bzw. was steht in den beiden INTERNALs zum healthcheck?)

Wahrscheinlich ist da aber irgendwo etwas anderes falsch. Poste mal rein zur Sicherheit dein compose file.
Du kannst sonst aber auch mal auf GitHub (https://github.com/fhem/fhem-docker) suchen, woher genau diese Read result file-Fehlermeldung kommt, vielleicht gibt das ja schon einen Hinweis auf die Fehlerquelle. Ich schaffe das frühestens Morgen.

In einem Kubernetes Cluster, was k3s ist, gibt es kein Composer File. Es ist kein Docker  ;)
Titel: Aw: docker image - health check Fehler
Beitrag von: passibe am 03 November 2025, 13:55:28
Zitat von: CoolTux am 03 November 2025, 13:35:50In einem Kubernetes Cluster, was k3s ist, gibt es kein Composer File. Es ist kein Docker  ;)
Oh sorry, das hatte ich nicht gecheckt :D Ich dachte er ist von kubernetes nach normal-Docker umgezogen 🤦🏼
Titel: Aw: docker image - health check Fehler
Beitrag von: P.A.Trick am 03 November 2025, 18:56:48
Zitat von: CoolTux am 03 November 2025, 13:34:53Das health Check kommt doch aus dem Container Image wenn ich das richtig sehe.
Wie hast du hast fhem im k3s deployt? Hast Du ein Helm Chart genommen oder alle Ressourcen von Hand als Manifest File angelegt?

Alles als Manifest!

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: fhem
  namespace: fhem
spec:
  replicas: 1
  selector:
    matchLabels:
      app: fhem
  template:
    metadata:
      labels:
        app: fhem
    spec:
      hostNetwork: true # Use host network to allow direct access to devices
      containers:
        - name: fhem
          image: ghcr.io/fhem/fhem-docker:5.2.2-bookworm
          env:
            - name: TZ
              value: "Europe/Berlin"
          ports:
            - containerPort: 8083
          volumeMounts:
            - name: fhem-data
              mountPath: /opt/fhem
          resources:
            requests:
              cpu: "100m"
              memory: "256Mi"
            limits:
              cpu: "500m"
              memory: "512Mi"
          livenessProbe:
            httpGet:
              path: /fhem/healthcheck
              port: 8083
            initialDelaySeconds: 60
            periodSeconds: 20
            timeoutSeconds: 5
            failureThreshold: 3
          readinessProbe:
            httpGet:
              path: /
              port: 8083
            initialDelaySeconds: 30
            periodSeconds: 10
            timeoutSeconds: 5
            failureThreshold: 3
      volumes:
        - name: fhem-data
          persistentVolumeClaim:
            claimName: fhem-pvc
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: fhem
  namespace: fhem
spec:
  replicas: 1
  selector:
    matchLabels:
      app: fhem
  template:
    metadata:
      labels:
        app: fhem
    spec:
      hostNetwork: true # Use host network to allow direct access to devices
      containers:
        - name: fhem
          image: ghcr.io/fhem/fhem-docker:5.2.2-bookworm
          env:
            - name: TZ
              value: "Europe/Berlin"
          ports:
            - containerPort: 8083
          volumeMounts:
            - name: fhem-data
              mountPath: /opt/fhem
          resources:
            requests:
              cpu: "100m"
              memory: "256Mi"
            limits:
              cpu: "500m"
              memory: "512Mi"
          livenessProbe:
            httpGet:
              path: /fhem/healthcheck
              port: 8083
            initialDelaySeconds: 60
            periodSeconds: 20
            timeoutSeconds: 5
            failureThreshold: 3
          readinessProbe:
            httpGet:
              path: /
              port: 8083
            initialDelaySeconds: 30
            periodSeconds: 10
            timeoutSeconds: 5
            failureThreshold: 3
      volumes:
        - name: fhem-data
          persistentVolumeClaim:
            claimName: fhem-pvc
Titel: Aw: docker image - health check Fehler
Beitrag von: P.A.Trick am 03 November 2025, 19:04:37
Ja es gibt kein compose File, nur ein Manifest.
Hier noch das gewünscht List:

Internals:
   FUUID      69072fb2-f33f-8b1e-fd94-e2cf62967e246ab8
   INFO_DIR   /tmp
   NAME       DockerImageInfo
   NR         59
   NTFY_ORDER 50-DockerImageInfo
   RESULT_FILE /tmp/health-check.result
   STATE     
   TYPE       DockerImageInfo
   URL_FILE   /tmp/health-check.urls
   eventCount 1
   READINGS:
     2025-11-02 10:38:36   container.cap.e audit_write,chown,dac_override,fowner,fsetid,kill,mknod,net_bind_service,net_raw,setfcap,setgid,setpcap,setuid,sys_chroot
     2025-11-02 10:38:36   container.cap.i none
     2025-11-02 10:38:36   container.cap.p audit_write,chown,dac_override,fowner,fsetid,kill,mknod,net_bind_service,net_raw,setfcap,setgid,setpcap,setuid,sys_chroot
     2025-11-03 12:44:15   container.hostname raspberrypi5
     2025-11-03 12:44:15   container.hostnetwork 1
     2025-11-02 10:38:36   container.privileged 0
     2025-11-02 10:38:36   id.gid          6061
     2025-11-02 10:38:36   id.gname        fhem
     2025-11-02 10:38:36   id.groups       [ "fhem": 6061, "tty": 5, "mail": 8, "dialout": 20, "audio": 29, "video": 44, "bluetooth": 6001, "gpio": 6002 ]
     2025-11-02 10:38:36   id.uid          6061
     2025-11-02 10:38:36   id.uname        fhem
     2025-11-02 10:38:36   image.created   2025-10-26T07:02:47.172Z
     2025-11-02 10:38:36   image.description A full blown Docker image for FHEM house automation system, based on Debian Perl -bookworm.
     2025-11-02 10:38:36   image.documentation https://github.com/fhem/fhem-docker/blob/b1f9552f0bb2731f32ba3dd8209dcbe8626c625a/README.md
     2025-11-02 10:38:36   image.licenses  MIT
     2025-11-02 10:38:36   image.revision  b1f9552f0bb2731f32ba3dd8209dcbe8626c625a
     2025-11-02 10:38:36   image.source    https://github.com/fhem/fhem-docker/
     2025-11-03 12:44:15   image.title     fhem-linux/arm64
     2025-11-03 12:44:15   image.url       https://hub.docker.com/r/fhem/fhem-linux/arm64
     2025-11-02 10:38:36   image.vendor    FHEM
     2025-11-02 10:38:36   image.version   5.2.2-bookworm
     2025-11-02 10:38:36   ssh-id_ed25519.pub <REDACTED>
     2025-11-02 10:38:36   ssh-id_rsa.pub  <REDACTED>
     2025-11-02 10:38:36   sudoers         [ "#", "# Allow installation of new packages", "# Allow updates", "# Auto-generated during container start", "fhem ALL=(ALL) NOPASSWD:SETENV: /usr/bin/npm install *", "fhem ALL=(ALL) NOPASSWD:SETENV: /usr/bin/npm uninstall *", "fhem ALL=(ALL) NOPASSWD:SETENV: /usr/bin/npm update *", "fhem ALL=(ALL) NOPASSWD:SETENV: /usr/local/bin/cpanm *", "fhem ALL=(ALL) NOPASSWD: /usr/bin/apt-get -q update", "fhem ALL=(ALL) NOPASSWD: /usr/bin/apt-get -s -q -V upgrade", "fhem ALL=(ALL) NOPASSWD: /usr/bin/apt-get -y install *", "fhem ALL=(ALL) NOPASSWD: /usr/bin/apt-get -y -q -V upgrade", "fhem ALL=(ALL) NOPASSWD: /usr/bin/nmap", "# required by modules" ]
Attributes:
   alias      Docker Image Info
   devStateIcon ok.*:security@green Initialized:system_fhem_reboot@orange .*:message_attention@red
   group      System
   icon       docker@grey
   room       System->Dienste
Titel: Aw: docker image - health check Fehler
Beitrag von: CoolTux am 03 November 2025, 19:54:19
Deine erwähnte und störende Logmeldung ist doch aus dem fhem Log oder?
Kommt also von einem fhem Device. Ich würde das DockerImageInfo einfach rauswerfen. Ist bestimmt nur Kosmetischer Natur.
Titel: Aw: docker image - health check Fehler
Beitrag von: P.A.Trick am 03 November 2025, 20:16:27
Zitat von: CoolTux am 03 November 2025, 19:54:19Deine erwähnte und störende Logmeldung ist doch aus dem fhem Log oder?
Kommt also von einem fhem Device. Ich würde das DockerImageInfo einfach rauswerfen. Ist bestimmt nur Kosmetischer Natur.

Wird leider nichts bringen, denn es wird frecherweise immer wieder beim Container Start reinkopiert.

COPY src/FHEM/99_DockerImageInfo.pm /fhem/FHEM/
Titel: Aw: docker image - health check Fehler
Beitrag von: CoolTux am 03 November 2025, 20:41:04
Kann doch ist ja nicht schlimm, ist doch nur die Moduldatei. Schmeiß das define einfach aus die Konfig.
Titel: Aw: docker image - health check Fehler
Beitrag von: P.A.Trick am 03 November 2025, 20:46:34
Zitat von: CoolTux am 03 November 2025, 20:41:04Kann doch ist ja nicht schlimm, ist doch nur die Moduldatei. Schmeiß das define einfach aus die Konfig.

Ich sagte doch, das es nichts bringen wird, da die Datei beim Container Start immer wieder ins FHEM Verzeichnis kopiert wird.
Titel: Aw: docker image - health check Fehler
Beitrag von: CoolTux am 03 November 2025, 21:15:35
Alles klar
Titel: Aw: docker image - health check Fehler
Beitrag von: passibe am 04 November 2025, 00:08:53
Kenne mich mit Kubernetes überhaupt nicht aus, deshalb sorry, wenn das, was jetzt folgt, dumme Ideen sind, aber:

Wie spielen der im Dockerfile in Zeile 255 definierte HEALTHCHECK (https://github.com/fhem/fhem-docker/blob/228306b8e9bcab517667218af52b7a1e1ac54046/Dockerfile-bookworm#L255) und die livenessProbe aus deinem manifest zusammen?
Zitat von: P.A.Trick am 03 November 2025, 18:56:48livenessProbe:
            httpGet:
              path: /fhem/healthcheck
              port: 8083
            initialDelaySeconds: 60
            periodSeconds: 20
            timeoutSeconds: 5
            failureThreshold: 3
Vielleicht "maskiert" diese livenessProbe den HEALTHCHECK, sodass dieser gar nicht ausgeführt wird und dann natürlich auch keine results-Datei angelegt wird?

Anders gefragt: Läuft bei dir im Image überhaupt health-check.sh? Meine Vermutung ist, nein.
Nochmal anders gefragt: Kannst du die livenessProbe irgendwie anpassen, dass da nicht mit httpGet gearbeitet wird, sondern ein Skript innerhalb des Containers (ist Container bei Kubernetes überhaupt der richtige Begriff?) ausgeführt wird?
Also, dass die livenessProbe einfach selbst alle paar Sekunden /health-check.sh ausführt?

Dabei sehe ich grade aber auch, dass DockerImageInfo ein Attribut "DockerHealthCheck" für alle FHEMWEB-Devices hinzufügt (Zeile 84 (https://github.com/fhem/fhem-docker/blob/228306b8e9bcab517667218af52b7a1e1ac54046/src/FHEM/99_DockerImageInfo.pm#L84)); vielleicht reicht es also auch, wenn du bei allen FHEMWEB-Devices DockerHealthCheck auf 0 setzt. Angenommen du hast nur ein FHEMWEB-Device hilft vielleicht schon ein:attr WEB DockerHealthCheck 0