Página de status e monitoramento de uptime para apps NestJS
Monitore controllers NestJS, providers, microservices e workers BullMQ. Health endpoints estilo Terminus mapeiam nas nossas asserções JSON.
Três formas de lançar uma página de status para NestJS
Escolha o nível de controle — sem código, low-code ou headless completo.
Hospedado
Adicione seu endpoint NestJS, aponte um CNAME para status.seudominio.com, pronto. Em 5 minutos.
Headless
Use nossa API pública para construir sua própria UI dentro do app NestJS. Controle total sobre design e marca.
Ver a APIBadges embutidos
Coloque badges SVG de uptime e status no seu README ou landing page. Atualizam a cada 5 minutos.
Cole este health endpoint no seu app NestJS
Copie, cole, aponte o PulseAPI para a URL. Retorna 200 saudável, 503 degradado.
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),
])
}
}O Terminus já retorna a forma que o PulseAPI asserta — `$.details.database.status == "up"` funciona de cara.
O que quebra em apps NestJS — e como detectar
Indicadores Terminus que passam com app quebrada
Um ping db pode passar enquanto um serviço crítico está down. Combine pings HTTP e asserções de schema.
Falhas de transporte de microservices
Quedas de gRPC ou Redis causam timeouts silenciosos. Monitore cada microservice direto.
Processadores BullMQ crashando
Um worker pode sair e a API fica up. Exponha heartbeat do processador.
Não gostou da nossa página de status? Construa a sua em NestJS.
Nossa API retorna os mesmos dados que nossa UI hospedada consome. Spec OpenAPI completa em 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
}
}Monitoramento NestJS — FAQ
Funciona com Terminus de cara?
Sim. A forma padrão do Terminus mapeia diretamente nas nossas asserções JSON-path.
Posso monitorar microservices?
Sim. Exponha cada health check por HTTP e adicione como endpoints separados.
Suporta GraphQL?
Sim. POST uma query e asserte sobre a forma da resposta JSON.
Posso renderizar a página de status do NestJS?
Sim. Chame a API em um controller e retorne JSON, ou renderize com Handlebars/MJML.
Comece a monitorar seu app NestJS em 5 minutos
Plano grátis. Sem cartão. Adicione seu endpoint e receba alertas quando quebrar.