3 · Infraestructura·8 min de lectura
El agente de monitoreo encontró cinco errores en sí mismo la primera vez que corrió
Todo lo que sabíamos de ese servidor lo sabíamos desde afuera. El túnel respondía, la consulta al ERP tardaba 700 milisegundos, el chequeo de salud daba 200. Y las fallas que nos habían costado esa misma semana —un servicio que no volvió después de un reinicio, veintidós errores que no dejaron rastro— no se veían desde afuera ninguna.
Así que escribimos una sonda que se para adentro: diez medidas, cada quince minutos, y las manda hacia el tablero. Servicios, disco, sesiones de escritorio remoto, procesos del ERP, licencias, respaldos, la base de datos, intentos de acceso, tareas programadas.
Antes de conectarla, la corrimos una vez y leímos el parte completo. Esa costumbre nos ahorró meses de un tablero que miente.
Lo que dijo el primer parte#
sesiones desconectadas: 0
licencias sesiones: -1
firebird PLANTA 2024.FDB · escrito hace 147 h
respaldo mb: 13.5 · mb_anterior: 76 · encogió 82%
tareas 3 fallidas
Cinco errores. Ninguno se veía como error. Cada uno era un número bien formado, con el tipo correcto, en el campo correcto. Eso es lo que los hace peligrosos.
Primero: el cero que era tres#
La medida más importante de la sonda es cuántas sesiones de escritorio remoto están desconectadas — no cerradas, desconectadas. Una sesión desconectada conserva todos sus programas abiertos indefinidamente, y así fue como dos licencias del ERP quedaron secuestradas por sesiones fantasma durante seis días.
El código buscaba esto:
$_ -match 'Disc|Desconectad'
Y el servidor, que es Windows en español, escribe esto:
NOMBRE DE SESIÓN NOMBRE DE USUARIO ID ESTADO
Administrador 1 Desc
console soporte 57 Activo
luis 328 Desc
query session. El estado viene truncado: Desc, cuatro letras. No casa con Disc ni con Desconectad.Resultado: cero sesiones desconectadas, habiendo tres. Un cero perfectamente formado, perfectamente verosímil, perfectamente falso. Y era exactamente la medida por la que construimos la sonda.
Segundo: el menos uno#
El gestor de licencias tiene una página interna con la lista de sesiones. La sonda la pedía, contaba las filas de la tabla, y restaba una por el encabezado.
La página no traía la tabla que esperábamos. Cero filas. Cero menos uno: menos una licencia en uso.
Es pequeño y es sintomático. Cuando una medida no se puede tomar, la respuesta correcta es «no se pudo medir». Restarle uno a un cero y reportar el resultado es inventar un dato y firmarlo.
Tercero: la base equivocada#
Para saber si el ERP estaba trabajando, la sonda mide cuándo se escribió por última vez su base de datos. Para elegir cuál base, la heurística era razonable: la más grande.
D:\datos ERP\PLANTA 2024.FDB 329.8 MB escrita hace 147 h
D:\datos ERP\PLANTA.FDB 122.1 MB escrita hace 0.1 h
La sonda eligió la grande y reportó una base sin escribirse en seis días. Con esa lectura, habríamos declarado un ERP detenido — mientras la gente capturaba en la otra.
Arreglo: la escrita más recientemente, excluyendo las del sistema. Y de paso descubrimos que hay cinco bases, no una.
Cuarto: la falsa alarma de todas las noches#
Ésta es la que importa, porque no fallaba. Iba a funcionar perfectamente mal.
El respaldo se mide por peso, no por existencia: un archivo de cero bytes existe y tiene fecha de hoy. La sonda tomaba el archivo más nuevo, lo comparaba contra el anterior, y si había encogido a la mitad, alertaba.
CATALOGOS_20260908_2340.fbk 13.5 MB 23:40:09
PLANTA 2024 RESPALDO_20260908_2340.fbk 76.0 MB 23:40:08
PLANTA 2024_20260908_2340.fbk 174.3 MB 23:40:07
PLANTA_20260908_2340.fbk 51.2 MB 23:40:04
Config_PLANTA_20260908_2340.fbk 30.2 MB 23:40:01
Los dos más nuevos son bases distintas: 13.5 MB contra 76 MB. La sonda habría concluido que el respaldo encogió 82% — todas las noches, a las 23:40, para siempre.
Y ése es el peor de los cinco. Un detector que falla se nota. Un detector que grita cada noche con el mismo falso positivo entrena a todo el mundo a ignorarlo en una semana. El día que el respaldo encoja de verdad, nadie va a mirar.
Arreglo: agrupar por base, y comparar cada una contra su propia noche anterior. Y reportar la base más atrasada — porque si una deja de respaldarse, las otras cuatro la esconderían.
Quinto: las fallas que no eran fallas#
La sonda listaba tareas programadas con código de salida distinto de cero. Tres aparecieron. Los códigos eran 267011, 267014 y 4294967295.
En Windows, esos significan aún no se ha ejecutado, la detuvo alguien y sin resultado previo. Ninguno es una falla. Tres alertas de ruido en el primer parte — y el ruido, otra vez, es lo que entrena a ignorar.
Lo que hicimos#
1. Leímos la primera corrida renglón por renglón, contra la realidad. No contra lo que el código debía hacer: contra lo que el servidor decía en pantalla. Los cinco errores salieron de comparar el parte con query session, con el explorador de archivos, con el visor de eventos.
2. Cambiamos la regla de lo que no se puede medir. Ahora es null con una nota que dice exactamente qué faltó. Nunca cero, nunca menos uno. Del otro lado, un null en el respaldo genera una alerta que dice literalmente: «no es lo mismo que no haya respaldo — es que no sabemos».
3. Corregimos los cinco, y volvimos a leer. El segundo parte trajo dos sesiones desconectadas, cinco bases, cinco respaldos comparados cada uno contra el suyo, y cero tareas fallidas. Y una cosa más que la primera versión no podía ver: la propia tarea de la sonda había fallado en su primera ejecución — le faltaba una credencial. El agente detectó su propio fallo. Ahí supimos que servía.
4. Dejamos escrito que la primera corrida se lee, no se asume. Para el siguiente servidor y el siguiente cliente.
Lo que queda como regla#
Un agente sin estrenar no miente al azar: miente con cara de dato. Cada uno de los cinco errores era un número bien formado. Lo que los delata no es su forma, es compararlos con la realidad.
El detector que falla se nota; el que grita cada noche se ignora. El peor error no era el cero: era la falsa alarma perfectamente regular.
Y lo que no se puede medir se dice con nombre. Un hueco declarado es información. Un cero inventado es una mentira firmada.
Caso real de una empresa manufacturera. Se omitieron nombres, rutas completas y todo dato que permita identificar a la empresa. Los nombres de archivo se muestran tal cual porque son la evidencia, y no identifican a nadie fuera de ella.