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).

  1. 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.

  1. 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:

management.endpoints.web.exposure.include=*
management.endpoint.prometheus.enabled=true

Paso 3: Ejecutar la Aplicación

Ejecuta tu aplicación Spring Boot. El endpoint de Prometheus estará disponible en http://localhost:8080/actuator/prometheus.

  1. Configuración de Prometheus

Paso 1: Descargar y Ejecutar Prometheus

Descarga Prometheus desde su sitio oficial y ejecuta el binario. Alternativamente, puedes usar Docker:

docker run -p 9090:9090 prom/prometheus

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:

./prometheus --config.file=prometheus.yml

  1. 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.

  1. Configuración de Grafana

Paso 1: Descargar y Ejecutar Grafana

Descarga Grafana desde su sitio oficial y ejecuta el binario. Alternativamente, puedes usar Docker:

docker run -d -p 3000:3000 grafana/grafana

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

  1. Navega a Configuration > Data Sources.
  2. Añade una nueva fuente de datos y selecciona Prometheus.
  3. Configura la URL de Prometheus (http://localhost:9090) y guarda la configuración.

Paso 4: Crear un Dashboard

  1. Navega a Create > Dashboard.
  2. Añade un nuevo panel y selecciona Prometheus como la fuente de datos.
  3. Usa PromQL para consultar las métricas y visualizarlas en el panel.

  1. Ejemplo Práctico

Consultar Métricas de CPU

Crea un panel en Grafana con la siguiente consulta PromQL para monitorear el uso de CPU:

rate(process_cpu_seconds_total[1m])

Consultar Métricas de Memoria

Crea otro panel con la siguiente consulta PromQL para monitorear el uso de memoria:

process_resident_memory_bytes

  1. Ejercicio Práctico

Ejercicio

  1. Configura Prometheus y Grafana para monitorear una aplicación Spring Boot.
  2. 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

  1. Sigue los pasos descritos en las secciones anteriores para configurar Prometheus y Grafana.
  2. 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])

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

Módulo 2: Conceptos Básicos de Spring Boot

Módulo 3: Construyendo Servicios Web RESTful

Módulo 4: Acceso a Datos con Spring Boot

Módulo 5: Seguridad en Spring Boot

Módulo 6: Pruebas en Spring Boot

Módulo 7: Funciones Avanzadas de Spring Boot

Módulo 8: Despliegue de Aplicaciones Spring Boot

Módulo 9: Rendimiento y Monitoreo

Módulo 10: Mejores Prácticas y Consejos

© Copyright 2024. Todos los derechos reservados