# 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://<server>:<port>/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