first commit
This commit is contained in:
commit
44b4dfbfa1
|
|
@ -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_<containername>` 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.
|
||||
|
|
@ -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
|
||||
Loading…
Reference in New Issue