11Mar

Problema

En el caso que tengamos un conjunto de servidores que tengamos que tener monitorizados y necesitemos controlar que los puertos 22 para conectarnos por SSH y los puertos típicos de email están abiertos y no están fallando podemos usar una instancia de Jenkins para auomatizar esta tarea y que nos envíe un correo en caso de que falle alguna de las pruebas.

Grupo de tareas

Primero creamos un proyecto vacío de tipo folder con el nombre port-check para tener estas tareas juntas en una misma carpeta:

Esto nos creará un espacio como el siguiente donde podemos añadir las tareas de comprobación de puertos

Creación de la tarea

Creamos una tarea con nombre server1-port-22 como Freestyle project, tal como se aprecia en la siguiente captura:

Ejecución cada 5 minutos

Dentro de la configuración de la tarea vamos a programarla para que se ejecute cada 5 minutos. Esto podemos conseguirlo añadiendo en «Build periodically» la configuración: H/5 * * * *

Build

Añadimos un paso de ejecución de shell con el siguiente comando (tendremos que tener instalado nmap en la misma máquina en la que se encuentre Jenkins) con la correspondiente de la IP que queremos controlar:

nmap -p 22 11.11.22.33

Post Build Actions

Aqui es importante tener dos acciones. La primera un check del output de consola con el plugin «Text Finder». Buscando la siguiente cadena de texto en la modalidad «Succeed if found»:

22/tcp.*open.*ssh

Y una segunda acción que nos envíe un correo con el plugin «E-mail notification» en caso de que falle la ejecución.

Resultado

Repetimos este proceso para todos nuestros servidores y todos los puertos que queremos controlar que se mantengan abiertos y tendremos unos «chivatos» instalados comprobando los puertos cada 5 minutos y avisándonos por correo si algo falla (caída del servidor, colapso, etc.)

Leave a comment