- Neuer Abschnitt "Karten erstellen (Aufgaben-Workflow)" mit Workflow A/B - Bekannte Struktur erweitert: Workflows, Columns, Lanes für Board 1 - Pitfalls ergänzt: Arrival Rule, Parent-Link API, linkedCards read-only - Settings und Plans aktualisiert Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
4.0 KiB
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 operatorin 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.
#!/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
systemctl restart zabbix-agent2
systemctl status zabbix-agent2
Test:
# 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-Befehlenzabbix/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
systemctl status zabbix-agent2→ active (running)zabbix_get -s srv-nu-ftp01 -k 'cifs.mount.discovery'→ JSON mit 18 Mountpointszabbix_get -s srv-nu-ftp01 -k 'cifs.mount.status[/home/fluent/artikelbilder]'→1- Zabbix UI: Discovery Rule ausführen → 18 Items + 18 Trigger angelegt
- Optional: Test-Unmount → Trigger feuert