Go to file
duffyduck 3a8b84e02d addes file 2026-02-14 10:46:17 +01:00
README.md addes file 2026-02-14 10:46:17 +01:00
README_file_check.md addes file 2026-02-14 10:46:17 +01:00
docker_container_check.sh addes file 2026-02-14 10:46:17 +01:00
docker_file_check.sh addes file 2026-02-14 10:46:17 +01:00

README.md

Checkmk Local Checks: Docker Monitoring

Zwei Checkmk Local Checks zur Überwachung von Docker-Containern.

Script Zweck
docker_container_check.sh Prüft ob Container laufen
docker_file_check.sh Prüft ob Dateien/Verzeichnisse in Containern existieren

1. Container Status Check (docker_container_check.sh)

Prüft per docker ps ob die angegebenen Container laufen.

Status-Mapping

Container-Status Checkmk-Status
Up ... (running) OK (0)
Exited ... CRITICAL (2)
Restarting ... CRITICAL (2)
Container nicht gefunden CRITICAL (2)
Keine Docker-Berechtigung CRITICAL (2)

Konfiguration

In der Datei docker_container_check.sh die Variable CONTAINERS anpassen. Namen und IDs können gemischt werden:

CONTAINERS="webserver,a1b2c3d4e5f6,redis"

Test

/usr/lib/check_mk_agent/local/docker_container_check.sh
0 Docker_webserver - webserver: Up 3 hours
0 Docker_database - database: Up 3 hours
2 Docker_redis - redis: Exited (1) 5 minutes ago

2. File/Directory Check (docker_file_check.sh)

Prüft per docker exec ... test -e ob Dateien oder Verzeichnisse in Containern existieren. Erkennt automatisch ob es eine Datei oder ein Verzeichnis ist.

Status-Mapping

Status Checkmk-Status
Pfad existiert (Datei oder Verzeichnis) OK (0)
Pfad fehlt CRITICAL (2)
Container läuft nicht CRITICAL (2)
Keine Docker-Berechtigung CRITICAL (2)

Konfiguration

In der Datei docker_file_check.sh das Array CHECKS anpassen. Format pro Zeile:

CONTAINER_NAME_ODER_ID:PFAD1,PFAD2,PFAD3

Beispiel:

CHECKS=(
    "webserver:/etc/nginx/nginx.conf,/var/log/nginx,/usr/share/nginx/html/index.html"
    "database:/var/lib/mysql/data,/etc/my.cnf"
    "e650d85ff452:/root/db.sql,/data"
)
  • Vor dem Doppelpunkt steht der Container-Name oder die ID
  • Nach dem Doppelpunkt die zu prüfenden Pfade, kommagetrennt
  • Jeder Container bekommt eine eigene Zeile
  • Dateien und Verzeichnisse können gemischt angegeben werden

Test

/usr/lib/check_mk_agent/local/docker_file_check.sh
0 Docker_File_webserver__etc_nginx_nginx_conf - Datei /etc/nginx/nginx.conf existiert in webserver
0 Docker_File_webserver__var_log_nginx - Verzeichnis /var/log/nginx existiert in webserver
2 Docker_File_database__root_db_sql - /root/db.sql fehlt in database

Installation

Beide Scripts gleich installieren:

  1. Auf den Zielhost kopieren:
scp docker_container_check.sh docker_file_check.sh user@host:/usr/lib/check_mk_agent/local/
  1. Ausführbar machen:
chmod +x /usr/lib/check_mk_agent/local/docker_container_check.sh
chmod +x /usr/lib/check_mk_agent/local/docker_file_check.sh
  1. Sicherstellen, dass der Checkmk-Agent-Benutzer Docker-Befehle ausführen darf (Mitglied der Gruppe docker oder Ausführung via sudo).

  2. In Checkmk eine Service-Erkennung auf dem Host durchführen — die neuen Services erscheinen automatisch.

Allgemeine Hinweise

  • Die Container-ID findet man per docker ps -a --format '{{.ID}} {{.Names}}'.
  • Beide Scripts prüfen vor der Ausführung ob Docker-Rechte vorhanden sind.
  • Der File Check benötigt einen laufenden Container (docker exec). Gestoppte Container werden als CRITICAL gemeldet.
  • 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 direkt. Andernfalls muss der Agent-Benutzer in der Gruppe docker sein.