commit 44b4dfbfa1bef770d3f4e47eeb58e2cb53557dc0 Author: Stefan Hacker Date: Fri Feb 13 08:58:37 2026 +0100 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..ab80fdf --- /dev/null +++ b/README.md @@ -0,0 +1,63 @@ +# Checkmk Local Check: Docker Container Status + +Checkmk Local Check zur Überwachung von Docker-Containern per `docker ps`. + +## Funktionsweise + +Das Script prüft für jeden konfigurierten Container den Status: + +| Container-Status | Checkmk-Status | +|---|---| +| `Up ...` (running) | OK (0) | +| `Exited ...` | CRITICAL (2) | +| `Restarting ...` | CRITICAL (2) | +| Container nicht gefunden | CRITICAL (2) | + +## Konfiguration + +In der Datei `docker_container_check.sh` die Variable `CONTAINERS` anpassen: + +```bash +CONTAINERS="webserver,database,redis" +``` + +Mehrere Container werden kommagetrennt angegeben. + +## Installation + +1. Script auf den Zielhost kopieren: + +```bash +scp docker_container_check.sh user@host:/usr/lib/check_mk_agent/local/ +``` + +2. Ausführbar machen: + +```bash +chmod +x /usr/lib/check_mk_agent/local/docker_container_check.sh +``` + +3. Sicherstellen, dass der Checkmk-Agent-Benutzer Docker-Befehle ausführen darf (Mitglied der Gruppe `docker` oder Ausführung via `sudo`). + +4. In Checkmk eine Service-Erkennung auf dem Host durchführen — die neuen Services `Docker_` erscheinen automatisch. + +## Test + +Manuell auf dem Host ausführen: + +```bash +/usr/lib/check_mk_agent/local/docker_container_check.sh +``` + +Erwartete Ausgabe: + +``` +0 Docker_webserver - Up 3 hours +0 Docker_database - Up 3 hours +2 Docker_redis - Exited (1) 5 minutes ago +``` + +## Hinweise + +- Der Plugin-Pfad kann je nach Installation variieren (`/usr/lib/check_mk_agent/local/` oder `/usr/local/lib/check_mk_agent/local/`). +- Falls der Agent als `root` läuft, funktioniert `docker ps` direkt. Andernfalls muss der Agent-Benutzer in der Gruppe `docker` sein. diff --git a/docker_container_check.sh b/docker_container_check.sh new file mode 100755 index 0000000..e39e43d --- /dev/null +++ b/docker_container_check.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# +# Checkmk Local Check: Docker Container Status +# +# Prueft per "docker ps -a" ob die angegebenen Container laufen. +# Wird als Local Check im Checkmk-Agenten verwendet. +# +# Status-Mapping: +# running -> OK (0) +# alles andere -> CRITICAL (2) +# Container nicht da -> CRITICAL (2) +# + +# === KONFIGURATION === +# Container-Namen kommagetrennt angeben: +CONTAINERS="container1,container2,container3" +# ====================== + +IFS=',' read -ra CONTAINER_LIST <<< "$CONTAINERS" + +for CONTAINER in "${CONTAINER_LIST[@]}"; do + # Leerzeichen entfernen + CONTAINER=$(echo "$CONTAINER" | xargs) + SERVICE_NAME="Docker_${CONTAINER}" + + # Container-Status abfragen + STATUS=$(docker ps -a --filter "name=^/${CONTAINER}$" --format '{{.Status}}' 2>/dev/null) + + if [ -z "$STATUS" ]; then + echo "2 ${SERVICE_NAME} - Container \"${CONTAINER}\" nicht gefunden" + elif echo "$STATUS" | grep -qi "^Up" && ! echo "$STATUS" | grep -qi "Restarting"; then + echo "0 ${SERVICE_NAME} - ${STATUS}" + else + echo "2 ${SERVICE_NAME} - ${STATUS}" + fi +done