Inicio / Verificar lo que devuelve
Lo que un control exime desaparece de su salida
Una exención puesta en un control por una buena razón retira la parte eximida de lo que el control juzga: mientras esa parte no tenga su propia medida y su propio umbral, puede crecer bajo un veredicto conforme.
Tomemos un caso típico. Un control nocturno compara la ocupación en disco de una carpeta de proyecto con un umbral. Su regla exime la subcarpeta cache/, por una razón que respondía a su creación: su contenido se regenera y puede vaciarse en cualquier momento, así que no merecía una alerta. Meses después, el disco se llena mientras el control muestra conforme cada noche.
Un perímetro elegido y luego olvidado
La lección sobre el lugar donde se mira mostró que una verificación encuentra primero allí donde busca. Aquí se añade un rasgo propio: el perímetro se decidió una vez, se escribió en la regla y después nadie lo relee, porque la salida del control no lo menciona. Un veredicto conforme se lee como un veredicto sobre la carpeta, cuando en realidad recae sobre la carpeta menos su caché.
La demostración siguiente crea su propia carpeta, escribe el control, llena la parte eximida y luego mide la carpeta entera:
mkdir -p demo-exencion/proyecto/cache demo-exencion/proyecto/docs && cd demo-exencion
printf 'informe uno\n' > proyecto/docs/informe1.txt
printf 'informe dos\n' > proyecto/docs/informe2.txt
cat > control.sh << 'EOF'
#!/bin/sh
# Ocupación en disco de proyecto/, el cache/ queda exento por la regla
UMBRAL=5000
PESO=$(find proyecto -path proyecto/cache -prune -o -type f -exec cat {} + | wc -c | tr -d ' ')
echo "Ocupación contada : $PESO bytes (umbral $UMBRAL)"
if [ "$PESO" -le "$UMBRAL" ]; then echo "Veredicto : conforme"; else echo "Veredicto : superado"; fi
EOF
sh control.sh
dd if=/dev/zero of=proyecto/cache/index.bin bs=1024 count=50 2>/dev/null
sh control.sh
echo "Ocupación real de proyecto/ : $(find proyecto -type f -exec cat {} + | wc -c | tr -d ' ') bytes"
Ocupación contada : 24 bytes (umbral 5000)
Veredicto : conforme
Ocupación contada : 24 bytes (umbral 5000)
Veredicto : conforme
Ocupación real de proyecto/ : 51224 bytes
El control recorre proyecto/ y todas sus subcarpetas, y descarta proyecto/cache con la opción -prune de find. Su veredicto no se mueve cuando el caché recibe un archivo grande, mientras que la medida de la carpeta entera, hecha fuera del control, muestra que el caché lleva la mayor parte de la ocupación. 2>/dev/null oculta el balance de dd. La suma con wc -c mide el contenido de los archivos, no los bloques reservados en el disco, lo que basta para una diferencia de este orden.
Dar un umbral a la parte eximida
Retirar la exención haría volver las alertas que la regla quería evitar, puesto que el caché siempre se regenera. Pero lo que la justificaba, un contenido despreciable, deja de valer cuando el caché lleva la mayor parte de la ocupación. Mostrar su peso no basta: una línea bajo un veredicto que sigue conforme se lee tan poco como la regla. El remedio mantiene el caché fuera del umbral principal y le da su propio umbral, que pesa sobre el veredicto. También verifica que la carpeta eximida existe, pues de lo contrario find no encontraría nada y el control mostraría cero bytes. Desde la misma carpeta:
cat > control.sh << 'EOF'
#!/bin/sh
# Ocupación en disco de proyecto/ : cache/ sale del umbral principal y recibe su propio umbral
UMBRAL=5000
UMBRAL_CACHE=20000
PESO=$(find proyecto -path proyecto/cache -prune -o -type f -exec cat {} + | wc -c | tr -d ' ')
echo "Ocupación contada : $PESO bytes (umbral $UMBRAL)"
VEREDICTO=conforme
if [ "$PESO" -gt "$UMBRAL" ]; then VEREDICTO="superado"; fi
if [ -d proyecto/cache ]; then
EXENTO=$(find proyecto/cache -type f -exec cat {} + | wc -c | tr -d ' ')
echo "Parte exenta : cache/ $EXENTO bytes (umbral propio $UMBRAL_CACHE)"
if [ "$EXENTO" -gt "$UMBRAL_CACHE" ]; then VEREDICTO="parte exenta superada"; fi
else
echo "Parte exenta : cache/ no encontrada, sin medir"
if [ "$VEREDICTO" = conforme ]; then VEREDICTO="por verificar"; fi
fi
echo "Veredicto : $VEREDICTO"
EOF
sh control.sh
Ocupación contada : 24 bytes (umbral 5000)
Parte exenta : cache/ 51200 bytes (umbral propio 20000)
Veredicto : parte exenta superada
El control devuelve ahora un exceso allí donde decía conforme, y nombra la parte responsable. Si cache/ desaparece, lo escribe y devuelve «por verificar» en lugar de un cero tranquilizador.
Lo que el veredicto juzga, capa por capa
Un control nocturno compara cada noche la ocupación en disco de una carpeta de proyecto con un umbral y excluye de su cálculo la subcarpeta cache, regla puesta en su creación. Once meses después, el disco del servidor está lleno. El control ha mostrado conforme todas las noches. Una medida de la carpeta entera, caché incluido, muestra que el caché ocupa la mayor parte.
Escribe en una frase lo que esta situación establece, y en una frase lo que no establece.
Lo que esto establece: Establece que los veredictos conformes recaían sobre la carpeta menos su caché, y que ese caché concentra hoy la mayor parte de la ocupación de la carpeta.
Lo que esto no establece: No establece que la exención fuera un error cuando se puso, ni que esta carpeta haya llenado el disco por sí sola: la medida recae sobre la carpeta, y el disco contiene también el resto del servidor.
Los tres calibrados falsos más frecuentes
- Demasiado amplio Los veredictos conformes de los últimos once meses eran falsos, y el control mide mal desde su creación.
- Demasiado estrecho El único hecho establecido es la parte del caché en la carpeta el día de la medida; los veredictos conformes mostrados cada noche no informan sobre lo que cubrían.
- Fuera de tema La situación establece que el programa que produce el caché dejó de vaciarlo como hacía al principio.
- Una exención inscrita en un control limita el alcance de cada uno de sus veredictos, incluso cuando la salida no lo dice.
- Un veredicto conforme recae sobre la parte contada y no dice nada de la parte eximida mientras esta no se mida aparte.
- Una medida de la carpeta entera, hecha fuera del control, revela una diferencia que ninguna repetición del mismo control muestra.
- Una parte eximida que recibe su propio umbral puede hacer cambiar el veredicto, cosa que una simple línea informativa bajo un veredicto conforme no hace.
- Una carpeta eximida que no se encuentra debe producir una advertencia; de lo contrario se mide en cero sin que nadie lo note.
Abre un control automático que uses, localiza cada exclusión escrita en su regla y dale a cada una una medida y un umbral propios que hagan cambiar el veredicto, con un mensaje explícito cuando la parte excluida no se encuentre.