diff --git a/backend/src/server.js b/backend/src/server.js index 37ceb94..d0087c6 100644 --- a/backend/src/server.js +++ b/backend/src/server.js @@ -16,6 +16,23 @@ app.use(express.json()); app.get('/health', (_req, res) => res.json({ status: 'ok' })); +// Metrics endpoint +app.get('/metrics', (_req, res) => { + const uptime = process.uptime(); + const memoryUsage = process.memoryUsage(); + + res.json({ + uptime: uptime, + memory: { + rss: memoryUsage.rss, + heapTotal: memoryUsage.heapTotal, + heapUsed: memoryUsage.heapUsed, + external: memoryUsage.external + }, + timestamp: new Date().toISOString() + }); +}); + app.use('/auth', authRoutes); app.use('/requests', helpRequestRoutes); app.use('/offers', offerRoutes); diff --git a/docs/monitoring.md b/docs/monitoring.md new file mode 100644 index 0000000..c33a70c --- /dev/null +++ b/docs/monitoring.md @@ -0,0 +1,60 @@ +# Monitoring und Alerting + +## Überblick + +Das Projekt implementiert ein einfaches Monitoring-System, um die Laufzeit des Systems zu überwachen. Es bietet einen `/metrics` Endpoint an, der grundlegende Systeminformationen bereitstellt. + +## /metrics Endpoint + +Der `/metrics` Endpoint ist unter folgender URL erreichbar: + +``` +GET /metrics +``` + +### Antwortstruktur + +```json +{ + "uptime": 1234.56, + "memory": { + "rss": 20480000, + "heapTotal": 10240000, + "heapUsed": 8192000, + "external": 102400 + }, + "timestamp": "2026-03-06T23:47:00.000Z" +} +``` + +### Beschreibung der Felder + +- `uptime`: Laufzeit des Prozesses in Sekunden +- `memory.rss`: Resident Set Size (gesamter Speicherverbrauch) +- `memory.heapTotal`: Gesamter JavaScript-Heap-Speicher +- `memory.heapUsed`: Verwendeter JavaScript-Heap-Speicher +- `memory.external`: Externer Speicher (z.B. von Native Addons) +- `timestamp`: Zeitstempel der Anfrage + +## Unraid-kompatibler Check + +Für die Integration mit Unraid kann der `/metrics` Endpoint als Healthcheck verwendet werden: + +1. **Statusabfrage**: `curl http://:/metrics` +2. **Prüfung auf Antwortzeit**: Die Antwort sollte innerhalb von 500ms erfolgen +3. **Prüfung auf Statuscode**: HTTP 200 OK + +## Alerting + +Für das Alerting können folgende Schwellenwerte definiert werden: + +- **Uptime**: Bei einem Anstieg der Uptime über einen bestimmten Wert (z.B. 1 Tag) kann eine Warnung ausgelöst werden +- **Memory Usage**: Bei Verwendung von mehr als 80% des verfügbaren Speichers kann eine Warnung ausgelöst werden +- **Response Time**: Bei Antwortzeiten über 500ms kann eine Warnung ausgelöst werden + +## Implementierung + +Die Implementierung erfolgt im Backend unter Verwendung von Node.js Built-ins: + +- `process.uptime()` für die Laufzeit +- `process.memoryUsage()` für den Speicherverbrauch \ No newline at end of file