Integración domótica Nagios, gratuita y de código abierto

Sus hosts y servicios de Nagios Core en Gladys, con escenas cuando un host cae o falla un servicio.
Lleve su supervisión Nagios Core a Gladys: cada host se convierte en un dispositivo (UP, servicios WARNING, CRITICAL y UNKNOWN, problemas sin gestionar, reconocido, mantenimiento), un dispositivo «Nagios» resume el conjunto e indica si Nagios está en marcha, y sus escenas reaccionan cuando un host cae o falla un servicio — una luz roja cuando el NAS cae, un mensaje cuando una copia de seguridad pasa a CRITICAL. Una escena también puede reconocer los problemas de un host o hacer que se compruebe en el acto, y un widget del panel lista los problemas en curso.
La integración lee los CGI JSON de la interfaz web de Nagios en su red local, con un usuario web. Nada pasa por una nube.
Probado con un Nagios Core 4.5 real (4.5.12, imagen Docker
jasonrivers/nagios, checks ficticios forzados a WARNING, CRITICAL y UNKNOWN,
un host DOWN, un host UNREACHABLE detrás de él, un mantenimiento,
reconocimientos, un host nunca comprobado, el servicio detenido). Sus
comentarios son bienvenidos:
github.com/guim31/gladys-nagios/issues.
Lo que necesita
- Gladys Assistant 5.1.0 o posterior.
- Nagios Core 4 (4.0 o posterior: los CGI JSON
statusjson.cgiyobjectjson.cgillegaron con él) y su interfaz web, accesibles desde la máquina de Gladys. Nagios XI, Icinga, Naemon y Shinken son otros productos. - Un usuario web para Gladys, con los permisos necesarios en
cgi.cfg.
Primeros pasos
1. Crear un usuario web
En el servidor Nagios, añada un usuario al archivo de contraseñas de la interfaz web (la ruta depende de la instalación):
htpasswd /usr/local/nagios/etc/htpasswd.users gladys
Después concédale los permisos en cgi.cfg, añadiendo gladys a estas líneas
(separado por comas):
authorized_for_all_hosts=nagiosadmin,gladys
authorized_for_all_services=nagiosadmin,gladys
authorized_for_all_host_commands=nagiosadmin,gladys
authorized_for_all_service_commands=nagiosadmin,gladys
Las dos últimas solo sirven para reconocer o comprobar ahora desde Gladys:
omítalas si Gladys solo debe leer. Sin las dos primeras, el usuario solo ve los
hosts y servicios de los que es contacto. No hace falta reiniciar: los CGI leen
cgi.cfg en cada petición. Los comandos también necesitan
check_external_commands=1 en nagios.cfg (el valor por defecto).
2. Configurar la integración
En Gladys, abra la configuración de la integración:
- Dirección: la dirección de la interfaz web de Nagios, p. ej.
192.168.1.2/nagios. Se añadenhttp://y/nagiossalvo que introduzca otros (/nagios4con los paquetes de Debian y Ubuntu); la dirección de una página de la interfaz, copiada del navegador, también sirve. - Usuario web y Contraseña: el usuario del paso 1.
- Grupos de hosts (opcional): nombres de grupos de hosts de Nagios
(
hostgroup_name) separados por comas, p. ej.homelab, linux-servers: se conserva un host de uno de ellos. Vacío: todos los hosts. - Intervalo de actualización: de 30 segundos a 5 minutos (1 minuto por defecto).
- Permitir reconocer desde escenas y Permitir comprobar ahora desde escenas: desmárquelas para desactivar estas acciones.
- Aceptar certificados autofirmados: solo para una dirección
https://con un certificado propio; entonces no se verifica. - Idioma de los nombres: idioma de los nombres de las funciones y de los resultados de escena.
Guarde y haga clic en Probar la conexión: muestra la versión de Nagios, el número de hosts, de hosts caídos y de servicios con problemas.
3. Añadir los dispositivos
Abra la pestaña Descubrir de la integración y añada los hosts que quiere seguir, y el dispositivo «Nagios» si quiere los totales. Los disparadores de escena valen para todos los hosts, añadidos a Gladys o no.
Los dispositivos
Cada host (con el nombre de su alias en Nagios):
| Función | Valor |
|---|---|
| Host UP | 1 UP, 0 DOWN o UNREACHABLE; vacío mientras el host está PENDING |
| Servicios WARNING | número de servicios WARNING |
| Servicios CRITICAL | número de servicios CRITICAL |
| Servicios UNKNOWN | número de servicios UNKNOWN |
| Problemas sin gestionar | problemas de host y de servicios ni reconocidos ni en mantenimiento |
| Host reconocido | 1 mientras el host está DOWN o UNREACHABLE y su problema reconocido |
| En mantenimiento | 1 mientras el host está en un mantenimiento programado |
El dispositivo Nagios: Nagios en marcha (1 mientras el servicio Nagios actualiza su estado, 0 una vez detenido), Hosts DOWN (DOWN o UNREACHABLE), Servicios WARNING, Servicios CRITICAL, Servicios UNKNOWN y Problemas sin gestionar, sobre los hosts de la configuración.
Un host está UNREACHABLE cuando cae detrás de un padre (parents) que también
ha caído. Los contadores de servicios incluyen los estados que Nagios aún está
confirmando (SOFT), como su interfaz web. Los valores solo se envían a Gladys
cuando cambian, y si no cada 6 horas.
Panel
El widget Problemas de Nagios muestra tres mosaicos — los hosts caídos, los servicios CRITICAL, los problemas sin gestionar — y los problemas: hosts DOWN, luego UNREACHABLE, luego servicios CRITICAL, UNKNOWN y WARNING, los más recientes primero. Cada fila da el servicio y su estado, el host, ✓ una vez reconocido y ⏸ en mantenimiento. Diez filas como máximo. Actualizar vuelve a leer Nagios. En sus ajustes, elija hosts para mostrar solo los suyos (vacío: todos).
Escenas
Disparadores
- Un host cae: un host pasa a DOWN o UNREACHABLE. Filtro: hosts (vacío: todos). Variables: nombre del host, estado (DOWN, UNREACHABLE). Un host que pasa de DOWN a UNREACHABLE no se anuncia dos veces.
- Un host vuelve: un host anunciado como caído vuelve a estar UP. Variables: nombre del host, duración en minutos.
- Un servicio tiene un problema: un servicio pasa a WARNING, CRITICAL o UNKNOWN, o cambia entre ellos (de WARNING a CRITICAL, por ejemplo). Filtros: hosts, estados (vacío: todos; para «solo CRITICAL», elija CRITICAL). Variables: nombre del host, servicio, estado, salida del check (su primera línea).
- Un servicio vuelve a OK: un servicio anunciado con problemas vuelve a estar OK. Filtros: hosts, el último estado de problema anunciado. Variables: nombre del host, servicio, último estado de problema, duración en minutos.
- Nagios ya no supervisa: la interfaz web no responde dos veces seguidas, o el servicio Nagios está detenido (variables: dirección, error).
Los problemas ya presentes cuando arranca la integración no se anuncian, pero
su fin sí. Solo cuentan los estados confirmados (HARD): mientras Nagios repite
un check (estado SOFT, hasta max_check_attempts), no se anuncia nada, como
Nagios tampoco notifica. Un cambio ocurrido durante un reinicio de Gladys o de
la integración se anuncia una vez en la lectura siguiente. Un problema en
mantenimiento (del servicio o de su host) no se anuncia; si sigue ahí al
terminar el mantenimiento, se anuncia entonces.
Acciones
- Reconocer los problemas de un host: reconoce en Nagios el problema del
host (DOWN, UNREACHABLE) y cada uno de sus servicios con problemas aún no
reconocido, con un comentario (vacío: «Reconocido desde Gladys»). El
reconocimiento es persistente (hasta que el host vuelva a UP o el servicio a
OK) y su comentario se conserva tras los reinicios; el autor es el usuario web (el
alias de su contacto cuando
lock_author_namesestá activo, por defecto). Devuelve el número reconocido. Desactívela con «Permitir reconocer desde escenas». - Comprobar un host ahora: pide a Nagios que compruebe ya el host y todos sus servicios (forzado, como «Re-schedule the next check» de la interfaz web), por ejemplo tras una reparación o un reinicio. Los nuevos estados llegan con las lecturas siguientes. Desactívela con «Permitir comprobar ahora desde escenas».
- Leer los problemas: cuenta y lista los problemas de un host, o de todos, para las acciones siguientes: número, sin gestionar, hosts caídos, servicios CRITICAL, WARNING y UNKNOWN, y la lista «host: problema».
Ideas de escenas
- Una luz roja cuando cae el NAS: disparador «Un host cae», host NAS →
poner en rojo la lámpara del salón y enviar
{{triggerEvent.data.host}}: {{triggerEvent.data.state_name}}. - Solo servicios críticos: disparador «Un servicio tiene un problema»,
estado CRITICAL → mensaje
\{\{triggerEvent.data.host\}\} / \{\{triggerEvent.data.service\}\}: \{\{triggerEvent.data.output\}\}. - De vuelta tras un reinicio: cuando el enchufe inteligente del NAS se vuelve a encender, esperar 3 minutos y luego «Comprobar un host ahora» en el NAS: no hace falta esperar al próximo check.
- Informe matinal: cada día a las 8:00, «Leer los problemas» → enviar el número y la lista cuando el número sea mayor que 0.
- Visto desde el sofá: un botón del panel o un mando Zigbee lanza «Reconocer los problemas de un host» en el NAS.
Solución de problemas
- «Usuario o contraseña rechazados por el servidor web»: compruebe el
usuario en
htpasswd.users(inicie sesión con él en la interfaz web). - «Nagios no responde»: compruebe la dirección desde la máquina de Gladys.
localhostes el propio contenedor de la integración: use la dirección IP de la máquina Nagios. - «No hay ningún Nagios Core 4 en esta dirección»: la ruta web es
incorrecta (
/nagios,/nagios4…), u otro programa responde ahí. Copie la dirección de la página de inicio de Nagios desde el navegador. - «El servicio Nagios no está en marcha»: el servidor web responde pero el
propio Nagios está detenido o bloqueado (su archivo de estado falta o es
antiguo): reinicie Nagios y compruebe su configuración con
nagios -v nagios.cfg. - «Ningún host visible»: añada el usuario a
authorized_for_all_hostsyauthorized_for_all_servicesencgi.cfg, o hágalo contacto de los hosts. - «Un grupo de hosts de la configuración no existe»: compruebe la
ortografía; es el
hostgroup_name, no su alias. - «Certificado rechazado»: marque «Aceptar certificados autofirmados».
- Se rechaza el reconocimiento o la comprobación: añada el usuario a
authorized_for_all_host_commandsyauthorized_for_all_service_commandsencgi.cfg; «Nagios no acepta comandos externos»: pongacheck_external_commands=1ennagios.cfgy reinicie Nagios.
Límites
- Un Nagios por integración. Nagios XI y los derivados (Icinga, Naemon) no están soportados: sus interfaces son distintas.
- Solo estados de hosts y de servicios: sin métricas ni datos de rendimiento.
- La integración lee Nagios al intervalo elegido: un evento que va y viene
entre dos lecturas se pierde. Nagios escribe su estado cada 10 segundos
(
status_update_interval): un reconocimiento aparece unos segundos después. - «Un servicio vuelve a OK» también se dispara cuando un servicio con problemas se retira de la supervisión; un host retirado de Nagios o del ámbito termina sin aviso.
- Como máximo 30 eventos de escena por lectura: un corte de red puede generar decenas a la vez; el resto sigue en las lecturas siguientes.
- Sin cuota: cada lectura envía tres peticiones a los CGI (una más por grupo de hosts, y la lista de objetos una vez por hora, para los alias). Un comando son dos peticiones (el formulario, para el token anti-CSRF de Nagios 4.5, y luego el comando).
Sin relación con Nagios Enterprises.
Parámetros de configuración
Estos son los parámetros que Nagios te pide en su pantalla de configuración en Gladys.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Su Nagios Core | section | No | Nagios Core 4 con su interfaz web (CGI JSON). Use un usuario web de htpasswd.users incluido en cgi.cfg en authorized_for_all_hosts y authorized_for_all_services, más las líneas *_commands para reconocer o comprobar. Después añada los hosts (pestaña Descubrir). |
| Dirección | string | Sí | La dirección de la interfaz web de Nagios; http:// y /nagios salvo que introduzca otros. |
| Usuario web | string | Sí | Un usuario de htpasswd.users, con el que inicia sesión en la interfaz web de Nagios. |
| Contraseña | secret | Sí | Su contraseña. Mejor un usuario dedicado: concédale solo los permisos indicados arriba. |
| Grupos de hosts (opcional) | string | No | Nombres de grupos de hosts de Nagios (hostgroup_name), separados por comas: se conserva un host de uno de ellos. Vacío: todos los hosts. |
| Opciones | section | No | |
| Intervalo de actualización | select | No | Con qué frecuencia se lee Nagios: tres peticiones a los CGI JSON cada vez. |
| Permitir reconocer desde escenas | boolean | No | Desmarque para desactivar la acción de escena «Reconocer los problemas de un host». |
| Permitir comprobar ahora desde escenas | boolean | No | Desmarque para desactivar la acción de escena «Comprobar un host ahora». |
| Aceptar certificados autofirmados | boolean | No | Solo para https:// con un certificado propio: entonces no se verifica. |
| Idioma de los nombres | select | No | Idioma de los nombres de las funciones (fijados al añadir un dispositivo) y de los resultados de escena. |
Cómo instalar Nagios en Gladys
- En Gladys, abre Integraciones: Nagios aparece en el catálogo junto a las integraciones nativas, con una insignia de comunidad.
- Haz clic en Instalar. Gladys descarga la imagen Docker (
ghcr.io/guim31/gladys-nagios:1.0.0), la ejecuta en un entorno aislado del núcleo y genera la interfaz de la integración (dispositivos, descubrimiento y configuración). - Abre la pantalla de Configuración de la integración, rellena los parámetros y guarda.
- También puedes instalarla directamente desde la URL de su repositorio: https://github.com/guim31/gladys-nagios.
Nagios requiere Gladys >=5.1.0. El catálogo de Gladys se actualiza cada hora, así que una nueva versión está disponible como máximo una hora después de publicarse.
¿Todavía no usas Gladys? Es gratuito y de código abierto: sigue la guía de instalación para empezar.
Sobre las integraciones externas
Nagios es una integración externa: una integración comunitaria empaquetada como contenedor Docker y publicada en GitHub. Gladys la instala con un clic y la ejecuta en un entorno aislado del núcleo. La publica y mantiene guim31, no el equipo principal de Gladys.
- Explorar todas las integraciones, nativas y de la comunidad
- Crear y publicar tu propia integración externa
- Código fuente en GitHub — fuente de esta documentación