# Plan: CIFS-Mount-Monitoring für srv-nu-ftp01 ## Ziel Auf srv-nu-ftp01 alle CIFS-Mounts überwachen, die nach `//vinos.local/DFS/Workflows/` zeigen. Sobald ein Mountpoint nicht aktiv ist, soll Zabbix alarmieren. ## Aktueller Stand - UserParameters wurden eingetragen, aber **Agent startet nicht** (exit code 1) - Ursache: Discovery-Zeile über 2 Zeilen umgebrochen → `missing assignment operator` in Zeile 325 - Die Status-Zeile (`cifs.mount.status[*]`) ist OK ## Ist-Zustand fstab **18 aktive Mounts** (ohne auskommentierte) nach `//vinos.local/DFS/Workflows/`: - 12× Artikelbilder (gleiche Quelle, verschiedene User-Home-Verzeichnisse) - Reporting/DWH → `/mnt/Workflows/Reporting/DWH` - Shop-Filialinfos → `/home/filialinfos/Shop-Filialinfos` - econda → `/mnt/google_analytics` + `/home/srv-db03/google_analytics` - sovendus → `/home/sovendus/upload` - emarsys → `/home/emarsys/upload` - hubspot → `/home/hubspot/upload` - Pin-eBrief → `/mnt/Workflows/Pin-eBrief` - KWK-Export → `/home/kwk-export/KWK-Export` ## Ansatz: Script-File + UserParameters Die Inline-awk-Variante ist zu lang (~200 Zeichen) und bricht beim Kopieren um. Stattdessen ein minimales Discovery-Script. ## Schritte ### 1. Agent-Config fixen (DRINGEND - Agent ist down!) Die kaputten Zeilen 324-325 entfernen/ersetzen. Neue Config: ``` UserParameter=cifs.mount.discovery,/etc/zabbix/scripts/cifs_mount_discovery.sh UserParameter=cifs.mount.status[*],findmnt "$1" >/dev/null 2>&1 && echo 1 || echo 0 ``` ### 2. Discovery-Script erstellen Script nach `/home/vinosadmin/cifs_mount_discovery.sh` schreiben (kein root-Zugriff als vinosadmin). User verschiebt es manuell nach `/etc/zabbix/scripts/cifs_mount_discovery.sh` und setzt `chmod +x`. ```bash #!/bin/bash grep -i '//vinos.local/DFS/Workflows' /etc/fstab \ | grep -v '^\s*#' \ | awk 'BEGIN{printf "["} NR>1{printf ","} {printf "{\"{#MOUNTPOINT}\":\"%s\",\"{#REMOTE}\":\"%s\"}",$2,$1} END{printf "]"}' ``` ### 3. Agent neustarten und testen ```bash systemctl restart zabbix-agent2 systemctl status zabbix-agent2 ``` Test: ```bash # Lokal /etc/zabbix/scripts/cifs_mount_discovery.sh findmnt /home/fluent/artikelbilder >/dev/null 2>&1 && echo 1 || echo 0 # Via Agent (von srv-monitor02) zabbix_get -s srv-nu-ftp01 -k 'cifs.mount.discovery' zabbix_get -s srv-nu-ftp01 -k 'cifs.mount.status[/home/fluent/artikelbilder]' ``` ### 4. Host-ID ermitteln Via Zabbix API: `host.get` mit `search: {name: "ftp01"}` ### 5. Zabbix LLD via API konfigurieren **a) Discovery Rule** (`discoveryrule.create`) - Name: `CIFS DFS/Workflows Mount Discovery` - Key: `cifs.mount.discovery` - Type: Zabbix Agent (passive/active je nach Config) - Update Interval: `1h` **b) Item Prototype** (`itemprototype.create`) - Name: `CIFS Mount Status: {#MOUNTPOINT}` - Key: `cifs.mount.status[{#MOUNTPOINT}]` - Type: Zabbix Agent - Value Type: Numeric (unsigned) - Update Interval: `5m` **c) Trigger Prototype** (`triggerprototype.create`) - Name: `CIFS Mount {#MOUNTPOINT} nicht aktiv (Remote: {#REMOTE})` - Expression: `last(/HOST/cifs.mount.status[{#MOUNTPOINT}])=0` - Severity: High ### 6. Dokumentation - `zabbix/hosts.md`: srv-nu-ftp01 Abschnitt mit Host-ID, UserParameters, SSH-Befehlen - `zabbix/README.md`: Host-ID in Schnellreferenz ## Kritische Dateien | Datei (auf srv-nu-ftp01) | Aktion | |---------------------------|--------| | `/etc/zabbix/zabbix_agent2.conf` | Zeilen 324-325 fixen → 2 saubere UserParameter-Zeilen | | `/etc/zabbix/scripts/cifs_mount_discovery.sh` | Neu erstellen (4 Zeilen) | | Datei (lokal) | Aktion | |----------------|--------| | `zabbix/hosts.md` | srv-nu-ftp01 ergänzen | | `zabbix/README.md` | Host-ID ergänzen | ## Verifikation 1. `systemctl status zabbix-agent2` → active (running) 2. `zabbix_get -s srv-nu-ftp01 -k 'cifs.mount.discovery'` → JSON mit 18 Mountpoints 3. `zabbix_get -s srv-nu-ftp01 -k 'cifs.mount.status[/home/fluent/artikelbilder]'` → `1` 4. Zabbix UI: Discovery Rule ausführen → 18 Items + 18 Trigger angelegt 5. Optional: Test-Unmount → Trigger feuert