Adrian RomoAdrian Romo
Todos los textos
Registro de proyecto 2 min de lectura

La alerta que nombró algo y lo presentó como evidencia

Cinco alertas de alta severidad de mi propio monitoreo. Las cinco fueron por el mismo defecto: un registro que nombra algo se leía como una observación de una propiedad que nunca midió.

El segundo cerebro de mi homelab marcó cinco elementos de atención de alta severidad en una sola mañana. Los atendí esperando cinco problemas. Eran un solo defecto, usando cinco disfraces.

Los cinco

Cada alerta emparejaba un registro real con una conclusión que ese registro no podía respaldar:

  • Existía un listado de directorio, así que los datos se trataban como recientes. Un listado prueba que una ruta existe. No dice nada sobre cuándo se escribió algo ahí.
  • Existía una etiqueta de router de Traefik, así que el servicio se trataba como expuesto públicamente. Una etiqueta declara la intención de enrutar. Si esa ruta es alcanzable, está autenticada o siquiera conectada, es otra pregunta con otra respuesta.
  • El nombre de un servicio en compose coincidía, así que dos cosas se trataban como la misma cosa. Los nombres pueden chocar. Dos hosts pueden tener ambos un contenedor llamado redis.

La misma forma cada vez: se leyó un registro que nombra una cosa como si fuera una observación de una propiedad que esa cosa tiene. El registro era real. La inferencia fue inventada.

Por qué esta clase es más peligrosa que una invención

Cada una de estas alertas pasó mis revisiones de fundamento. Citaban un artefacto real. La cita se resolvía. Si auditabas el rastro, encontrabas un archivo real en un host real.

El defecto está un nivel arriba, en la semántica de la fuente — en creer que la presencia implica propiedad. El fundamento te da "esta afirmación se rastrea hasta algo real." No te da "lo real mide lo que la afirmación dice que mide." Ahí vivían las cinco.

Lo que cambié

No los umbrales de alerta — el eje. Ahora cada detector tiene que nombrar lo que realmente observó, separado de lo que concluyó, y se permite que no coincidan. Un listado de directorio produce "la ruta existe", y ya. Si se quiere afirmar frescura, alguien tiene que ir a leer un mtime.

Donde no pude obtener una observación real de forma sencilla, el detector ahora lo dice y deja abierto el eje de observación en vez de tomar un hecho cercano y redondear hacia arriba. Los commits de esa semana parecen un estado de ánimo: haz que observación signifique observación, un marcador de sesión no es una operación atorada, di rechazado, no inalcanzable.

La regla que me llevé

Verifica en el host antes de creerle a tu propio segundo cerebro. La salida confiada de un sistema de monitoreo es una afirmación como cualquier otra, y la forma más rápida de auditarla es ir a ver la cosa.

La consecuencia, que me costó una hora: cuando llegan varias alertas juntas y parecen relacionadas, la pregunta útil no es "¿cuál arreglo primero?" Es "¿en realidad son un solo bug?" Cinco elementos, una causa raíz, una solución.

Escrito por

Adrian Romo

Ingeniero Backend Senior que diseña APIs escalables en Python, arquitecturas sobre AWS Lambda, sistemas de voz e integraciones empresariales.

Continúa

¿A dónde sigues?

Explora más textos técnicos, revisa los casos de estudio o escríbeme directo.