Spring Boot Actuator és una eina poderosa que proporciona funcionalitats de monitorització i gestió per a les aplicacions Spring Boot. En aquesta secció, aprendrem com utilitzar Spring Boot Actuator per monitoritzar la nostra aplicació, veure mètriques, informació del sistema i molt més.

  1. Introducció a Spring Boot Actuator

Spring Boot Actuator ofereix una sèrie de punts finals (endpoints) que ens permeten accedir a informació sobre l'estat de l'aplicació, mètriques, informació del sistema, etc. Alguns dels punts finals més comuns són:

  • /actuator/health: Proporciona informació sobre l'estat de l'aplicació.
  • /actuator/metrics: Mostra mètriques detallades de l'aplicació.
  • /actuator/info: Proporciona informació personalitzada sobre l'aplicació.

  1. Configuració de Spring Boot Actuator

2.1. Afegint la dependència

Per començar a utilitzar Spring Boot Actuator, primer hem d'afegir la dependència al nostre projecte. Si estem utilitzant Maven, afegirem el següent al nostre pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Si estem utilitzant Gradle, afegirem el següent al nostre build.gradle:

implementation 'org.springframework.boot:spring-boot-starter-actuator'

2.2. Configurant els punts finals

Per defecte, alguns punts finals d'Actuator estan deshabilitats o restringits. Podem configurar quins punts finals volem habilitar al fitxer application.properties o application.yml.

Exemple en application.properties:

management.endpoints.web.exposure.include=*

Exemple en application.yml:

management:
  endpoints:
    web:
      exposure:
        include: "*"

Aquesta configuració habilita tots els punts finals d'Actuator.

  1. Explorant els punts finals d'Actuator

3.1. Punt final de salut (/actuator/health)

Aquest punt final proporciona informació sobre l'estat de l'aplicació. Per exemple, podem accedir a http://localhost:8080/actuator/health i veure una resposta com aquesta:

{
  "status": "UP"
}

Podem personalitzar la informació de salut afegint components de salut personalitzats.

3.2. Punt final de mètriques (/actuator/metrics)

Aquest punt final mostra mètriques detallades de l'aplicació. Per exemple, podem accedir a http://localhost:8080/actuator/metrics i veure una llista de totes les mètriques disponibles.

Podem obtenir detalls d'una mètrica específica accedint a http://localhost:8080/actuator/metrics/{nom_de_la_mètrica}. Per exemple, http://localhost:8080/actuator/metrics/jvm.memory.used mostrarà informació sobre la memòria utilitzada per la JVM.

3.3. Punt final d'informació (/actuator/info)

Aquest punt final proporciona informació personalitzada sobre l'aplicació. Podem afegir informació personalitzada al fitxer application.properties o application.yml.

Exemple en application.properties:

info.app.name=My Spring Boot Application
info.app.version=1.0.0
info.app.description=This is a sample Spring Boot application.

Exemple en application.yml:

info:
  app:
    name: My Spring Boot Application
    version: 1.0.0
    description: This is a sample Spring Boot application.

Accedint a http://localhost:8080/actuator/info, veurem la informació personalitzada:

{
  "app": {
    "name": "My Spring Boot Application",
    "version": "1.0.0",
    "description": "This is a sample Spring Boot application."
  }
}

  1. Exercicis pràctics

Exercici 1: Configurar i explorar Actuator

  1. Afegiu la dependència de Spring Boot Actuator al vostre projecte.
  2. Configureu els punts finals d'Actuator per estar disponibles.
  3. Accediu als punts finals /actuator/health, /actuator/metrics i /actuator/info i observeu la informació proporcionada.

Exercici 2: Personalitzar la informació de salut

  1. Creeu un component de salut personalitzat que comprovi l'estat d'una base de dades fictícia.
  2. Afegiu el component de salut personalitzat a la configuració de salut d'Actuator.
  3. Accediu al punt final /actuator/health i verifiqueu que la informació de salut inclou l'estat de la base de dades fictícia.

Solucions

Solució a l'Exercici 1

  1. Afegiu la dependència al pom.xml:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  2. Configureu els punts finals a application.properties:

    management.endpoints.web.exposure.include=*
    
  3. Accediu als punts finals:

    • http://localhost:8080/actuator/health
    • http://localhost:8080/actuator/metrics
    • http://localhost:8080/actuator/info

Solució a l'Exercici 2

  1. Creeu un component de salut personalitzat:

    import org.springframework.boot.actuate.health.Health;
    import org.springframework.boot.actuate.health.HealthIndicator;
    import org.springframework.stereotype.Component;
    
    @Component
    public class DatabaseHealthIndicator implements HealthIndicator {
    
        @Override
        public Health health() {
            // Simulació de la comprovació de l'estat de la base de dades
            boolean databaseIsUp = checkDatabaseHealth();
            if (databaseIsUp) {
                return Health.up().withDetail("database", "Available").build();
            } else {
                return Health.down().withDetail("database", "Not Available").build();
            }
        }
    
        private boolean checkDatabaseHealth() {
            // Simulació de la lògica de comprovació de l'estat de la base de dades
            return true; // Suposem que la base de dades està disponible
        }
    }
    
  2. Afegiu el component de salut personalitzat a la configuració de salut d'Actuator (ja està fet automàticament amb l'anotació @Component).

  3. Accediu al punt final http://localhost:8080/actuator/health i verifiqueu la informació de salut:

    {
      "status": "UP",
      "components": {
        "database": {
          "status": "UP",
          "details": {
            "database": "Available"
          }
        }
      }
    }
    

Conclusió

En aquesta secció, hem après com utilitzar Spring Boot Actuator per monitoritzar la nostra aplicació. Hem vist com configurar Actuator, explorar els punts finals disponibles i personalitzar la informació de salut. Amb aquestes eines, podem obtenir una visió detallada de l'estat i el rendiment de la nostra aplicació, la qual cosa ens ajuda a mantenir-la en bon estat i a detectar problemes de manera proactiva.

Curs de Spring Boot

Mòdul 1: Introducció a Spring Boot

Mòdul 2: Conceptes bàsics de Spring Boot

Mòdul 3: Construint serveis web RESTful

Mòdul 4: Accés a dades amb Spring Boot

Mòdul 5: Seguretat a Spring Boot

Mòdul 6: Proves a Spring Boot

Mòdul 7: Funcions avançades de Spring Boot

Mòdul 8: Desplegant aplicacions Spring Boot

Mòdul 9: Rendiment i monitorització

Mòdul 10: Millors pràctiques i consells

© Copyright 2024. Tots els drets reservats