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/health
Proporciona informació sobre l'estat de l'aplicació.
Exemple de resposta:
/actuator/metrics
/actuator/metrics
Proporciona mètriques sobre el rendiment de l'aplicació.
Exemple de resposta:
/actuator/info
/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:
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/metrics
i/actuator/info
. - Personalitza l'endpoint
/actuator/info
per 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