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.
- 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ó.
- 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
:
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
:
Exemple en application.yml
:
Aquesta configuració habilita tots els punts finals d'Actuator.
- 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:
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." } }
- Exercicis pràctics
Exercici 1: Configurar i explorar Actuator
- Afegiu la dependència de Spring Boot Actuator al vostre projecte.
- Configureu els punts finals d'Actuator per estar disponibles.
- Accediu als punts finals
/actuator/health
,/actuator/metrics
i/actuator/info
i observeu la informació proporcionada.
Exercici 2: Personalitzar la informació de salut
- Creeu un component de salut personalitzat que comprovi l'estat d'una base de dades fictícia.
- Afegiu el component de salut personalitzat a la configuració de salut d'Actuator.
- 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
-
Afegiu la dependència al
pom.xml
:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
-
Configureu els punts finals a
application.properties
:management.endpoints.web.exposure.include=*
-
Accediu als punts finals:
http://localhost:8080/actuator/health
http://localhost:8080/actuator/metrics
http://localhost:8080/actuator/info
Solució a l'Exercici 2
-
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 } }
-
Afegiu el component de salut personalitzat a la configuració de salut d'Actuator (ja està fet automàticament amb l'anotació
@Component
). -
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
- 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