37 lines
1.1 KiB
Bash
Executable File
37 lines
1.1 KiB
Bash
Executable File
#!/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
|