Script para monitorear los servicios en un servidor

por | 23 febrero, 2016

cerosyunos

Pequeñas o grandes corporaciones cuentan con una gran cantidad de servicios en producción en servidores, que pudiera pensarse imposible de monitorear de forma manual.

Existen gran cantidad de herramientas en internet para ello, entre ellas nagios, una de las mas completas, pero en esta ocasión decidimos desarrollar un script que permite monitorear e iniciar el servicio que le indiquemos.

El script, es muy sencillo de entender, los servicios que deseamos monitorizar se indican en un archivo de texto, validando el servicio que deseamos controlar en nuestro servidor, para el caso de distribuciones basadas en Debian, como es Ubuntu, entramos al directorio /etc/init.d y determinamos cuales queremos chequear.

Se obtiene la fecha y hora del sistema, para registrar en un log que maneja el script, las incidencias del servicio.

¿Pero, que hacer si el servicio esta inactivo?. Al momento de determinar el servicio inactivo, se inicia y se envía un email al administrador, para que valide el error puntual que origino la caída del servicio.

He aquí, el código fuente del script:

#! / bin / bash
FILE=servicios.txt
TIME='date +%Y-%m-%d_%H-%m-%S'

while read linea; do

if ps ax | grep -v grep | grep $linea > /dev/null
    then
        echo "Servicio $linea esta ejecutandose"
    else
        echo "El Servicio $linea ,estaba DETENIDO, a las $TIME" >> Servicios.log
    service $linea start
    echo "Validar el estado del servicio, si esta down, puede ser iniciado con:  service $linea status, estaba down a las $TIME" | mail -s "Servicio $linea Detenido " usuario@dominio.com
fi

done < "$FILE"

 

Debemos tomar en cuenta,  crear el archivo de servicios.txt en la misma ruta donde coloquemos el script, por aquello del tema de las rutas.

El archivo de Servicios.log podemos mudarlo a la ruta que deseamos, por solo mencionar /var/log/, para este caso, quedó en la misma ruta del script.

Ahora solo queda colocarlo en un cron. Al ser un proceso de corto tiempo de procesamiento del servidor, podemos programarlo cada 3 minutos, para que valide el estado del servicio. ¿ Como hacerlo ? editamos el vim /etc/crontab y agregamos la siguiente linea.

*/3 * * * * /ruta/del/script/script.sh

14 pensamientos en “Script para monitorear los servicios en un servidor

  1. Anónimo

    No sé si «monitorear» será una nueva variante del toreo. Puede que sea algo así como torear monos. En cualquier caso ese bonito «palabro» no viene en el diccionario.

    La palabra correcta que respalda la RAE es MONITORIZAR.

    Responder
      1. Anónimo

        No soy un «listo de la gramática». No hace falta ponerse así, hombre.

        Como bien dice el segundo enlace de la RAE que refieres, en España solo se usa el término «monitorizar», siendo el término «monitorear» exclusivo en América.

        Mi error ha sido dar por hecho que este era un blog de España. Te pido disculpas por ello.

        Saludos.

        Responder
        1. tannhausser

          Es un blog en español…no de España (ni siquiera está alojado ahí) y bueno..lo lee gente de todas partes.

          Entiendo que te llamará la atención el termino (vale, reconozco que yo también tenía dudas la primera vez que lo vi 🙂 ), pero da la casualidad de que en esta ocasión no escribí yo el post, sino @Anger que si es de origen latinoamericano y de vez en cuando colabora en el blog, con este tipo de post más técnicos.

          Un saludo, disculpas aceptadas y seguro que tendrás ocasión de corregirme muchas más veces (lo de revisar la ortografía como que lo llevo mal)

          Responder
          1. Ainumortis

            La gente que se dedica a corregir la ortografía hasta la más mínima forma son las más odiosas, no porque tengan razón, puede que si, puede que no, pero les pierde su prepotencia y egocentrismo, hay cientos de palabras que no se feflejan en la Rae, pero si todo el mundo lo usa así y todo el mundo lo entiende respetando el principio de la comunicación de un lenguaje estas tarde o temprano se añaden, así que la Rae no es ni la biblia ni santo grial de lo correcto para aquellos que andan queriendo tener la razón.

            Además considero ese detalle offtopic porque hablamos de una script para la terminal y no de la ortografía, llega a ser mi blog y lo baneo.

    1. Anger

      Oye, Oye, Oye, el script funciona, con o sin la Horrografia, al final importa que funcione, no esta de mas que mejoremos en la ortografía y «aceptada tu critica», pero me tomo el día para un aporte que sea funcional y de ayuda para la comunidad. Y somos criticados por una palabra. Te sale por la derecha un rm -f

      Responder
  2. EV

    saludos; Buen post compañero; solo quería consultarte para salir de dudas, cuando tu indicas que tenemos que colocar los servicios a verificar en el archivo .txt se colocaria solo el nombre del servicio, como por ejemplo sshd named ???

    Responder
    1. Anger

      Hola, buen día, en efecto como comentas, se debe de colocar cada servicio, linea por linea, en el archivo .txt

      Responder
    1. rawBasic

      Sí, lo vendieron. Y estos nuevos no es la primera vez que roban descaradamente, copiando hasta el output en la terminal textual, cambiando sólo unas palabras del post. No dan crédito, y cuando se los comentas te borran los comentarios.

      Otro caso el cual les dejé un comentario y fue borrado fue:
      http://blog.desdelinux.net/reduce-el-peso-de-las-imagenes-desde-la-terminal/
      robo textual de:
      https://lamiradadelreplicante.com/2016/04/06/optimizar-imagenes-desde-la-terminal-en-linux/

      Asco dan. Saludos.

      Responder
      1. tannhausser

        Deberían cambiarse el nombre y llamarse DesdeCopyPasteLinux. Aunque eso también les queda grande, no saben ni copiar…

        Responder
      2. linuxmanr4

        Es una verdadera lástima, pero era de esperarse. Ahora son redactores los que escriben las notas, una búsqueda en internet, cambiar dos o tres palabras y listo ¡a cobrar!.

        Responder
  3. Esteban Vallejo

    [root@bllniqpge04 script]# sh script.sh
    script.sh: line 4: $’\r’: command not found
    script.sh: line 16: syntax error near unexpected token `done’
    script.sh: line 16: `done < "$FILE"'

    Responder

Responder a tannhausserCancelar respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.