Advertisements

Continued from:

Health Check

Cuando aumenta la cantidad de servicios, se vuelve más complejo detectar y manejar si otras instancias de servicios se ejecutan correctamente o no. Una solución es que cada servicio proporcione un control de su estado y el estado de sus componentes.

Para crear comprobaciones de estado con MicroProfile, solo necesitamos crear una clase que implemente desde HealthCheck y anule el método HealthCheckResponse call(). Además, la clase requiere al menos una de las anotaciones: @Liveness o @Readiness. Codificaremos la lógica que comprueba que el componente de nuestro servicio funciona correctamente en el método de llamada.

Advertisements
import javax.enterprise.context.ApplicationScoped;
import org.eclipse.microprofile.health.HealthCheck;
import org.eclipse.microprofile.health.HealthCheckResponse;
import org.eclipse.microprofile.health.HealthCheckResponseBuilder;
import org.eclipse.microprofile.health.Liveness;
import org.eclipse.microprofile.health.Readiness;

@ApplicationScoped
@Liveness
@Readiness
public class DatabaseHealthCheck implements HealthCheck {

   @Override
   public HealthCheckResponse call() {
    	HealthCheckResponseBuilder responseBuilder = HealthCheckResponse.named("database");
    	try {
        	return responseBuilder.up()
                	.withData("name", "my_dummy_db")
                	.build();
    	}catch(Exception ex){//SqlException
        	return responseBuilder.down().build();
    	}
  }
}

Todos nuestros “health checks” están disponibles en la URL: http://localhost:8080/health

{  
 "status":"UP",
  "checks":[            
      {         
         "name":"database",
         "status":"UP",
         "data":{
            "Name":"my_dummy_db"
      }]   
}

Recomiendo agregar las siguientes dependencias que brindan algunas verificaciones de estado genéricas para que pueda conocer el uso de memoria y sub-procesos de nuestra aplicación, y publicar una interfaz de usuario de tablero simple con un resumen de nuestras verificaciones de estado. Esa interfaz de usuario está disponible en: http://localhost:8080//health-ui/:

<dependency>
    <groupId>org.microprofile-ext.health-ext</groupId>
    <artifactId>healthprobe-jvm</artifactId>
    <version>1.0.5</version>
    <scope>runtime</scope>
</dependency>
     
<dependency>
    <groupId>org.microprofile-ext.health-ext</groupId>
    <artifactId>health-ui</artifactId>
    <version>1.0.5</version>
    <scope>runtime</scope>
 </dependency>

http://localhost:8080/stock-service/health-ui/

MicroProfile Health Check
Table of contents:

Advertisements

Pages: 1 2 3 4 5 6 7 8

Leave a Reply

Your email address will not be published. Required fields are marked *