13 KiB
Cleanup-Aufgaben
Übersicht
Diese Kategorie umfasst Wartungs- und Bereinigungsroutinen für verschiedene Systemkomponenten. Regelmäßige Cleanup-Aufgaben sind wichtig für Speicherplatz-Management, Performance-Optimierung und System-Hygiene.
Anwendungsfälle:
- Löschen alter Proxmox-Snapshots
- Bereinigung ungenutzter CheckMK-Agent-Plugins
- Entfernung veralteter Docker-Images und -Container
- Speicherplatz-Freigabe
Playbooks
cleanups/clean-pve-snapshots.yml
Löschen von Proxmox VE Snapshots auf VM-Hosts.
Datei: playbooks/cleanups/clean-pve-snapshots.yml
Zweck: Bereinigung aller Proxmox-VM-Snapshots (außer "current") zur Freigabe von Speicherplatz nach erfolgreichen Updates oder Wartungsarbeiten.
Ziel-Hosts: all
Benutzer: tincadmin (mit sudo-Rechten)
Verwendete Rollen:
proxmox-automation(get-vmid, delete-snapshots)
Wichtige Variablen:
- Keine (verwendet Vault-Variablen)
Verwendungsbeispiel:
# Alle Snapshots auf allen VMs entfernen
ansible-playbook playbooks/cleanups/clean-pve-snapshots.yml \
-i inventories/icp-fra-pve1.yml \
-K --ask-vault-pass
# Nur für spezifische Hosts
ansible-playbook playbooks/cleanups/clean-pve-snapshots.yml \
-i inventories/icp-fra-pve1.yml \
--limit mail-server-01.example.com \
-K --ask-vault-pass
# Mit Verbose-Output
ansible-playbook playbooks/cleanups/clean-pve-snapshots.yml \
-i inventories/icp-fra-pve1.yml \
-v \
-K --ask-vault-pass
Abhängigkeiten:
- Vault-Datei (
vault.yml) für Proxmox API-Tokens - Hosts müssen Proxmox-VMs sein
- Proxmox API-Zugriff
Besonderheiten:
gather_facts: false- Keine Fact-Sammlung für Performance- Löscht ALLE Snapshots außer "current" (aktiver VM-Zustand)
- Snapshot-ID-Abruf vor Löschung
- API-basiert - Delegiert zu localhost
Workflow:
- Lädt Vault-Datei mit Proxmox-Zugangsdaten
- Für jeden Host:
- Ermittelt Proxmox VM-ID
- Listet alle Snapshots auf
- Filtert "current" aus
- Löscht alle verbleibenden Snapshots
- Gibt Speicherplatz frei
⚠️ Warnung: Dieses Playbook löscht ALLE Snapshots! Stellen Sie sicher, dass keine wichtigen Snapshots mehr benötigt werden.
Wann verwenden:
- Nach erfolgreichen OS-Major-Upgrades
- Nach erfolgreichen Mailcow-Updates
- Monatliche Speicherplatz-Bereinigung
- Vor großen Updates (alte Snapshots entfernen, neue erstellen)
Siehe auch: Virtualisierung → delete-snapshots.yaml
cleanups/cleanup-cmk-agent-plugins.yml
Bereinigung von CheckMK-Agent-Plugins auf überwachten Hosts.
Datei: playbooks/cleanups/cleanup-cmk-agent-plugins.yml
Zweck: Entfernung nicht benötigter oder veralteter CheckMK-Agent-Plugins zur Reduzierung des Monitoring-Overheads.
Ziel-Hosts: all
Benutzer: tincadmin (mit sudo-Rechten)
Verwendete Rollen:
checkmk-monitoring(Task:cleanup-agent-plugins)
Wichtige Variablen:
checkmk_agent_plugins_to_remove(aus Rolle)
Verwendungsbeispiel:
# Standard-Cleanup (entfernt Plugins aus defaults/main.yaml)
ansible-playbook playbooks/cleanups/cleanup-cmk-agent-plugins.yml \
-i inventories/icp-fra-pve1.yml \
-K
# Mit custom Plugin-Liste
ansible-playbook playbooks/cleanups/cleanup-cmk-agent-plugins.yml \
-i inventories/icp-fra-pve1.yml \
-e '{"checkmk_agent_plugins_to_remove": ["docker-mailq-monitoring", "old-plugin"]}' \
-K
# Nur auf Mail-Servern
ansible-playbook playbooks/cleanups/cleanup-cmk-agent-plugins.yml \
-i inventories/extern.yml \
-K
Abhängigkeiten:
checkmk-monitoringRolle- CheckMK-Agent muss installiert sein
Besonderheiten:
- Minimales Playbook - Nur Rollen-Aufruf
gather_facts: false- Performance-Optimierung- Idempotent - Mehrfache Ausführung sicher
Workflow:
- Liest Plugin-Liste aus
checkmk_agent_plugins_to_remove - Für jeden Host:
- Lokalisiert CheckMK-Agent-Plugin-Verzeichnis
- Löscht spezifizierte Plugins
- Bereinigt zugehörige Konfigurationsdateien
- CheckMK-Agent wird automatisch neu geladen
Standard-Plugins zur Entfernung (aus roles/checkmk-monitoring/defaults/main.yaml):
checkmk_agent_plugins_to_remove:
- "docker-mailq-monitoring"
Wann verwenden:
- Nach Migration zu alternativen Monitoring-Lösungen
- Nach Dekommissionierung von Services
- Bei Performance-Problemen durch zu viele Plugins
- Regelmäßige Bereinigung (quartalsweise)
Plugin-Verzeichnisse (typisch):
/usr/lib/check_mk_agent/plugins//usr/lib/check_mk_agent/local//etc/check_mk/
Siehe auch: Monitoring → Rolle checkmk-monitoring
Docker-Cleanup-Playbooks
Die Docker-Cleanup-Playbooks sind in der Container-Management-Kategorie dokumentiert:
- docker/cleanup-images.yml - Bereinigung ungenutzter Docker-Images
- docker/cleanup-all.yml - Vollständige Docker-Bereinigung
Diese Playbooks sind ebenfalls Teil der Cleanup-Strategie und sollten regelmäßig ausgeführt werden.
Cleanup-Strategie und Best Practices
1. Regelmäßige Ausführung
Empfohlener Cleanup-Zeitplan:
| Aufgabe | Häufigkeit | Playbook | Begründung |
|---|---|---|---|
| Docker-Images | Wöchentlich | docker/cleanup-images.yml |
Speicherplatz-Management |
| Proxmox-Snapshots | Monatlich | cleanups/clean-pve-snapshots.yml |
Nach erfolgreichen Updates |
| CMK-Agent-Plugins | Quartalsweise | cleanups/cleanup-cmk-agent-plugins.yml |
Nach Plugin-Änderungen |
| Docker-Full-Cleanup | Monatlich | docker/cleanup-all.yml |
Vollständige Bereinigung |
2. Automatisierung mit Cron/Systemd-Timer
Beispiel Cron-Job (auf Ansible-Control-Node):
# /etc/cron.d/ansible-cleanup
# Wöchentliches Docker-Image-Cleanup (Sonntag 02:00 Uhr)
0 2 * * 0 ansible-user /usr/local/bin/cleanup-docker-images.sh
# Monatliches Snapshot-Cleanup (1. des Monats, 03:00 Uhr)
0 3 1 * * ansible-user /usr/local/bin/cleanup-snapshots.sh
Wrapper-Script (/usr/local/bin/cleanup-docker-images.sh):
#!/bin/bash
cd /opt/operating-automation
ansible-playbook playbooks/docker/cleanup-images.yml \
-i inventories/icp-fra-pve1.yml \
>> /var/log/ansible-cleanup.log 2>&1
3. Pre-Cleanup-Checks
Vor größeren Cleanups:
# 1. Überprüfen Sie aktuelle Snapshot-Liste
ansible all -i inventories/icp-fra-pve1.yml \
-m shell -a "qm listsnapshot \$(qm list | grep $(hostname) | awk '{print \$1}')" \
-b
# 2. Überprüfen Sie Docker-Speichernutzung
ansible all -i inventories/icp-fra-pve1.yml \
-m shell -a "docker system df" \
-b
# 3. Überprüfen Sie CheckMK-Plugins
ansible all -i inventories/icp-fra-pve1.yml \
-m shell -a "ls -la /usr/lib/check_mk_agent/plugins/" \
-b
4. Post-Cleanup-Verifizierung
Nach Cleanup-Operationen:
# 1. Verifizieren Sie freigegebenen Speicherplatz
ansible all -i inventories/icp-fra-pve1.yml \
-m shell -a "df -h /" \
-b
# 2. Überprüfen Sie Service-Status
ansible all -i inventories/icp-fra-pve1.yml \
-m shell -a "systemctl status docker check-mk-agent" \
-b
# 3. Überprüfen Sie ob kritische Snapshots gelöscht wurden
# (manuell im Proxmox Web-Interface)
5. Backup vor Cleanup
Für sicherheitskritische Cleanups:
# 1. Erstellen Sie neue Snapshots BEVOR Sie alte löschen
ansible-playbook playbooks/os-update.yml \
-e "do_snapshots=true" \
-e "snapshot_name=pre-cleanup-$(date +%Y%m%d)" \
-i inventories/... \
-K --ask-vault-pass
# 2. Dann Cleanup durchführen
ansible-playbook playbooks/cleanups/clean-pve-snapshots.yml \
-i inventories/... \
-K --ask-vault-pass
Speicherplatz-Monitoring
Speichernutzung überwachen
# Gesamte Festplattennutzung
ansible all -i inventories/icp-fra-pve1.yml \
-m shell -a "df -h | grep -E 'Filesystem|/$'" \
-b
# Docker-Speichernutzung detailliert
ansible all -i inventories/icp-fra-pve1.yml \
-m shell -a "docker system df -v" \
-b
# Proxmox-Storage-Status
pvesm status
Top-Speicherverbraucher identifizieren
# Größte Verzeichnisse finden
ansible all -i inventories/icp-fra-pve1.yml \
-m shell -a "du -h / --max-depth=2 2>/dev/null | sort -rh | head -20" \
-b
# Docker-Volume-Größen
ansible all -i inventories/icp-fra-pve1.yml \
-m shell -a "docker system df -v | grep VOLUME -A 100" \
-b
Fehlerbehebung
Problem: Snapshot-Cleanup schlägt fehl
Symptome: delete-snapshots Task meldet Fehler
Lösung:
- Überprüfen Sie Proxmox-API-Zugangsdaten in Vault
- Überprüfen Sie ob Snapshots tatsächlich existieren:
qm listsnapshot <vmid> - Versuchen Sie manuelles Löschen:
qm delsnapshot <vmid> <snapshot-name> - Überprüfen Sie Proxmox-Logs:
journalctl -u pveproxy -n 100
Problem: Plugin-Cleanup entfernt benötigte Plugins
Symptome: CheckMK-Services fehlen nach Cleanup
Prävention:
- Überprüfen Sie
checkmk_agent_plugins_to_removeListe vor Ausführung - Testen Sie auf einzelnem Host zuerst
Lösung:
- Re-installation des CheckMK-Agents:
ansible-playbook playbooks/reinstall-cmk-agent.yml - Service-Discovery neu ausführen:
ansible-playbook playbooks/setup-checkmk-monitoring.yml \ --limit affected-host
Problem: Docker-Cleanup löscht benötigte Images
Symptome: Container können nicht starten nach Cleanup
Prävention:
- Verwenden Sie
cleanup-images.ymlstattcleanup-all.ymlfür konservatives Cleanup - Stellen Sie sicher alle Container laufen vor
cleanup-all.yml
Lösung:
- Re-pull Images:
cd /opt/mailcow-dockerized docker-compose pull docker-compose up -d
Problem: Zu wenig Speicherplatz freigegeben
Symptome: Nach Cleanup immer noch hohe Speichernutzung
Lösung:
- Identifizieren Sie Top-Verbraucher:
du -h / --max-depth=2 | sort -rh | head -20 - Überprüfen Sie Log-Dateien:
journalctl --vacuum-size=100M find /var/log -type f -name "*.log" -size +100M - Bereinigen Sie alte Kernels:
apt autoremove --purge - Überprüfen Sie Mailcow-Logs:
cd /opt/mailcow-dockerized du -sh data/logs/* # Bereinigen Sie alte Logs manuell
Erweiterte Cleanup-Operationen
APT-Cache-Bereinigung
# Auf allen Hosts
ansible all -i inventories/icp-fra-pve1.yml \
-m apt -a "autoclean=yes" \
-b
ansible all -i inventories/icp-fra-pve1.yml \
-m apt -a "autoremove=yes purge=yes" \
-b
Journalctl-Log-Rotation
# Logs älter als 30 Tage löschen
ansible all -i inventories/icp-fra-pve1.yml \
-m shell -a "journalctl --vacuum-time=30d" \
-b
# Logs auf max 500MB begrenzen
ansible all -i inventories/icp-fra-pve1.yml \
-m shell -a "journalctl --vacuum-size=500M" \
-b
Alte Kernel-Versionen entfernen
# Automatische Entfernung alter Kernels (Debian)
ansible all -i inventories/icp-fra-pve1.yml \
-m apt -a "autoremove=yes purge=yes" \
-b
Mailcow-Log-Bereinigung
# Alte Mailcow-Logs löschen (älter als 30 Tage)
ansible all -i inventories/extern.yml \
-m shell -a "find /opt/mailcow-dockerized/data/logs -type f -mtime +30 -delete" \
-b
Cleanup-Checkliste
Verwenden Sie diese Checkliste für monatliche Wartung:
- Pre-Check: Speichernutzung dokumentieren
- Backup: Wichtige Snapshots oder Backups erstellen
- Docker-Images:
playbooks/docker/cleanup-images.ymlausführen - Proxmox-Snapshots:
playbooks/cleanups/clean-pve-snapshots.ymlausführen (nach erfolgreichen Updates) - CMK-Plugins:
playbooks/cleanups/cleanup-cmk-agent-plugins.ymlausführen (quartalsweise) - APT-Cache:
apt autocleanundapt autoremoveauf allen Hosts - Logs: Journalctl und Application-Logs rotieren
- Post-Check: Speicherplatz-Freigabe verifizieren
- Monitoring: Services und Container-Status prüfen
- Dokumentation: Cleanup-Ergebnisse dokumentieren
Nützliche Kommandos
Speicherplatz-Analyse
# Top 10 größte Verzeichnisse
ansible all -i inventories/... \
-m shell -a "du -h / --max-depth=2 2>/dev/null | sort -rh | head -10" \
-b
# Inode-Nutzung
ansible all -i inventories/... \
-m shell -a "df -i" \
-b
Cleanup-Status
# Anzahl Docker-Images
ansible all -i inventories/... \
-m shell -a "docker images | wc -l" \
-b
# Anzahl Snapshots pro VM
pvesh get /nodes/<node>/qemu/<vmid>/snapshot
# CheckMK-Plugin-Liste
ansible all -i inventories/... \
-m shell -a "ls /usr/lib/check_mk_agent/plugins/ | wc -l" \
-b
Zusammenfassung
Cleanup-Aufgaben sind essentiell für:
- ✅ Speicherplatz-Management: Verhindert Disk-Full-Situationen
- ✅ Performance: Reduziert Overhead durch alte Snapshots/Images
- ✅ Sicherheit: Entfernt veraltete Software-Komponenten
- ✅ Compliance: Erfüllt Datenaufbewahrungsrichtlinien
- ✅ Wartungsfreundlichkeit: Übersichtlichere Systeme
Empfohlene Cleanup-Routine:
- Wöchentlich: Docker-Image-Cleanup
- Monatlich: Vollständiges Docker-Cleanup, APT-Cache
- Nach Updates: Proxmox-Snapshot-Cleanup
- Quartalsweise: CheckMK-Plugin-Cleanup, Log-Rotation
Navigation: ← Zurück: Basis-System | Zurück zur Übersicht