76 lines
2.1 KiB
Markdown
76 lines
2.1 KiB
Markdown
# 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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
scp docker_file_check.sh user@host:/usr/lib/check_mk_agent/local/
|
|
```
|
|
|
|
2. Ausführbar machen:
|
|
|
|
```bash
|
|
chmod +x /usr/lib/check_mk_agent/local/docker_file_check.sh
|
|
```
|
|
|
|
3. In Checkmk eine Service-Erkennung auf dem Host durchführen.
|
|
|
|
## Test
|
|
|
|
Manuell auf dem Host ausführen:
|
|
|
|
```bash
|
|
/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/`).
|