OPNsense utiliza el paquete Monit como una herramienta nativa para supervisar servicios del sistema, recursos de hardware (CPU, memoria, espacio en disco) y el estado de la red o pasarelas (gateways), enviando alertas automáticas por correo electrónico cuando ocurren anomalías.
Puedes usar Monit para monitorizar procesos demonio o programas similares que se ejecutan en localhost. Monit es especialmente útil para monitorizar procesos demonio, como los que se inician al arrancar el sistema. Por ejemplo, sendmail, sshd, apache y mysql. A diferencia de muchos otros sistemas de monitorización, Monit puede actuar si se produce un error; por ejemplo, si sendmail no se está ejecutando, Monit puede reiniciarlo automáticamente; o si apache consume demasiados recursos (por ejemplo, durante un ataque DoS), Monit puede detenerlo o reiniciarlo y enviarte una alerta. Monit también puede monitorizar las características de los procesos, como la cantidad de memoria o ciclos de CPU que utilizan.
Además, puedes usar Monit para monitorizar archivos, directorios y sistemas de archivos en localhost. Monit puede monitorizar estos elementos para detectar cambios, como cambios en las marcas de tiempo, las sumas de comprobación o el tamaño. Esto también resulta útil por motivos de seguridad: puede monitorizar la suma de comprobación md5, sha1 o sha256 de los archivos que no deberían cambiar y recibir una alerta o realizar una acción si se produce algún cambio. Se recomienda SHA256 para una mayor seguridad criptográfica.
Monit puede monitorizar las conexiones de red a diversos servidores, tanto en el equipo local como en hosts remotos. Admite TCP, UDP y sockets de dominio Unix. Las pruebas de red se pueden realizar a nivel de protocolo; Monit incluye pruebas integradas para los principales protocolos de Internet, como HTTP, SMTP, etc. Incluso si un protocolo no es compatible, puede probar el servidor, ya que puede configurar Monit para enviar cualquier dato y comprobar la respuesta del servidor.
Monit se puede utilizar para probar programas o scripts en momentos específicos, de forma similar a cron, pero además, puede comprobar el valor de salida de un programa y realizar una acción o enviar una alerta si el valor de salida indica un error. Esto significa que puede utilizar Monit para realizar cualquier tipo de comprobación para la que pueda escribir un script.
Por último, Monit se puede utilizar para monitorizar los recursos generales del sistema en el equipo local, como el uso general de la CPU, la memoria y la carga del sistema.
Configuración General
- Habilitar Monit (Activa o desactiva Monit)
- Intervalo de sondeo (Con qué frecuencia Monit comprueba el estado de los componentes que monitoriza.)
- Retardo de inicio (Cuánto tiempo espera Monit antes de comprobar los componentes al iniciarse.)
- Servidor de correo (Lista de servidores de correo a los que enviar notificaciones (ver también debajo de esta tabla).
- Puerto del servidor de correo (Puerto del servidor de correo que se utilizará. 25 y 465 son ejemplos comunes.)
- Nombre de usuario (Nombre de usuario que se utiliza para iniciar sesión en el servidor SMTP, si es necesario. Suele ser el mismo que la dirección de correo electrónico, pero no siempre.)
- Contraseña (Contraseña que se utiliza para iniciar sesión en el servidor SMTP, si es necesario.)
- Conexión segura (Utiliza TLS al conectarte al servidor de correo.)
- Versión SSL (Versión TLS que se utilizará. AUTO intentará negociar una versión compatible.)
- Verificar certificados SSL (Comprueba la validez del certificado TLS. Si utiliza un certificado autofirmado, desactive esta opción.)
- Archivo de registro (El archivo de registro del proceso Monit. Puede ser la palabra clave `syslog` o la ruta a un archivo.)
- Archivo de estado (El archivo de estado del proceso Monit.)
Ejemplos Tests
CPUUsagecpu usage is greater than 75%LoadAvg1loadavg (1min) is greater than 8LoadAvg5loadavg (5min) is greater than 6LoadAvg15loadavg (15min) is greater than 4MemoryUsagememory usage is greater than 75%
Estos son para monitorizar el HOST (Sistema)
Para monitorizar la red tenemos:
NetworkLinkfailed linkNetworkSaturationsaturation is greater than 75%NonZeroStatusstatus != 0Pingfailed pingSpaceUsagespace usage is greater than 75%
download > 850000 packets/s
download > 450 MB/s
Cuando un test se cumple podemos enviar un e-mail (alert) o bien ejecutar un script (execute)
Ejemplo monitorización HOST
System 'OPNsense.localdomain'status OKmonitoring status Monitoredmonitoring mode activeon reboot startload average [0.15] [0.19] [0.16]cpu 0.0%usr 3.5%sys 0.0%nice 0.4%hardirqmemory usage 1007.8 MB [6.3%]swap usage 0 B [0.0%]uptime 2d 14h 26mboot time Fri, 14 Aug 2026 22:44:57filedescriptors 183 [0.0% of 514234 limit]data collected Mon, 17 Aug 2026 13:11:30
Ejemplo monitorización red
Network 'WAN'
status OK
monitoring status Monitored
monitoring mode active
on reboot start
link 0 errors
capacity 10000 Mb/s full-duplex
download bytes 118.1 MB/s (9.9% link saturation)
upload bytes 49.7 MB/s (4.2% link saturation)
download packets 92846 per second
upload packets 41438 per second
data collected Sun, 16 Aug 2026 12:57:45
Eventos Tests
Event: | Failure state: | Success state:
---------------------------------------------------------------------
action | "Action failed" | "Action done"
checksum | "Checksum failed" | "Checksum succeeded"
bytein | "Download bytes exceeded" | "Download bytes ok"
byteout | "Upload bytes exceeded" | "Upload bytes ok"
connection | "Connection failed" | "Connection succeeded"
content | "Content failed", | "Content succeeded"
data | "Data access error" | "Data access succeeded"
exec | "Execution failed" | "Execution succeeded"
fsflags | "Filesystem flags failed" | "Filesystem flags succeeded"
gid | "GID failed" | "GID succeeded"
icmp | "Ping failed" | "Ping succeeded"
instance | "Monit instance changed" | "Monit instance changed not"
invalid | "Invalid type" | "Type succeeded"
link | "Link down" | "Link up"
nonexist | "Does not exist" | "Exists"
packetin | "Download packets exceeded" | "Download packets ok"
packetout | "Upload packets exceeded" | "Upload packets ok"
permission | "Permission failed" | "Permission succeeded"
pid | "PID failed" | "PID succeeded"
ppid | "PPID failed" | "PPID succeeded"
resource | "Resource limit matched" | "Resource limit succeeded"
saturation | "Saturation exceeded" | "Saturation ok"
size | "Size failed" | "Size succeeded"
speed | "Speed failed" | "Speed ok"
status | "Status failed" | "Status succeeded"
timeout | "Timeout" | "Timeout recovery"
timestamp | "Timestamp failed" | "Timestamp succeeded"
uid | "UID failed" | "UID succeeded"
uptime | "Uptime failed" | "Uptime succeeded"
