Son las 2 AM. Tu endpoint /api/checkout lleva 47 minutos devolviendo errores 500. Tu monitor de uptime externo? Muestra verde. El health check responde 200 OK cada 60 segundos, como si nada.

Mientras tanto, 340 requests reales de checkout fallaron. Te enteras a la manana siguiente por un backlog de webhooks de Stripe y tres emails de clientes enojados.

Este es el problema del monitoreo externo para APIs de Next.js. Revisa la puerta de entrada. No sabe que pasa adentro.

Por que el monitoreo externo no alcanza para Next.js

Herramientas como Pingdom, UptimeRobot e incluso los synthetic checks de Datadog funcionan igual: envian un request HTTP a una URL cada N segundos y verifican si la respuesta es 200. Eso es todo.

Para una aplicacion Next.js, este modelo tiene puntos ciegos fundamentales:

  • Solo testea un endpoint a la vez. Si tenes 15 API routes, necesitas 15 monitores separados.
  • No detecta fallos intermitentes. Si tu /api/payments falla en 3 de cada 100 requests por una race condition, un ping cada 60 segundos nunca lo va a capturar.
  • No mide latencia real. El round-trip desde Virginia incluye latencia de red, cache de CDN y routing de edge. Nada de eso refleja lo que experimentan tus usuarios.
  • No funciona detras de firewalls. Si tu API es interna, los pings externos literalmente no la alcanzan.
  • Los cold starts rompen las mediciones. Un health check que pega en una funcion warm mide 50ms. Un usuario real en cold start recibe 1800ms.

El Hook de Instrumentacion de Next.js

Desde Next.js 13.2, existe una forma nativa de ejecutar codigo cuando el servidor arranca: el hook de instrumentacion. Creas un archivo instrumentation.ts en la raiz de tu proyecto, y Next.js llama a su funcion register() una vez durante la inicializacion.

// instrumentation.ts
export async function register() {
  // Se ejecuta una vez cuando arranca el servidor.
  // Ideal para inicializar monitoreo, tracing o logging.
  console.log('Servidor inicializado - monitoreo activo')
}

Monitor basico de requests desde cero

Para entender como funciona el monitoreo interno, aca hay una implementacion minima usando middleware de Next.js:

// middleware.ts
import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'

export function middleware(request: NextRequest) {
  const start = Date.now()
  const response = NextResponse.next()
  const duration = Date.now() - start
  const path = request.nextUrl.pathname

  if (path.startsWith('/api/')) {
console.log(JSON.stringify({
  path,
  method: request.method,
  duration,
  timestamp: new Date().toISOString(),
}))
  }

  return response
}

export const config = {
  matcher: '/api/:path*',
}

Esto te da logs estructurados de cada API request. Pero es solo logging — sin alertas, sin agregacion, sin dashboards. Para produccion necesitarias una base de datos de series de tiempo, calcular percentiles, construir alertas y mantener esa infraestructura.

Monitoreo externo vs interno

CapacidadExterno (Pingdom, UptimeRobot)Interno (Hook de instrumentacion)
Monitorea todos los API routes automaticamenteNo — un monitor por URLSi — intercepta cada request
Detecta errores intermitentesNo — samplea cada N segundosSi — ve cada request
Mide latencia real del usuarioNo — mide round-trip sinteticoSi — mide tiempo de procesamiento del servidor
Funciona detras de firewallsNoSi
Detecta errores en menos de 10 segundosNo — intervalos de 1-5 minutosSi — tiempo real

Como lo resuelve Nurbak Watch en 5 lineas

Nurbak Watch es un SDK de monitoreo de APIs construido especificamente para Next.js. Usa el hook de instrumentacion para correr dentro de tu servidor.

npm install @nurbak/watch
// instrumentation.ts
import { initWatch } from '@nurbak/watch'

export function register() {
  initWatch({
apiKey: process.env.NURBAK_WATCH_KEY,
  })
}

5 lineas. Despues de hacer deploy:

  • Auto-discovery: Cada API route se detecta automaticamente.
  • Metricas en tiempo real: Response time, status codes y error rates de cada endpoint.
  • Alertas instantaneas: Slack, email o WhatsApp en menos de 10 segundos cuando un endpoint falla.
  • Cero infraestructura: Las metricas se envian a la nube de Nurbak.

Empeza ahora

Nurbak Watch esta en beta y es gratis durante el lanzamiento. Sin tarjeta de credito, sin limites de prueba.

  1. Anda a nurbak.com y crea una cuenta
  2. Ejecuta npm install @nurbak/watch
  3. Agrega las 5 lineas a instrumentation.ts
  4. Hace deploy
  5. Ve cada API route aparecer en tu dashboard en 60 segundos

Tu /api/checkout a las 2 AM nunca mas va a fallar en silencio.