NestJS

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 ansehen

Eingebettete 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.

src/health/health.controller.ts
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.

Headless-Ansatz

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.

Nest-Controller, der Status-Daten für eine eigene Seite proxyt.
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.