Statusseite und Uptime-Monitoring für NestJS-Anwendungen
NestJS-Controller, Provider, Microservices und BullMQ-Worker überwachen. Terminus-Health-Endpoints passen zu unseren JSON-Assertions.
Drei Wege für eine Statusseite für NestJS
Wähle die Kontrolltiefe — kein Code, Low-Code oder Full Headless.
Gehostet
NestJS-Endpoint hinzufügen, CNAME auf status.deinedomain.com zeigen, fertig. In 5 Minuten.
Headless
Public API nutzen, eigene UI direkt in der NestJS-App bauen. Volle Kontrolle über Design und Branding.
API ansehenEingebettete Badges
SVG-Uptime- und -Status-Badges in README oder Landing Page einbauen. Aktualisiert sich alle 5 Minuten.
Diesen Health-Endpoint in deine NestJS-App einfügen
Kopieren, einfügen, PulseAPI auf die URL richten. 200 gesund, 503 degradiert.
import { Controller, Get } from '@nestjs/common'
import {
HealthCheck,
HealthCheckService,
TypeOrmHealthIndicator,
MemoryHealthIndicator,
} from '@nestjs/terminus'
@Controller('health')
export class HealthController {
constructor(
private health: HealthCheckService,
private db: TypeOrmHealthIndicator,
private memory: MemoryHealthIndicator,
) {}
@Get()
@HealthCheck()
check() {
return this.health.check([
() => this.db.pingCheck('database'),
() => this.memory.checkHeap('memory_heap', 300 * 1024 * 1024),
])
}
}Terminus liefert bereits die Form, die PulseAPI asserted — `$.details.database.status == "up"` funktioniert ohne Weiteres.
Was in NestJS-Apps kaputt geht — und wie man es fängt
Terminus-Indikatoren, die grün sind, obwohl die App kaputt ist
Ein DB-Ping kann erfolgreich sein, während ein kritischer Service down ist. HTTP-Pings und Schema-Assertions kombinieren.
Microservice-Transport-Fehler
gRPC- oder Redis-Abbrüche verursachen stille Timeouts. Jeden Microservice direkt überwachen.
BullMQ-Prozessoren, die crashen
Ein Worker kann aussteigen, während die API up bleibt. Prozessor-Heartbeat exposen.
Statusseite gefällt dir nicht? Bau sie in NestJS selbst.
Unsere API liefert dieselben Daten wie unsere gehostete UI. Volle OpenAPI-Spec unter api.pulseapi.tech/docs.
import { Controller, Get } from '@nestjs/common'
import { HttpService } from '@nestjs/axios'
import { firstValueFrom } from 'rxjs'
@Controller('status')
export class StatusController {
constructor(private http: HttpService) {}
@Get()
async status() {
const res = await firstValueFrom(
this.http.get('https://api.pulseapi.tech/status/acme', { timeout: 5000 }),
)
return res.data
}
}NestJS-Monitoring — FAQ
Funktioniert mit Terminus out-of-the-box?
Ja. Die Terminus-Default-Response passt direkt zu unseren JSON-Path-Assertions.
Kann ich Microservices überwachen?
Ja. Jeden Health-Check per HTTP exposen und als separate Endpoints hinzufügen.
Unterstützt es GraphQL?
Ja. POST-Query und auf die JSON-Response-Form asserten.
Kann ich die Statusseite aus NestJS rendern?
Ja. API in einem Controller abrufen und JSON zurückgeben, oder mit Handlebars/MJML rendern.
Deine NestJS-App in 5 Minuten überwachen
Kostenloser Tarif. Keine Kreditkarte. Endpoint hinzufügen, Alerts erhalten.