Guía de uso de Spring Boot Actuators
Un Actuator consiste en funcionalidades ya predefinidas utilizadas en producción por tu aplicación. Permite monitorizar la aplicación, recopilación de métricas, comprender el tráfico o entender el estado de nuestra base de datos de manera trivial.
El principal beneficio de esta librería es que se puede obtener herramientas a nivel de producción sin tener que implementar las funcionalidades por ti mismos.
Un Actuator se usa principalmente para exponer información operativa sobre la aplicación una vez está en ejecución: estado, métricas, información, volcado, entorno, etc. Para su uso, utiliza puntos finales HTTP o beans JMX para permitir la interacción con el Actuator. En el caso de esta guía, se implementa mediante puntos finales HTTP.
Una vez instaurada la dependencia en el proyecto, varios puntos finales están disponibles para ser usados. A continuación vamos a explicar como implantarlo y utilizarlo en tus proyectos.
¿Cómo lo implemento?
En primer lugar, hay que añadir las dependencia en nuestro proyecto Spring Boot:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
Con esto ya tienes todas la funcionalidades disponibles en el momento en el que lances tu aplicación.
Una vez lanzada, se generarán automáticamente todos los endpoints bajo la ruta «/{aplicación}/actuator»».
Extensión de endpoints predefinidos
Una de las funcionalidades que ofrece Spring Boot Actuators es la posibilidad de extender los endpoints predefinidos que ya vienen ofrecidos por la propia librería.
Para ello, se puede seguir este ejemplo en el que se extiende el endpoint «/health»:
@Component
public class HealthCheck implements HealthIndicator {
@Override
public Health health() {
//Llamadas a diferentes métodos que nos devuelven el estado de nuestros servicios
Boolean genStatus=isRunningServiceGenerator();
Boolean libStatus=isRunningServiceLibraries();
Boolean modStatus=isRunningServiceModules();
HashMap<String,String> details=new HashMap<String,String> ();
details.put("Libraries Service", libMsg);
details.put("Modules Service", modMsg);
details.put("Generator Service", genMsg);
//En el caso de que alguno de nuestros servicios no esté en un estado correcto, se indicará que el servicio no está correcto
if (!genStatus || !libStatus || !modStatus)
return Health.down().withDetails(details).build();
return Health.up().withDetails(details).build();
}
}
Creación de un nuevo endpoint
Otra de las posibilidades que se nos ofrece con los Actuators es la creación de endpoints diseñados y personalizados por los usuarios.
Para ello se puede seguir este ejemplo:
@Component
public class CustomEndpoint implements Endpoint<List<String>> {
@Override
public String getId() {
return "customEndpoint";
}
@Override
public boolean isEnabled() {
return true;
}
@Override
public boolean isSensitive() {
return true;
}
@Override
public List<String> invoke() {
// Custom logic to build the output
List<String> messages = new ArrayList<String>();
messages.add("This is message 1");
messages.add("This is message 2");
return messages;
}
}
Configuración en Rancher
Dado que los Actuators te ofrecen información sobre el estado en el que se encuentran tus aplicaciones, puedes usarla para gestionar el control de ellas.
Dentro de Rancher, al desplegar o actualizar nuestros servicios, existe una pestaña llamada «Health Check» con la cual se pueden establecer comprobaciones de estado de la aplicación para que, en caso de tener muchos errores, pueda reiniciarse automáticamente o marcarse para indicar a los desarrolladores que no se encuentra en un estado óptimo.
Utilizando el endpoint generado por Spring Boot Actuators, puedes establecer una política como la siguiente:

Como puedes ver, configurar Spring Boot Actuators es bastante rápido y sencillo, y las posibilidades que aporta son muchas.
Esperamos que os haya parecido interesante y, si tenéis cualquier duda, no dudéis en dejarnos un comentario.
Pingback: Guía de uso de Spring Boot Admin Server – Onesait Platform Community