ELX-HealthMonitor
Qué está haciendo ahora un servidor Linux y qué hacía la semana pasada
Un agente de supervisión con interfaz web, historial en SQLite y avisos por correo. Un único ejecutable sin dependencias: la interfaz está dentro del binario y la base se crea sola. En un Celeron de cuatro años cuesta alrededor del cuatro por ciento de un núcleo y once megabytes de memoria.
Leído del núcleo, no adivinado
Todo procede directamente de /proc, /sys y smartctl. Ningún recolector que instalar, ninguna base de series temporales que mantener y ninguna pareja agente-servidor que llevar acompasada.
Los discos antes de que fallen
Salud SMART, temperatura, horas de funcionamiento, sectores reasignados y pendientes, errores de CRC, desgaste de los SSD y bytes escritos en toda la vida — con la tabla completa de atributos cuando quiera mirar más de cerca.
El RAID, incluida la parte incómoda
Estado de la matriz, nivel, miembros, discos averiados y avance de la resincronización — más el mapa de intenciones de escritura, que dice si en este momento las copias son de verdad idénticas, y el número de discrepancias de la última comprobación.
Los servicios con su propia actividad de disco
Cada unidad systemd con su procesador, su memoria, sus lecturas y escrituras en disco, su número de tareas y sus reinicios — y botones para arrancar, parar y cambiar el arranque automático.
Avisos que no gritan sin motivo
Una regla lleva un tiempo de espera: un pico de diez segundos a plena carga no envía nada, diez minutos a ese nivel sí. Es ese solo ajuste el que separa los mensajes que se leen de los que se filtran.
Un historial que no crece sin fin
Tres días a resolución completa, luego tramos de cinco minutos que guardan media, mínimo y máximo, y nada más antiguo de un mes. Los picos sobreviven al aclarado; los gigabytes no.
Qué se mide
| Sección | Medidas |
|---|---|
| Procesador | Carga total y por núcleo, user/system/iowait/steal, frecuencia, carga media, cambios de contexto, cola |
| Memoria | Ocupada, disponible, caché, búferes, slab, páginas sucias, intercambio y con qué intensidad se usa |
| Discos | Velocidad de lectura y escritura, IOPS, latencia, ocupación del dispositivo, modelo, capacidad |
| Sistemas de archivos | Ocupado, libre, porcentaje, inodos |
| SMART | Salud, temperatura, horas de funcionamiento, sectores reasignados y pendientes, errores de CRC, desgaste de los SSD, bytes escritos en toda la vida, tabla completa de atributos |
| RAID | Estado de las matrices md, nivel, miembros, discos averiados, avance y velocidad de la resincronización, igualdad actual de las copias y discrepancias de la última comprobación |
| Red | Bytes y paquetes de entrada y salida, errores y pérdidas, estado del enlace, velocidad del puerto, direcciones, MTU |
| Temperatura | Todos los sensores hwmon y zonas térmicas ACPI, más las temperaturas de los discos según SMART |
| Servicios | Estado y arranque automático de las unidades systemd, procesador, memoria, actividad de disco por servicio, número de tareas, reinicios |
| Procesos | Los primeros por procesador y por memoria, actividad de disco, propietario, unidad |
Cada sección se desactiva por separado, y una sección desactivada no se interroga en absoluto.
La pregunta sobre el RAID que conviene hacer
Una matriz en espejo guarda los mismos datos en los dos discos, pero las escrituras no los alcanzan en el mismo instante. El núcleo anota las zonas que podrían diferir en un mapa de intenciones de escritura, y este agente muestra ese mapa directamente: mientras el número de zonas sucias sea cero las copias son idénticas; por encima de cero hay una resincronización en marcha.
Al lado figura el número de discrepancias de la última comprobación de integridad. Un valor distinto de cero significa que un disco o una controladora ha devuelto datos distintos de las dos mitades de un espejo — y ése es precisamente el fallo por el que existe la supervisión, y precisamente el que oculta un indicador verde de «matriz sana».
Cuánto cuesta tenerlo funcionando
Las lecturas caras siguen su propio calendario, aparte del ciclo principal: despertar cinco discos cada tres segundos para preguntarles la temperatura sería peor que no vigilarlos.
| Ajuste | Por omisión | Qué gobierna |
|---|---|---|
interval_sec | 3 s | El ciclo principal de interrogación |
services.interval_sec | 15 s | Un recorrido completo por las unidades systemd |
disk.smart_interval_sec | 900 s | La interrogación SMART — es la que despierta los discos |
storage.persist_interval_sec | 30 s | La escritura de una instantánea en el historial |
Medido en un Celeron J1900 de cuatro núcleos, con 165 unidades systemd y cinco discos: alrededor del cuatro por ciento de un núcleo y once megabytes de memoria. En un Xeon E5-2690, menos del tres por ciento de un núcleo.
La interfaz
- El navegador recuerda sus decisiones: el periodo de cada gráfico, las curvas ocultas con un clic en la leyenda, y los filtros de las tablas de servicios y sucesos. Recargar no borra ninguna.
- Todas las curvas suben desde cero, la unidad del eje sigue el intervalo de valores y el número de decimales sigue el paso de la rejilla — así dos marcas contiguas nunca llevan la misma etiqueta.
- Tras una actualización, una pestaña abierta advierte por sí sola el cambio de versión, lo dice y se recarga, en lugar de dejar una interfaz vieja en la caché del navegador.
- Los botones de reinicio y apagado de la máquina están en la cabecera; si no los quiere ahí, una clave de configuración los retira.
- Cada acción irreversible está detrás de una confirmación que explica la consecuencia, y el botón lleva el nombre de la acción en vez de «Aceptar».
En pocas palabras
- Sistemas operativos
- Debian y Ubuntu con systemd
- Arquitecturas
- amd64, arm64, armhf
- Interfaz web
- Puerto 8555 por omisión
- Historial
- SQLite; 3 días en bruto, 31 días condensados
- Dependencia opcional
- smartmontools, para la sección SMART
- Coste habitual
- ~4 % de un núcleo, ~11 MB de memoria
- Avisos
- Correo por SMTPS, STARTTLS o en claro
- Configuración
- Interfaz web, o config.json