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' }));
|
||||
|
||||
// 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);
|
||||
|
|
|
|||
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