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:
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:
application.yml:
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:
/actuator/health
/actuator/healthProporciona informació sobre l'estat de l'aplicació.
Exemple de resposta:
/actuator/metrics
/actuator/metricsProporciona mètriques sobre el rendiment de l'aplicació.
Exemple de resposta:
/actuator/info
/actuator/infoProporciona 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:
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:
- Crea una nova aplicació Spring Boot.
- Afegeix la dependència
spring-boot-starter-actuator. - Configura els endpoints d'Actuator al fitxer
application.properties. - Accedeix als endpoints
/actuator/health,/actuator/metricsi/actuator/info. - Personalitza l'endpoint
/actuator/infoper incloure informació sobre l'aplicació. - 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
- Què és Spring Boot?
- Configuració del teu entorn de desenvolupament
- Creant la teva primera aplicació Spring Boot
- Entenent l'estructura del projecte Spring Boot
Mòdul 2: Conceptes bàsics de Spring Boot
- Anotacions de Spring Boot
- Injecció de dependències a Spring Boot
- Configuració de Spring Boot
- Propietats de Spring Boot
Mòdul 3: Construint serveis web RESTful
- Introducció als serveis web RESTful
- Creant controladors REST
- Gestionant mètodes HTTP
- Gestió d'excepcions en REST
Mòdul 4: Accés a dades amb Spring Boot
- Introducció a Spring Data JPA
- Configuració de fonts de dades
- Creant entitats JPA
- Utilitzant repositoris de Spring Data
- Mètodes de consulta a Spring Data JPA
Mòdul 5: Seguretat a Spring Boot
- Introducció a Spring Security
- Configuració de Spring Security
- Autenticació i autorització d'usuaris
- Implementant autenticació JWT
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ó
- Optimització del rendiment
- Monitorització amb Spring Boot Actuator
- Utilitzant Prometheus i Grafana
- Gestió de registres i logs
