3.6 KiB
3.6 KiB
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:
- Auf den Zielhost kopieren:
scp docker_container_check.sh docker_file_check.sh user@host:/usr/lib/check_mk_agent/local/
- 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
-
Sicherstellen, dass der Checkmk-Agent-Benutzer Docker-Befehle ausführen darf (Mitglied der Gruppe
dockeroder Ausführung viasudo). -
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
rootläuft, funktioniertdockerdirekt. Andernfalls muss der Agent-Benutzer in der Gruppedockersein.