CodeGym /Cursos /Módulo 5. Spring /Lección 117: Integración de Actuator con sistemas de moni...

Lección 117: Integración de Actuator con sistemas de monitorización (Prometheus, Grafana)

Módulo 5. Spring
Nivel 19 , Lección 6
Disponible

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

  1. Entra en la interfaz de Grafana.
  2. Ve a Configuration > Data Sources.
  3. Pulsa "Add data source" y selecciona Prometheus.
  4. En el campo URL escribe la dirección de tu instancia de Prometheus (por ejemplo, http://localhost:9090).
  5. 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.

  1. Elige el tipo de gráfico (línea, histograma, etc.) y otros parámetros.
  2. Añade otro panel para mostrar el uso de memoria:
    jvm_memory_used_bytes
    
  3. 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:

  1. Abre cualquier panel del dashboard.
  2. Haz clic en el panel y selecciona Edit > Alerts.
  3. Añade una nueva política de alertas. Por ejemplo, crea una regla: si process_cpu_usage > 80%, entonces enviar una notificación.
  4. Configura el endpoint para las notificaciones (por ejemplo, email o Slack).

6. Ejercicio práctico

Para entender mejor el proceso, haz la siguiente tarea:

  1. Configura Prometheus para recoger las métricas de tu aplicación Spring Boot.
  2. Conecta Grafana a Prometheus y crea un dashboard con dos paneles:
    • Uso de memoria JVM.
    • Carga de CPU.
  3. 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.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION