Ya sabemos que Spring Boot Actuator nos proporciona un conjunto cómodo y amplio de métricas. Sin embargo, si trabajas en un proyecto grande, exponer métricas únicamente a través de los endpoints de Actuator puede quedarse corto. En sistemas reales es importante centralizar la monitorización de todos los microservicios, presentar los datos visualmente de forma útil y reaccionar rápido ante los problemas.
Ahí es donde entran en escena Prometheus — sistema para recopilar y almacenar métricas, y Grafana — herramienta para la visualización de datos. Prometheus se integra con Actuator para obtener las métricas, y Grafana ayuda a visualizarlas en dashboards.
Estas herramientas te permitirán:
- Consolidar la monitorización de todas las aplicaciones en un solo lugar.
- Rastrear tendencias de rendimiento a largo plazo.
- Recibir notificaciones sobre fallos o superación de umbrales críticos.
Así que — abróchate el cinturón — ¡nos vamos al mundo de las integraciones!
Configuración de Prometheus
Instalación de Prometheus
Para empezar, necesitamos instalar Prometheus. Si aún no lo tienes, puedes usar Docker para desplegarlo rápidamente:
docker run -d --name=prometheus --network=host prom/prometheus
Preparación de la aplicación Spring Boot
Prometheus recoge métricas a través del endpoint /actuator/prometheus. Para que ese endpoint esté disponible, necesitamos añadir la librería Micrometer Prometheus a nuestra aplicación.
En pom.xml añade la siguiente dependencia:
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.10.3</version>
</dependency>
En Gradle se vería así:
implementation 'io.micrometer:micrometer-registry-prometheus:1.10.3'
Después, en application.properties indica que el endpoint de Prometheus debe estar habilitado:
management.endpoints.web.exposure.include=health,info,prometheus
Al arrancar la aplicación deberías ver que el endpoint /actuator/prometheus ahora está disponible.
2.3 Configuración de Prometheus para recoger métricas
Ahora que el endpoint está configurado, hay que decirle a Prometheus de dónde tiene que recoger las métricas. Para ello, en el archivo de configuración prometheus.yml añade tu servicio Spring Boot en la lista de targets:
scrape_configs:
- job_name: 'spring-boot-app'
scrape_interval: 5s
static_configs:
- targets: ['localhost:8080']
labels:
service: 'my-spring-boot-app'
Haz una pausa y comprueba: si Prometheus se ha conectado correctamente, podrás ver las métricas entrando en http://localhost:9090.
3. ¿Por qué Grafana?
Aunque Prometheus es bueno para recopilar datos, su interfaz no es especialmente amigable. Para la visualización usaremos Grafana — una herramienta que proporciona dashboards interactivos y bonitos. Con Grafana podrás:
- Crear dashboards con gráficos, histogramas, tablas y otros tipos de visualización.
- Configurar alertas (por ejemplo, cuando se supere un umbral de uso de CPU).
- Analizar datos en intervalos desde segundos hasta meses.
Configuración de Grafana
Instalación de Grafana
Si todavía no tienes Grafana, de nuevo es cómodo usar Docker:
docker run -d -p 3000:3000 grafana/grafana
Grafana estará disponible en http://localhost:3000.
Usuario y contraseña por defecto: admin/admin.
Conectar Prometheus a Grafana
- Entra en la interfaz de Grafana.
- Ve a Configuration > Data Sources.
- Pulsa "Add data source" y selecciona Prometheus.
- En el campo URL escribe la dirección de tu instancia de Prometheus (por ejemplo,
http://localhost:9090). - Pulsa Save & Test para asegurarte de que la conexión funciona.
Creación del dashboard
Ahora vamos a crear el primer dashboard para monitorizar, por ejemplo, el uso de memoria y la carga de CPU.
Paso 1: crea un nuevo dashboard 1. Ve a Dashboards y selecciona New Dashboard. 2. Pulsa Add New Panel para añadir un gráfico.
Paso 2: configura el panel 1. En el campo Query introduce una consulta en PromQL (el lenguaje de consultas de Prometheus). Por ejemplo:
process_cpu_usage
Esta consulta mostrará la carga de CPU de nuestra aplicación.
- Elige el tipo de gráfico (línea, histograma, etc.) y otros parámetros.
- Añade otro panel para mostrar el uso de memoria:
jvm_memory_used_bytes - Guarda los cambios.
Paso 3: visualiza el dashboard Ahora puedes disfrutar de una visualización agradable. Aquí tienes un ejemplo de cómo podría verse:
+------------------------------------+
| Memory Usage | CPU Usage |
+------------------------------------+
| JVM: 512 MB | CPU: 12% |
| ...dynamic graphs...| ...updates...|
| | |
+------------------------------------+
5. Configuración de alertas
Grafana permite configurar alertas para que, al alcanzar valores críticos, se envíen notificaciones (por ejemplo, por email o a Slack). Así se hace:
- Abre cualquier panel del dashboard.
- Haz clic en el panel y selecciona Edit > Alerts.
- Añade una nueva política de alertas. Por ejemplo, crea una regla: si
process_cpu_usage > 80%, entonces enviar una notificación. - Configura el endpoint para las notificaciones (por ejemplo, email o Slack).
6. Ejercicio práctico
Para entender mejor el proceso, haz la siguiente tarea:
- Configura Prometheus para recoger las métricas de tu aplicación Spring Boot.
- Conecta Grafana a Prometheus y crea un dashboard con dos paneles:
- Uso de memoria JVM.
- Carga de CPU.
- Configura una política de alertas para recibir notificaciones cuando la carga de CPU supere el 90%.
Ejemplo de resultado: tu dashboard de Grafana con gráficas en vivo de las métricas.
Ahora que tienes la integración entre Spring Boot Actuator, Prometheus y Grafana, tu vida como operador será más sencilla y la aplicación más transparente. Solo hace falta un poco de configuración y estarás en la cima del mundo de la monitorización.
GO TO FULL VERSION