Zum Inhalt

Systemwartung

Anleitung zur Wartung einer Bifolk-Produktionsinstallation.

Zielgruppe: Systemadministratoren


Gesundheitsprüfungen

Schnellprüfung

# Container laufen
docker ps | grep bifolk

# Anwendung antwortet
curl -I http://localhost:8000

# Django-Systemprüfung
docker compose exec bifolk-app python manage.py check --database default

# Aktuelle Logs
docker logs bifolk-app --tail 50

Gesundheitsprüfungs-Zeitplan

Häufigkeit Aufgaben
Täglich Container laufen, keine kritischen Fehler in Logs, Web-Oberfläche erreichbar
Wöchentlich Datenbankverbindung, Festplattenspeicher > 20%, keine Leistungsprobleme
Monatlich Vollständige Gesundheitsprüfung, Benutzerkonten überprüfen, Backup-Erfolg verifizieren

Logs anzeigen

Anwendungslogs

# Letzte 100 Zeilen
docker logs bifolk-app --tail 100

# Logs in Echtzeit verfolgen (Strg+C zum Stoppen)
docker logs bifolk-app --follow

# Nach Fehlern suchen
docker logs bifolk-app 2>&1 | grep -i error

# Logs in Datei speichern
docker logs bifolk-app > bifolk-app-logs-$(date +%Y%m%d).log

Datenbanklogs

# Aktuelle Datenbanklogs
docker logs bifolk-db --tail 100

# Alle Dienste
docker compose logs --tail 50

Log-Rotation

Log-Rotation ist bereits auf Container-Ebene in den Docker-Compose-Dateien konfiguriert. Jeder Dienst ist eingestellt auf: - Log-Treiber: json-file - Maximale Größe: 10 MB pro Protokolldatei - Maximale Dateien: 3 rotierte Dateien

Keine manuelle Konfiguration erforderlich — Logs werden automatisch rotiert und begrenzt.

Tip

Falls Sie Log-Rotation systemweit ändern müssen, können Sie /etc/docker/daemon.json als Alternative konfigurieren. Die Compose-Konfiguration hat jedoch Vorrang für einzelne Container:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

Nach dem Bearbeiten Docker neu starten: sudo systemctl restart docker


Datenbankwartung

Vacuum und Analyze (PostgreSQL)

# Vacuum und Analyze aller Tabellen
docker compose exec bifolk-db psql -U bifolk -d bifolk -c "VACUUM ANALYZE;"

# Vollständiges Vacuum (erfordert exklusive Sperren, während Wartungsfenstern verwenden)
docker compose exec bifolk-db psql -U bifolk -d bifolk -c "VACUUM FULL ANALYZE;"

Datenbankgröße

# Gesamte Datenbankgröße
docker compose exec bifolk-db psql -U bifolk -d bifolk -c \
  "SELECT pg_size_pretty(pg_database_size('bifolk')) AS database_size;"

# Größte Tabellen
docker compose exec bifolk-db psql -U bifolk -d bifolk -c "
  SELECT tablename, pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS size
  FROM pg_tables
  WHERE schemaname NOT IN ('pg_catalog', 'information_schema')
  ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC
  LIMIT 10;"

Sitzungen bereinigen

docker compose exec bifolk-app python manage.py clearsessions

Statische Dateien und Mediendateien

Statische Dateien

# Statische Dateien sammeln
docker compose exec bifolk-app python manage.py collectstatic --no-input

# Löschen und neu sammeln
docker compose exec bifolk-app python manage.py collectstatic --no-input --clear

Mediendateien

# Mediendateinutzung prüfen
docker compose exec bifolk-app du -sh /bifolk/media/

# Berechtigungen korrigieren, wenn Uploads fehlschlagen
docker compose exec bifolk-app chown -R django:django /bifolk/media

Festplattenspeicher

# Host-Dateisystem
df -h

# Docker-Festplattennutzung
docker system df

# Unbenutzte Docker-Ressourcen bereinigen
docker system prune -f
docker image prune -a -f

Warning

Führen Sie docker volume prune nur aus, wenn Sie sicher sind, dass keine wichtigen Daten in unbenannten Volumes gespeichert sind.


Geplante Wartung

Cron-Beispiele

# Wöchentliches Datenbank-Vacuum (Sonntag 2 Uhr)
0 2 * * 0 docker compose exec -T bifolk-db psql -U bifolk -d bifolk -c "VACUUM ANALYZE;" >> /var/log/bifolk-vacuum.log 2>&1

# Wöchentliche Sitzungsbereinigung (Sonntag 3 Uhr)
0 3 * * 0 docker compose exec -T bifolk-app python manage.py clearsessions >> /var/log/bifolk-maintenance.log 2>&1

# Wöchentliche Docker-Bereinigung (Sonntag 4 Uhr)
0 4 * * 0 docker system prune -f >> /var/log/docker-cleanup.log 2>&1

Notfallverfahren

Anwendung nicht erreichbar

# Logs prüfen
docker logs bifolk-app --tail 100

# Container neu starten
docker restart bifolk-app

# Bei anhaltenden Problemen neu bauen
docker compose down && docker compose up -d --build

Datenbankprobleme

# Datenbankgesundheit prüfen
docker compose exec bifolk-db pg_isready -U bifolk

# Datenbank neu starten
docker restart bifolk-db

Festplatte voll

# Große Dateien finden
du -sh /* 2>/dev/null | sort -h

# Docker-Ressourcen bereinigen
docker system prune -a -f

Verwandte Dokumentation