Tutoriales

Guía de uso de Spring Boot Admin Server

En una entrada anterior hemos visto en qué consistía el Spring Boot Actuator, y como añadirlo a nuestro servicio. Sin embargo, nos falta un medio para explotar toda esta información que nos ofrece, y para esto tenemos Spring Boot Admin.

Spring Boot Admin te ofrece un panel de control desde el que ver toda la información y métricas que te permite hacerlo de una manera visual y clara y fácilmente entendibles para el usuario. Además, te ofrece un sistema de notificaciones por Slack o correo electrónico para avisarte de caídas en los servicios, todo ello con una sencilla configuración en los servicios que desees monitorizar.

Cómo utilizarlo desde la Onesait Platform

Generar el módulo

En primer lugar, hay que generar los módulos necesarios haciendo uso del Initializr, seleccionando el módulo «onesait-app-monitoring » de la lista de módulos, e indicando cualquier nombre que te sirva para reconocerlo. Esto generará un archivo ZIP que contendrá un proyecto con el nombre indicado, que tienes que desechar, y una carpeta  onesait-app-monitoring donde encontrarás el módulo en cuestión en la subcarpeta backend. 

A la hora de subir el servicio a Git, recomendamos añadirlo a partir de la carpeta backend, es decir que la carpeta .git este en el interior de la carpeta «backend» generada junto con el «Readme» y la carpeta «sources».

Con esto ya tendrás un servicio listo para usarse y desplegarse en la maquina deseada.

CI

El módulo viene listo para su despliegue con el Dockefile, Jenkinsfile y demás ficheros para el CI; tan solo deberás realizar un cambio en el Jenkinsfile para cambiar el nombre de la imagen que se sube al registry. Si se utiliza el nombre por defecto puede darle el caso que la pisen con otra versión. 

Jenkinsfile

Tienes que modificar el stage de «build_img», modificando concretamente esta línea:

img = docker.build("${projectPom.artifactId}:${projectPom.version}", "-f docker/DockerFile ./target")

Una vez que tengas el nombre de la imagen cambiado y el pipeline, puedes crear tu imagen y despegarla en el Rancher. 

Rancher

Dentro del Rancher, realiza la configuración mediante variables de entorno, que son las siguientes: 

ADMIN_USER=<ADMIN_USERNAME> 

ADMIN_PASS=<ADMIN_PASSWORD>  

NOTIFY_SLACK_ENABLE=<SLACK_ENABLED>  

NOTIFY_SLACK_URL=<SLACK_URL> 

    NOTIFY_MAIL_ENABLE=<MAIL_ENABLE> 

    NOTIFY_MAIL_TO=<MAIL_TO> 
  • <ADMIN_USERNAME>: nombre de usuario con el que accederás al panel de control.
  • <ADMIN_PASSWORD>:  contraseña del usuario con el que accederás al panel de control.
  • <SLACK_ENABLED>: flag para activar las notificaciones del Slack.
  • <SLACK_URL>: URL de slack para enviar la notificación.
  • <MAIL_ENABLE>: flag para indicar si se quieren enviar notificaciones de correo electrónico.
  • <MAIL_TO>: lista de usuarios de correo electrónico que serán notificados; deben estar separados por coma.

Solo en el caso de haber activado las notificaciones de correo electrónico, debes configurarlo con el servidor SMTP: 

MAIL_HOST=smtp.gmail.com 
MAIL_PORT=587 
MAIL_USER= *** 
MAIL_PASS=*** 
MAIL_SMTP_AUTH=true 
MAIL_SMTP_TTLS_ENABLED=true 
MAIL_SMTP_TTLS_REQUIRED=true 
MAIL_SMTP_TIMEOUT=5000 
MAIL_SMTP_CONN_TIMEOUT=5000 
MAIL_SMTP_WRITE_TIMEOUT=5000 
MAIL_SMTP_FROM=*** 

Como ejemplo, se ha dado una configuración que funciona con el SMTP gratuito de Google. 

Nginx

Por último, para exponer el panel de control, una vez desplegada la imagen en el Rancher, debes configurar el Nginx con lo siguiente: 

nginx.conf

# Monitoring

location /app-monitoring {
   proxy_pass  http://app-monitoring.Monitoring:18100;
   proxy_set_header Host $http_host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-request_uri "$request_uri";
   proxy_set_header X-Forwarded-For   $remote_addr;
   proxy_set_header X-Forwarded-Proto $scheme;
   proxy_set_header X-Forwarded-Port $server_port;
   proxy_set_header X-Forwarded-By $server_addr:$server_port;
}

Aquí, tendrás que cambiar el nombre de servicio y stack en el proxy_pass por los tuyos 

A continuación, vamos a mostrar unas capturas para observar el panel de control con dos módulos internos: Initializr y Extrautilities. Además, se describe en concreto algunas de las funcionalidades comentadas para el caso del Initializr.

Pantalla principal con el listado de servicios, su estado y el tiempo que llevan arrancados: 

Información general del servicio: 

Ver métricas como número de llamadas a cada endpoint y tiempos (entre otras): 
Registro en tiempo real de trazas HTTP:
Registro de eventos de auditoria como fallos de autorización:
Notificaciones por slack:

Esperamos que te haya parecido interesante, y si tienes cualquier duda, no dejes de preguntarnos en los comentarios.

Imagen de cabecera: modificada de Damian Zaleski en Unsplash.

✍🏻 Author(s)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *