En este tema, aprenderemos cómo integrar Prometheus y Grafana con una aplicación Spring Boot para monitorear y visualizar métricas de rendimiento. Prometheus es una herramienta de monitoreo y alerta de código abierto, mientras que Grafana es una plataforma de análisis y monitoreo que permite crear dashboards interactivos.
Objetivos de Aprendizaje
- Entender qué es Prometheus y cómo se utiliza para monitorear aplicaciones.
- Configurar Prometheus para recolectar métricas de una aplicación Spring Boot.
- Integrar Grafana con Prometheus para visualizar las métricas recolectadas.
- Crear dashboards en Grafana para monitorear la salud y el rendimiento de la aplicación.
Requisitos Previos
- Conocimientos básicos de Spring Boot.
- Familiaridad con Docker (opcional, pero recomendado para simplificar la configuración de Prometheus y Grafana).
- Introducción a Prometheus
Prometheus es una herramienta de monitoreo y alerta que recolecta métricas de aplicaciones y sistemas. Utiliza un modelo de datos basado en series temporales y un lenguaje de consulta llamado PromQL.
Características Clave de Prometheus
- Recolección de métricas: Prometheus recolecta métricas a través de HTTP endpoints.
- Almacenamiento de series temporales: Las métricas se almacenan como series temporales.
- Alertas: Prometheus puede generar alertas basadas en las métricas recolectadas.
- Consultas: Utiliza PromQL para consultar y analizar las métricas.
- Configuración de Prometheus en Spring Boot
Paso 1: Añadir Dependencias
Para integrar Prometheus con Spring Boot, necesitamos añadir las siguientes dependencias en el archivo pom.xml
:
<dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
Paso 2: Configurar Actuator
Spring Boot Actuator proporciona endpoints para monitorear y gestionar la aplicación. Debemos habilitar el endpoint de Prometheus en el archivo application.properties
:
Paso 3: Ejecutar la Aplicación
Ejecuta tu aplicación Spring Boot. El endpoint de Prometheus estará disponible en http://localhost:8080/actuator/prometheus
.
- Configuración de Prometheus
Paso 1: Descargar y Ejecutar Prometheus
Descarga Prometheus desde su sitio oficial y ejecuta el binario. Alternativamente, puedes usar Docker:
Paso 2: Configurar Prometheus
Crea un archivo de configuración prometheus.yml
con el siguiente contenido:
global: scrape_interval: 15s scrape_configs: - job_name: 'spring-boot' static_configs: - targets: ['host.docker.internal:8080']
Paso 3: Ejecutar Prometheus con la Configuración
Ejecuta Prometheus con el archivo de configuración:
- Introducción a Grafana
Grafana es una plataforma de análisis y monitoreo que permite crear dashboards interactivos para visualizar métricas.
Características Clave de Grafana
- Dashboards: Permite crear dashboards personalizados.
- Alertas: Soporta alertas basadas en métricas.
- Integraciones: Se integra con múltiples fuentes de datos, incluyendo Prometheus.
- Configuración de Grafana
Paso 1: Descargar y Ejecutar Grafana
Descarga Grafana desde su sitio oficial y ejecuta el binario. Alternativamente, puedes usar Docker:
Paso 2: Acceder a Grafana
Accede a Grafana en http://localhost:3000
y usa las credenciales por defecto (admin
/admin
).
Paso 3: Añadir Prometheus como Fuente de Datos
- Navega a Configuration > Data Sources.
- Añade una nueva fuente de datos y selecciona Prometheus.
- Configura la URL de Prometheus (
http://localhost:9090
) y guarda la configuración.
Paso 4: Crear un Dashboard
- Navega a Create > Dashboard.
- Añade un nuevo panel y selecciona Prometheus como la fuente de datos.
- Usa PromQL para consultar las métricas y visualizarlas en el panel.
- Ejemplo Práctico
Consultar Métricas de CPU
Crea un panel en Grafana con la siguiente consulta PromQL para monitorear el uso de CPU:
Consultar Métricas de Memoria
Crea otro panel con la siguiente consulta PromQL para monitorear el uso de memoria:
- Ejercicio Práctico
Ejercicio
- Configura Prometheus y Grafana para monitorear una aplicación Spring Boot.
- Crea un dashboard en Grafana con al menos tres paneles que muestren:
- Uso de CPU.
- Uso de memoria.
- Número de peticiones HTTP recibidas.
Solución
- Sigue los pasos descritos en las secciones anteriores para configurar Prometheus y Grafana.
- Usa las siguientes consultas PromQL para los paneles:
- Uso de CPU:
rate(process_cpu_seconds_total[1m])
- Uso de memoria:
process_resident_memory_bytes
- Número de peticiones HTTP:
rate(http_server_requests_seconds_count[1m])
- Uso de CPU:
Conclusión
En esta sección, hemos aprendido cómo integrar Prometheus y Grafana con una aplicación Spring Boot para monitorear y visualizar métricas de rendimiento. Hemos configurado Prometheus para recolectar métricas y Grafana para crear dashboards interactivos. Estos conocimientos te permitirán mantener un monitoreo efectivo de tus aplicaciones y asegurar su rendimiento y disponibilidad.
En el siguiente tema, exploraremos cómo gestionar registros y logs en Spring Boot para una mejor trazabilidad y depuración.
Curso de Spring Boot
Módulo 1: Introducción a Spring Boot
- ¿Qué es Spring Boot?
- Configuración de tu Entorno de Desarrollo
- Creando tu Primera Aplicación Spring Boot
- Entendiendo la Estructura del Proyecto Spring Boot
Módulo 2: Conceptos Básicos de Spring Boot
- Anotaciones de Spring Boot
- Inyección de Dependencias en Spring Boot
- Configuración de Spring Boot
- Propiedades de Spring Boot
Módulo 3: Construyendo Servicios Web RESTful
- Introducción a los Servicios Web RESTful
- Creando Controladores REST
- Manejo de Métodos HTTP
- Manejo de Excepciones en REST
Módulo 4: Acceso a Datos con Spring Boot
- Introducción a Spring Data JPA
- Configuración de Fuentes de Datos
- Creación de Entidades JPA
- Uso de Repositorios de Spring Data
- Métodos de Consulta en Spring Data JPA
Módulo 5: Seguridad en Spring Boot
- Introducción a Spring Security
- Configuración de Spring Security
- Autenticación y Autorización de Usuarios
- Implementación de Autenticación JWT
Módulo 6: Pruebas en Spring Boot
- Introducción a las Pruebas
- Pruebas Unitarias con JUnit
- Pruebas de Integración
- Simulación con Mockito
Módulo 7: Funciones Avanzadas de Spring Boot
Módulo 8: Despliegue de Aplicaciones Spring Boot
Módulo 9: Rendimiento y Monitoreo
- Ajuste de Rendimiento
- Monitoreo con Spring Boot Actuator
- Uso de Prometheus y Grafana
- Gestión de Registros y Logs