8.4 KiB
MYP Error-Monitoring System - Dokumentation
Übersicht
Das Error-Monitoring System ist eine umfassende Lösung zur automatischen Erkennung, Meldung und Behebung kritischer Systemfehler im MYP (Mercedes-Benz Your Platform) System. Es wurde entwickelt, um Administratoren sofortige Benachrichtigungen über Datenbankfehler, Schema-Probleme und andere kritische Systemprobleme zu geben.
Problemstellung
Ursprünglicher Fehler:
sqlite3.OperationalError: no such column: guest_requests.duration_minutes
Dieser Fehler trat auf, weil das Datenmodell GuestRequest
sowohl duration_min
als auch duration_minutes
definierte, aber die Datenbank nur die duration_min
Spalte enthielt. Solche Schema-Inkonsistenzen führten zu Anwendungsfehlern und waren für Admins nicht sichtbar.
Lösung
1. Automatische Datenbank-Migration ⚡
Datei: utils/database_schema_migration.py
Erweiterte Funktionalität:
- Vollständige Schema-Überprüfung für alle Tabellen
- Automatisches Hinzufügen fehlender Spalten
- Backup-Erstellung vor jeder Migration
- Datenmigration (kopiert
duration_min
→duration_minutes
)
Neue Spalten hinzugefügt:
required_columns = {
'duration_minutes': 'INTEGER', # ← Lösung für ursprünglichen Fehler
'file_name': 'VARCHAR(255)',
'file_path': 'VARCHAR(500)',
'copies': 'INTEGER DEFAULT 1',
'updated_at': 'DATETIME DEFAULT CURRENT_TIMESTAMP',
'approved_at': 'DATETIME',
'rejected_at': 'DATETIME',
'approved_by': 'INTEGER',
'rejected_by': 'INTEGER',
'otp_expires_at': 'DATETIME',
'assigned_printer_id': 'INTEGER'
}
2. Real-Time Error-Monitoring Dashboard 📊
Datei: templates/admin.html
Neue Komponenten:
- Critical Errors Alert System: Rote Warnmeldungen für kritische Fehler
- Database Health Status: Echtzeit-Überwachung der Datenbankgesundheit
- Automatic Fix Button: Ein-Klick-Reparatur für häufige Probleme
Features:
- 🚨 Sofortige Benachrichtigungen bei kritischen Fehlern
- 🗄️ Datenbank-Gesundheitsstatus mit Live-Indikatoren
- 🔧 Automatische Reparatur-Buttons
- 📊 System-Metriken (CPU, RAM, Festplatte)
3. Comprehensive Health Check API 🔍
Datei: app.py
- Neue Endpoints:
/api/admin/system-health
(GET)
Funktionalität:
def api_admin_system_health():
# 1. Datenbank-Schema-Integrität prüfen
# 2. Kritische Spalten in wichtigen Tabellen überprüfen
# 3. Log-Dateien nach wiederkehrenden Fehlern durchsuchen
# 4. Drucker-Konnektivität überprüfen
# 5. System-Performance-Metriken sammeln
# 6. Letzte Migration-Informationen abrufen
Response-Format:
{
"success": true,
"health_status": "healthy|warning|critical",
"critical_errors": [
{
"type": "database_schema",
"message": "Datenbank-Schema-Fehler erkannt",
"severity": "critical",
"suggested_fix": "Datenbank-Migration ausführen",
"timestamp": "2025-05-29T18:22:03"
}
],
"warnings": [...],
"schema_integrity": "OK|FEHLER",
"last_migration": "20250529_182203",
"recent_errors_count": 0,
"system_metrics": {
"cpu_usage": 15.2,
"memory_usage": 42.1,
"disk_usage": 68.9
}
}
/api/admin/fix-errors
(POST)
Funktionalität:
- Führt automatische Datenbank-Migration aus
- Erstellt Backup vor Reparatur
- Protokolliert alle Aktionen
- Gibt detaillierte Ergebnis-Informationen zurück
4. Live JavaScript Error-Monitor 🔄
Datei: static/js/admin-live.js
Neue Klassen-Methoden:
initErrorMonitoring()
: Startet das Monitoring-SystemcheckSystemHealth()
: Prüft System alle 30 SekundenupdateHealthDisplay()
: Aktualisiert UI-IndikatorenupdateErrorAlerts()
: Zeigt/versteckt Error-AlertsfixErrors()
: Führt automatische Reparatur ausshowNotification()
: Toast-Benachrichtigungen
Live-Features:
- ⏱️ Automatische Überprüfung alle 30 Sekunden
- 🔴 Rote Indikatoren bei kritischen Fehlern
- 🟡 Gelbe Indikatoren bei Warnungen
- 🟢 Grüne Indikatoren bei gesundem System
- 📱 Toast-Benachrichtigungen für Aktionen
Technische Details
Schema-Migration-Prozess
-
Backup-Erstellung:
VACUUM INTO 'database/myp.db.backup_YYYYMMDD_HHMMSS'
-
Spalten-Überprüfung:
cursor.execute("PRAGMA table_info(guest_requests)") existing_columns = {row[1]: row[2] for row in cursor.fetchall()}
-
Automatisches Hinzufügen:
ALTER TABLE guest_requests ADD COLUMN duration_minutes INTEGER UPDATE guest_requests SET duration_minutes = duration_min WHERE duration_minutes IS NULL
Error-Detection-Algorithmus
- Schema-Integrität: Testet kritische Spalten mit
SELECT ... LIMIT 1
- Log-Analyse: Durchsucht letzte 100 Log-Zeilen nach "OperationalError"
- Performance-Monitoring: Nutzt
psutil
für System-Metriken - Drucker-Status: Überprüft offline/online Status
- Migration-Historie: Analysiert Backup-Dateien für letzte Änderungen
Admin-Interface
Darstellung im Dashboard
<!-- Critical Error Alert -->
🚨 Kritische Systemfehler erkannt
├── Datenbank-Schema-Fehler: no such column: duration_minutes
│ 💡 Suggested Fix: Datenbank-Migration ausführen
│ 📅 29.05.2025, 18:22:03
│ 🔧 [Automatisch reparieren] ❌ [Verwerfen] 📊 [Details]
<!-- Database Health Status -->
🗄️ Datenbank-Gesundheitsstatus 🟢 Gesund
├── Letzte Migration: 20250529_182203
├── Schema-Integrität: OK
└── Letzte Fehler: 0
Benutzerinteraktion
- Fehler erkannt → Alert wird automatisch angezeigt
- Admin klickt "Automatisch reparieren" → Migration wird ausgeführt
- Erfolgsmeldung → ✅ Grüne Toast-Benachrichtigung
- System aktualisiert sich → Health-Check läuft erneut
Konfiguration
Monitoring-Intervalle
// System Health Check alle 30 Sekunden
setInterval(() => this.checkSystemHealth(), 30000);
// Toast-Notifications verschwinden nach 5 Sekunden
setTimeout(() => notification.remove(), 5000);
Schwellenwerte
# Performance-Warnungen
cpu_usage > 90% # Warnung bei hoher CPU-Last
memory_usage > 85% # Warnung bei hohem RAM-Verbrauch
recent_db_errors > 5 # Kritisch bei vielen DB-Fehlern
Deployment
Automatische Aktivierung
Das Error-Monitoring System ist automatisch aktiv sobald:
- Ein Administrator das Admin-Dashboard öffnet
- Das JavaScript
admin-live.js
geladen wird - Die Health-Check-APIs verfügbar sind
Voraussetzungen
# Python-Dependencies
import psutil # Für System-Metriken
import subprocess # Für automatische Migration
import os # Für Log-Datei-Zugriff
Logging und Dokumentation
Error-Logging
app_logger.error(f"Datenbank-Transaktion fehlgeschlagen: {str(e)}")
app_logger.info(f"Automatische Migration erfolgreich ausgeführt von Admin {current_user.email}")
Admin-Aktionen
Alle Admin-Aktionen werden protokolliert:
- Wer hat welche Reparatur ausgeführt
- Zeitstempel aller Aktionen
- Erfolg/Fehlschlag-Status
- Detaillierte Fehlermeldungen
Wartung
Regelmäßige Aufgaben
- Log-Rotation: Alte Log-Dateien archivieren
- Backup-Cleanup: Alte Backup-Dateien löschen
- Performance-Monitoring: System-Metriken überwachen
- Schema-Updates: Neue Migrations bei Model-Änderungen
Troubleshooting
Problem: Error-Monitor zeigt nichts an Lösung:
- Browser-Konsole überprüfen
/api/admin/system-health
manuell testen- Admin-Berechtigung überprüfen
Problem: Automatische Reparatur schlägt fehl Lösung:
- Manuelle Migration:
python utils/database_schema_migration.py
- Log-Dateien überprüfen
- Datenbank-Berechtigungen prüfen
Ergebnis
✅ Problem gelöst: Der ursprüngliche duration_minutes
Fehler wurde behoben
✅ Proaktiv: Zukünftige Schema-Probleme werden automatisch erkannt
✅ Benutzerfreundlich: Admins sehen Probleme sofort und können sie mit einem Klick beheben
✅ Umfassend: Monitoring von DB, Performance, Logs und System-Gesundheit
✅ Automatisiert: Selbst-reparierendes System für häufige Probleme
Das Error-Monitoring System stellt sicher, dass kritische Systemfehler nicht unbemerkt bleiben und Administratoren die Werkzeuge haben, um schnell und effektiv zu reagieren.