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