fix(#17): Implementiere /metrics Endpoint für Monitoring
Some checks are pending
Docker Test / test (push) Waiting to run
Some checks are pending
Docker Test / test (push) Waiting to run
This commit is contained in:
parent
1f831a6edc
commit
dada761d84
2 changed files with 77 additions and 0 deletions
|
|
@ -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
60
docs/monitoring.md
Normal 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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue