GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿realizar un seguimiento continuo del estado del servicio?

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
    nagios

    y un restart archivo que provoca un reinicio automático incondicional:

    #!/bin/sh
    exec true

    Solo 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?

Linux
  1. Servicio del sistema operativo Linux 'dhcpd'

  2. Servicio de sistema operativo Linux 'nfs'

  3. Servicio del sistema operativo Linux 'microcode_ctl'

  4. Servicio de sistema operativo Linux 'NetFS'

  5. Servicio de sistema operativo Linux 'ldap'

Servicio de sistema operativo Linux 'mapa de puertos'

Servicio de SO Linux 'auditoría'

Servicio del sistema operativo Linux 'hplip'

Servicio del sistema operativo Linux 'irqbalance'

Servicio del sistema operativo Linux 'rpcgssd'

Servicio del sistema operativo Linux 'yum-updatesd'