Necesito monitorear el estado de nagios
service (Porque, cada vez que realizo cambios en la configuración y aplico la nueva configuración, encontraría nagios
servicio detenido).
Si se encuentra en estado "detenido", debería iniciarse automáticamente.
Intenté escribir un pequeño script de shell y lo agregué a cron
, pero descubrió que el script se ejecutaría siempre, incluso si el servicio se está ejecutando. El guión es:
#!/bin/bash
service nagios status | grep running
if [ $? -ne 0 ]
then
service nagios start
fi
Cada vez que el servicio está en estado "detenido", la salida de service nagios status
muestra No lock file found in /usr/local/nagios/var/nagios.lock
. ¿Debo monitorear /usr/local/nagios/var/nagios.lock
? archivo usando inotify-tools
o hay alguna alternativa mejor a esto?
Respuesta aceptada:
¿Hay alguna alternativa mejor a esto?
Sí. Use un administrador de servicios adecuado y basura que /etc/init.d/nagios
texto. En el mejor de los casos, está utilizando un System 5 rc
script en modo de compatibilidad en algo como upstart o systemd, en cuyo caso no obtendrá algunos de los mecanismos útiles de administración de servicios que no están disponibles en el modo de compatibilidad como no lo hizo esta persona en AskFedora. En el peor de los casos, está ejecutando las cosas bajo el Sistema 5 rc
y realmente no tiene la esperanza de hacer una gestión de servicios medianamente decente con ese script.
Hay muchos sistemas de gestión de servicios disponibles. No voy a entrar en los detalles de su instalación, porque eso va mucho más allá del alcance de esta respuesta. En su lugar, me centraré simplemente en cómo hacer que el demonio nagios funcione dentro de ellos.
Las daemontools
familia
Las daemontools
la familia de conjuntos de herramientas de gestión de servicios incluye:
- Las herramientas diabólicas de Dan Bernstein
- Freedt de Adam Sampson
- Repetición de daemontools de Bruce Guenter
- S6 de Laurent Bercot
- Mi comida
- La runita de Gerrit Pape
- El perpetrador de Wayne Marshall
Lo más importante que necesita aquí es un programa que se convierta en el demonio. Para nagios, este es un 2 o 3 líneas. Uno puede mezclar y combinar los conjuntos de herramientas. Aquí hay algunas líneas de 2 líneas adecuadas, usando varios conjuntos de herramientas diferentes:
- Una
run
archivo con el conjunto de herramientas nosh:#!/bin/nosh
setuidgid nagios
nagiosy un
restart
archivo que provoca un reinicio automático incondicional:#!/bin/sh
exec trueSolo por diversión, agregué un paquete de servicios preconstruido para nagios to nosh, que estará disponible en la versión 1.13, que es más o menos esto con un par de adornos estándar, como información de dependencia.
- Una
run
archivo con el conjunto de herramientas runit:#!/bin/sh -e
exec chpst -u nagios nagios - Una
run
archivo con el conjunto de herramientas s6:#!/command/execlineb -P
s6-setuidgid nagios
nagios - Una
run
archivo con los conjuntos de herramientas daemontools, daemontools-encore o freedt:#!/bin/sh -e
exec setuidgid nagios nagios - Un
rc.main
archivo con el conjunto de herramientas perp:#!/bin/sh -e
exec 2>&1
start() { exec runuid nagios nagios; }
reset() { exit 0; }
eval "$1" "[email protected]"
Este programa para ejecutar el servicio individual es lo único particular de este servicio. El resto no varía de un servicio a otro. Uno consulta el estado del servicio de la misma manera en todos los servicios, con un comando como svstat
. Habilitar y deshabilitar el inicio automático en el arranque es una cuestión de enlaces simbólicos. Iniciar y detener manualmente un servicio es una cuestión de svc -u
y svc -d
. Y así sucesivamente.
nosh tiene varias correcciones si las necesita, como systemctl status
y initctl status
. Es importante destacar que tiene un service
shim, así que si realmente como service nagios status
puedes seguir usándolo. ☺ Pero olvídese de toda esa desagradable mirada a un negocio de archivos de bloqueo, y toda la noción de monitoreo ad-hoc. No se trata de nada de eso con un administrador de servicios adecuado en el lugar. El administrador de servicios realiza el monitoreo y realiza un seguimiento adecuado del proceso del demonio.
sistema
No hay un archivo de unidad de servicio systemd para nagios que viene en la caja. Pero mucha gente ya ha escrito las suyas propias:
- El
nagios.service
de David Kowis para Source Mage Linux nagios.service
agregado al paquete nagios de Arch Linux en 2012
systemd no viene con un shim service
comando, pero algunas distribuciones de Linux tienen uno de otra fuente.
Lecturas adicionales
- ¿Cómo establecer un seguimiento adecuado de mis servicios de forma automatizada? ¿Entonces si uno falla, se reinicia automáticamente sobre la marcha?