Saltar al contenido principal

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

Integración Nagios para Gladys Assistant

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.cgi y objectjson.cgi llegaron 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ñaden http:// y /nagios salvo que introduzca otros (/nagios4 con 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ónValor
Host UP1 UP, 0 DOWN o UNREACHABLE; vacío mientras el host está PENDING
Servicios WARNINGnúmero de servicios WARNING
Servicios CRITICALnúmero de servicios CRITICAL
Servicios UNKNOWNnúmero de servicios UNKNOWN
Problemas sin gestionarproblemas de host y de servicios ni reconocidos ni en mantenimiento
Host reconocido1 mientras el host está DOWN o UNREACHABLE y su problema reconocido
En mantenimiento1 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_names está 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. localhost es 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_hosts y authorized_for_all_services en cgi.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_commands y authorized_for_all_service_commands en cgi.cfg; «Nagios no acepta comandos externos»: ponga check_external_commands=1 en nagios.cfg y 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ámetroTipoObligatorioDescripción
Su Nagios CoresectionNoNagios 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ónstringSíLa dirección de la interfaz web de Nagios; http:// y /nagios salvo que introduzca otros.
Usuario webstringSíUn usuario de htpasswd.users, con el que inicia sesión en la interfaz web de Nagios.
ContraseñasecretSíSu contraseña. Mejor un usuario dedicado: concédale solo los permisos indicados arriba.
Grupos de hosts (opcional)stringNoNombres de grupos de hosts de Nagios (hostgroup_name), separados por comas: se conserva un host de uno de ellos. Vacío: todos los hosts.
OpcionessectionNo
Intervalo de actualizaciónselectNoCon qué frecuencia se lee Nagios: tres peticiones a los CGI JSON cada vez.
Permitir reconocer desde escenasbooleanNoDesmarque para desactivar la acción de escena «Reconocer los problemas de un host».
Permitir comprobar ahora desde escenasbooleanNoDesmarque para desactivar la acción de escena «Comprobar un host ahora».
Aceptar certificados autofirmadosbooleanNoSolo para https:// con un certificado propio: entonces no se verifica.
Idioma de los nombresselectNoIdioma de los nombres de las funciones (fijados al añadir un dispositivo) y de los resultados de escena.

Cómo instalar Nagios en Gladys​

  1. En Gladys, abre Integraciones: Nagios aparece en el catálogo junto a las integraciones nativas, con una insignia de comunidad.
  2. 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).
  3. Abre la pantalla de Configuración de la integración, rellena los parámetros y guarda.
  4. 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.

Suscríbete a la newsletter de Gladys Assistant

Unos pocos correos al mes sobre nuevas versiones y novedades del proyecto. Enviados por Pierre-Gilles Leymarie, fundador del proyecto. Puedes darte de baja cuando quieras 🙂