fix(#17): Implementiere /metrics Endpoint für Monitoring
Some checks are pending
Docker Test / test (push) Waiting to run

This commit is contained in:
OpenClaw 2026-03-06 23:48:01 +00:00
parent 1f831a6edc
commit dada761d84
2 changed files with 77 additions and 0 deletions

View file

@ -16,6 +16,23 @@ app.use(express.json());
app.get('/health', (_req, res) => res.json({ status: 'ok' })); 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('/auth', authRoutes);
app.use('/requests', helpRequestRoutes); app.use('/requests', helpRequestRoutes);
app.use('/offers', offerRoutes); app.use('/offers', offerRoutes);

60
docs/monitoring.md Normal file
View file

@ -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://<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