checkmk-plugin-docker-ps/docker_container_check.sh

42 lines
1.3 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 oder IDs kommagetrennt angeben (mischen erlaubt):
CONTAINERS="container1,e650d85ff452"
# ======================
# Rechte-Pruefung: Kann der Benutzer docker ausfuehren?
if ! docker ps -a --format '{{.ID}}' >/dev/null 2>&1; then
echo "2 Docker_Check - Keine Berechtigung fuer Docker oder Docker nicht verfuegbar"
exit 1
fi
IFS=',' read -ra CONTAINER_LIST <<< "$CONTAINERS"
for ENTRY in "${CONTAINER_LIST[@]}"; do
ENTRY=$(echo "$ENTRY" | xargs)
SERVICE_NAME="Docker_${ENTRY}"
# Suche per Name oder ID (filter sind OR-verknuepft)
STATUS=$(docker ps -a --filter "name=^/${ENTRY}$" --filter "id=${ENTRY}" --format '{{.Names}}: {{.Status}}' 2>/dev/null | head -1)
if [ -z "$STATUS" ]; then
echo "2 ${SERVICE_NAME} - Container \"${ENTRY}\" 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