addes id or names and permissions
This commit is contained in:
parent
44b4dfbfa1
commit
c9ae1afc81
13
README.md
13
README.md
|
|
@ -12,16 +12,22 @@ Das Script prüft für jeden konfigurierten Container den Status:
|
||||||
| `Exited ...` | CRITICAL (2) |
|
| `Exited ...` | CRITICAL (2) |
|
||||||
| `Restarting ...` | CRITICAL (2) |
|
| `Restarting ...` | CRITICAL (2) |
|
||||||
| Container nicht gefunden | CRITICAL (2) |
|
| Container nicht gefunden | CRITICAL (2) |
|
||||||
|
| Keine Docker-Berechtigung | CRITICAL (2) |
|
||||||
|
|
||||||
## Konfiguration
|
## Konfiguration
|
||||||
|
|
||||||
In der Datei `docker_container_check.sh` die Variable `CONTAINERS` anpassen:
|
In der Datei `docker_container_check.sh` gibt es zwei Variablen. Je nachdem ob der Container-Name oder die Container-ID bekannt ist, die passende Variable befüllen (oder beide):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
CONTAINERS="webserver,database,redis"
|
# Ueberwachung per Container-Name:
|
||||||
|
CONTAINER_NAMES="webserver,database,redis"
|
||||||
|
|
||||||
|
# Ueberwachung per Container-ID:
|
||||||
|
CONTAINER_IDS="a1b2c3d4e5f6,f6e5d4c3b2a1"
|
||||||
```
|
```
|
||||||
|
|
||||||
Mehrere Container werden kommagetrennt angegeben.
|
Die Container-ID findet man per `docker ps -a --format '{{.ID}} {{.Names}}'`.
|
||||||
|
Beide Variablen können gleichzeitig genutzt werden.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
|
@ -59,5 +65,6 @@ Erwartete Ausgabe:
|
||||||
|
|
||||||
## Hinweise
|
## Hinweise
|
||||||
|
|
||||||
|
- Das Script prüft vor der Ausführung ob Docker-Rechte vorhanden sind. Falls nicht, wird ein CRITICAL-Service `Docker_Check` mit dem Hinweis "Keine Berechtigung" erzeugt.
|
||||||
- Der Plugin-Pfad kann je nach Installation variieren (`/usr/lib/check_mk_agent/local/` oder `/usr/local/lib/check_mk_agent/local/`).
|
- 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.
|
- Falls der Agent als `root` läuft, funktioniert `docker ps` direkt. Andernfalls muss der Agent-Benutzer in der Gruppe `docker` sein.
|
||||||
|
|
|
||||||
|
|
@ -12,25 +12,49 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
# === KONFIGURATION ===
|
# === KONFIGURATION ===
|
||||||
# Container-Namen kommagetrennt angeben:
|
# Container-Namen kommagetrennt (leer lassen wenn IDs genutzt werden):
|
||||||
CONTAINERS="container1,container2,container3"
|
CONTAINER_NAMES="container1"
|
||||||
|
# Container-IDs kommagetrennt (leer lassen wenn Namen genutzt werden):
|
||||||
|
CONTAINER_IDS="e650d85ff452"
|
||||||
# ======================
|
# ======================
|
||||||
|
|
||||||
IFS=',' read -ra CONTAINER_LIST <<< "$CONTAINERS"
|
# 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
|
||||||
|
|
||||||
for CONTAINER in "${CONTAINER_LIST[@]}"; do
|
check_container() {
|
||||||
# Leerzeichen entfernen
|
local FILTER="$1"
|
||||||
CONTAINER=$(echo "$CONTAINER" | xargs)
|
local LABEL="$2"
|
||||||
SERVICE_NAME="Docker_${CONTAINER}"
|
|
||||||
|
|
||||||
# Container-Status abfragen
|
SERVICE_NAME="Docker_${LABEL}"
|
||||||
STATUS=$(docker ps -a --filter "name=^/${CONTAINER}$" --format '{{.Status}}' 2>/dev/null)
|
|
||||||
|
STATUS=$(docker ps -a --filter "$FILTER" --format '{{.Names}}: {{.Status}}' 2>/dev/null | head -1)
|
||||||
|
|
||||||
if [ -z "$STATUS" ]; then
|
if [ -z "$STATUS" ]; then
|
||||||
echo "2 ${SERVICE_NAME} - Container \"${CONTAINER}\" nicht gefunden"
|
echo "2 ${SERVICE_NAME} - Container \"${LABEL}\" nicht gefunden"
|
||||||
elif echo "$STATUS" | grep -qi "^Up" && ! echo "$STATUS" | grep -qi "Restarting"; then
|
elif echo "$STATUS" | grep -qi "Up" && ! echo "$STATUS" | grep -qi "Restarting"; then
|
||||||
echo "0 ${SERVICE_NAME} - ${STATUS}"
|
echo "0 ${SERVICE_NAME} - ${STATUS}"
|
||||||
else
|
else
|
||||||
echo "2 ${SERVICE_NAME} - ${STATUS}"
|
echo "2 ${SERVICE_NAME} - ${STATUS}"
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Nach Namen pruefen
|
||||||
|
if [ -n "$CONTAINER_NAMES" ]; then
|
||||||
|
IFS=',' read -ra NAME_LIST <<< "$CONTAINER_NAMES"
|
||||||
|
for ENTRY in "${NAME_LIST[@]}"; do
|
||||||
|
ENTRY=$(echo "$ENTRY" | xargs)
|
||||||
|
check_container "name=^/${ENTRY}$" "$ENTRY"
|
||||||
done
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Nach IDs pruefen
|
||||||
|
if [ -n "$CONTAINER_IDS" ]; then
|
||||||
|
IFS=',' read -ra ID_LIST <<< "$CONTAINER_IDS"
|
||||||
|
for ENTRY in "${ID_LIST[@]}"; do
|
||||||
|
ENTRY=$(echo "$ENTRY" | xargs)
|
||||||
|
check_container "id=$ENTRY" "$ENTRY"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue