checkmk-plugin-docker-ps/README_file_check.md

2.1 KiB

Checkmk Local Check: Docker File/Directory Check

Checkmk Local Check zur Prüfung ob Dateien oder Verzeichnisse in Docker-Containern existieren.

Funktionsweise

Das Script prüft per docker exec ... test -e ob ein Pfad im Container vorhanden ist. Es erkennt automatisch ob es sich um eine Datei oder ein Verzeichnis handelt.

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: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"
    "app:/root/db.sql,/data,/root/config.yml"
)
  • Vor dem Doppelpunkt steht der Container-Name
  • Nach dem Doppelpunkt die zu prüfenden Pfade, kommagetrennt
  • Jeder Container bekommt eine eigene Zeile
  • Dateien und Verzeichnisse können gemischt angegeben werden

Installation

  1. Script auf den Zielhost kopieren:
scp 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_file_check.sh
  1. In Checkmk eine Service-Erkennung auf dem Host durchführen.

Test

Manuell auf dem Host ausführen:

/usr/lib/check_mk_agent/local/docker_file_check.sh

Erwartete Ausgabe:

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_app__root_db_sql - /root/db.sql fehlt in app

Hinweise

  • Der Container muss laufen, damit docker exec funktioniert. Gestoppte Container werden als CRITICAL gemeldet.
  • Das Script prüft vor der Ausführung ob Docker-Rechte vorhanden sind.
  • Der Plugin-Pfad kann je nach Installation variieren (/usr/lib/check_mk_agent/local/ oder /usr/local/lib/check_mk_agent/local/).