| Typ-ID | docker_exec |
| Runner | Dashboard oder Agent |
| Zweck | Führt einen Befehl in einem laufenden Container aus und prüft den Exit-Code |
Der Docker Exec Check führt einen Befehl innerhalb eines laufenden Containers aus und prüft ob der Exit-Code dem erwarteten Wert entspricht. Ist der Exit-Code ungleich dem erwarteten, schlägt der Check fehl.
Dies ist ein allgemeiner Mechanismus für tiefgehendes Container-Monitoring: Datenbankverbindungen testen, Konfigurationsdateien validieren, Anwendungs-Health-Endpunkte prüfen oder beliebige andere Logik ausführen, die vom Inneren des Containers aus läuft.
Dieser Check benötigt Zugriff auf den Docker-Socket (/var/run/docker.sock). Gleiches Setup wie beim Docker Container Health-Check.
Der Befehl wird innerhalb des Container-Namensraums ausgeführt — er hat Zugriff auf alle installierten Tools, Umgebungsvariablen und Dateien des Containers.
| Feld | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| Container-Name | text |
Ja | — | Exakter Docker-Containername. |
| Befehl | text |
Ja | — | Befehl der im Container ausgeführt werden soll. Wird als Shell-Befehl ausgeführt. Beispiel: mysqladmin ping -h localhost |
| Erwarteter Exit-Code | number |
Nein | 0 |
Exit-Code der als Erfolg gewertet wird. Für die meisten Unix-Befehle ist 0 = Erfolg. |
Dieser Check führt beliebige Shell-Befehle im überwachten Container aus. Der konfigurierte Befehl hat dieselben Zugriffsrechte wie
docker execauf dem Host — er kann Umgebungsvariablen (einschliesslich Secrets) auslesen, in gemountete Volumes schreiben und mit Prozessen im Container interagieren.
Was das bedeutet:
docker_exec-Check konfigurieren kann, hat effektiv Shell-Zugriff auf den überwachten Container.pid: host oder Host-Volume-Mounts (notwendig für ProcessCheck / DiskSpaceCheck), würde ein Container-Escape den Host gefährden.Massnahmen:
mysqladmin ping oder redis-cli ping mit einem dedizierten Read-Only-Monitoring-User nutzen statt Root-Credentials zu übergeben.docker_exec-Befehle regelmässig prüfen — sie sind wie Cron-Jobs mit Container-Zugriff zu behandeln.| Ergebnis | Status |
|---|---|
| Exit-Code stimmt überein | ok |
| Exit-Code stimmt nicht überein | fail |
| Container läuft nicht | fail |
| Docker-Socket nicht verfügbar | unknown |
| Kein Container-Name oder Befehl konfiguriert | unknown |
MySQL-Verbindung testen:
Container: my-mysql-container
Befehl: mysqladmin ping -h localhost -u root -psecret
Exit-Code: 0
Redis-Erreichbarkeit prüfen:
Container: my-redis-container
Befehl: redis-cli ping
Exit-Code: 0
Konfigurationsdatei validieren:
Container: my-nginx-container
Befehl: nginx -t
Exit-Code: 0