Introducció

Spring Boot Actuator proporciona una sèrie de funcionalitats per monitoritzar i gestionar aplicacions Spring Boot en producció. Inclou una sèrie d'endpoints que permeten accedir a informació sobre l'estat de l'aplicació, mètriques, informació del sistema, i molt més.

Objectius d'aquest tema:

  • Entendre què és Spring Boot Actuator i per què és útil.
  • Aprendre a configurar Spring Boot Actuator en una aplicació.
  • Explorar els endpoints més comuns i com utilitzar-los.
  • Personalitzar i protegir els endpoints d'Actuator.

Què és Spring Boot Actuator?

Spring Boot Actuator és un conjunt de funcionalitats que ajuden a monitoritzar i gestionar aplicacions Spring Boot. Proporciona endpoints que exposen informació sobre l'aplicació, com ara mètriques, informació del sistema, estat de l'aplicació, etc.

Característiques clau:

  • Mètriques: Recopila dades sobre el rendiment de l'aplicació.
  • Health Checks: Proporciona informació sobre l'estat de l'aplicació.
  • Auditoria: Registra esdeveniments de seguretat.
  • Configuració: Exposa informació sobre la configuració de l'aplicació.

Configuració de Spring Boot Actuator

Pas 1: Afegir la dependència

Per començar a utilitzar Spring Boot Actuator, primer hem d'afegir la dependència al nostre projecte pom.xml (per a Maven) o build.gradle (per a Gradle).

Maven:

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

Gradle:

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

Pas 2: Configurar els endpoints

Per defecte, alguns endpoints d'Actuator estan desactivats per motius de seguretat. Podem activar-los i configurar-los al fitxer application.properties o application.yml.

application.properties:

management.endpoints.web.exposure.include=*

application.yml:

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

Explorant els Endpoints d'Actuator

Un cop configurat, podem accedir als endpoints d'Actuator a través de l'URL base /actuator. A continuació es mostren alguns dels endpoints més comuns:

  1. /actuator/health

Proporciona informació sobre l'estat de l'aplicació.

Exemple de resposta:

{
  "status": "UP"
}

  1. /actuator/metrics

Proporciona mètriques sobre el rendiment de l'aplicació.

Exemple de resposta:

{
  "names": [
    "jvm.memory.used",
    "jvm.gc.pause",
    "http.server.requests",
    ...
  ]
}

  1. /actuator/info

Proporciona informació personalitzada sobre l'aplicació. Aquesta informació es pot configurar al fitxer application.properties o application.yml.

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 de resposta:

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

Personalització i Seguretat dels Endpoints

Personalització

Podem personalitzar els endpoints d'Actuator per incloure o excloure informació específica. Per exemple, podem personalitzar l'endpoint /actuator/health per incloure informació sobre la base de dades.

application.properties:

management.endpoint.health.show-details=always
management.health.db.enabled=true

Seguretat

És important protegir els endpoints d'Actuator, especialment en entorns de producció. Podem configurar la seguretat dels endpoints utilitzant Spring Security.

Exemple de configuració de seguretat:

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
            .antMatchers("/actuator/**").authenticated()
            .and()
            .httpBasic();
    }
}

Exercici Pràctic

Objectiu:

Configurar Spring Boot Actuator en una aplicació Spring Boot i explorar els endpoints disponibles.

Passos:

  1. Crea una nova aplicació Spring Boot.
  2. Afegeix la dependència spring-boot-starter-actuator.
  3. Configura els endpoints d'Actuator al fitxer application.properties.
  4. Accedeix als endpoints /actuator/health, /actuator/metrics i /actuator/info.
  5. Personalitza l'endpoint /actuator/info per incloure informació sobre l'aplicació.
  6. Configura la seguretat dels endpoints utilitzant Spring Security.

Solució:

// Pas 1: Crear una nova aplicació Spring Boot (ja fet)

// Pas 2: Afegir la dependència (ja fet)

// Pas 3: Configurar els endpoints
// application.properties
management.endpoints.web.exposure.include=*

// Pas 4: Accedir als endpoints (utilitza el navegador o una eina com Postman)

// Pas 5: Personalitzar l'endpoint /actuator/info
// 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.

// Pas 6: Configurar la seguretat
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
            .antMatchers("/actuator/**").authenticated()
            .and()
            .httpBasic();
    }
}

Conclusió

Spring Boot Actuator és una eina poderosa per monitoritzar i gestionar aplicacions Spring Boot. Proporciona una sèrie d'endpoints que permeten accedir a informació crucial sobre l'aplicació, com ara mètriques, estat de l'aplicació, i molt més. A més, és altament configurable i es pot integrar fàcilment amb Spring Security per protegir els endpoints en entorns de producció.

En el següent tema, explorarem els perfils de Spring Boot i com utilitzar-los per gestionar diferents configuracions d'entorn.

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