Ir al contenido principal
Laravel, shipping fast.
Capítulo 13 · Monitorización y observabilidad

Los primeros cinco minutos de un incidente

Julian Beaujardin

Cuando algo está caído, los primeros cinco minutos deciden si la hora siguiente es tranquila o caótica. Haz esto en orden, antes de abrir un solo archivo.

  1. Comprueba la ruta de salud en todas las instancias, no solo en la que alertó. Te dice al instante si el problema está en las dependencias propias de esta aplicación.
  2. Mira las cuatro señales de los últimos treinta minutos, no de los últimos cinco. Una tasa de errores que empezó a subir hace veinticinco minutos es tu verdadero punto de partida, no el momento en que saltó la alerta.
  3. Lee los errores por código de estado. Un muro de 504 apunta al proveedor. Un muro de 500 apunta a ti. Un muro de 429 apunta a un consumidor, o tu propio limitador puesto demasiado bajo.
  4. Si afecta a un solo consumidor, saca una traza. La línea de la llamada saliente suele mostrar qué llamada falló antes de que hayas leído nada del código de la aplicación.
  5. Solo entonces abre un archivo. Todo lo anterior a este paso es leer datos que ya recogiste. Todo lo posterior es depurar, y depurar sin los cuatro primeros pasos es adivinar con más aplomo.

Resumen del capítulo 13

Comprobaciones de salud:

  • Amplía /up con un listener de DiagnosingHealth que compruebe lo que necesita una petición: la base de datos y la caché.
  • Nunca compruebes ahí a un proveedor. La caída de una dependencia no debe sacar tus servidores de la rotación.

Señales:

  • Volumen, latencia, errores y saturación, visibles sin leer una traza de pila.
  • La latencia en el percentil 95. Los errores por código de estado, nunca sumados.

Alertas:

  • Despierta a alguien por síntomas que un consumidor puede ver, no por reintentos que siguen dentro del presupuesto.
  • Clasifica las excepciones por severidad antes de que lleguen al rastreador de errores.

Trazas:

  • Registra cada llamada al proveedor, por host y estado, con un solo listener.
  • Con un ID de traza en Context, la petición, sus jobs, sus llamadas al proveedor y sus excepciones se leen como una sola historia.

Objetivos:

  • Pon por escrito qué cuenta como fallo, una meta por debajo del 100 % y una ventana. Un objetivo es una consulta sobre el log de peticiones.
  • Gasta el presupuesto de error en entregar, y deja de entregar cuando se acabe.

Durante un incidente:

  • Ruta de salud, cuatro señales en treinta minutos, errores por código de estado, una traza. Solo entonces abre un archivo.

No se pudo cargar el audio. Inténtalo de nuevo en un momento.