Agregar Actuator + Grafana + Prometheus a Spring Boot

En este post veremos como configurar Actuator, Prometheus y Grafana para moitorear una aplicacion realizada en Spring Boot. Lo interesante de estas herramientas, es que puedes obtener datos para monitorear un backend sin necesidad de escribir codigo.

Después de implementar cualquier aplicación en producción, nuestra principal preocupación es brindar la mejor experiencia de usuario al usuario final. Para esa aplicación, el monitoreo y las alertas es un aspecto importante. Cuando hablamos de monitoreo y alerta, grafana entra en acción.

Tabla de contenido
  1. ¿Que es grafana?
  2. Agregar depedencias a nuestro proyecto de Spring Boot
    1. Gradle
    2. Maven
  3. Configurando propiedades den Spring Boot
  4. Descargar prometheus
  5. Configurar prometheous
  6. Ejecutar prometheus
  7. Descargar grafana
  8. Ejecutar grafana
  9. Video-tutorial completo en español

¿Que es grafana?

Grafana es una herramienta muy personalizable, para monitorear cualquier aplicación. La configuración de Grafana es muy sencilla. Y es compatible con múltiples fuentes de datos, es decirm que podemos añadir multiples datasources, asi como tambien, crear multiples tableros o vistas de monitoreo.

Agregar depedencias a nuestro proyecto de Spring Boot

Ahora vamos a agregar la depdendencia de actuator y de prometheus. El proyecto que usaremos para este tutorial es un CRUD de Spring Boot, el cual puedes encontrar en el siguiente link:

Gradle

Vamos al archivo build.gradle y en la seccion de dependencias, agregamos las siguientes dependencias.


	// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-actuator
	implementation group: 'org.springframework.boot', name: 'spring-boot-starter-actuator', version: '2.6.1'

// https://mvnrepository.com/artifact/io.micrometer/micrometer-registry-prometheus
	implementation group: 'io.micrometer', name: 'micrometer-registry-prometheus', version: '1.8.1'

Maven

En el caso de que tengas un proyecto maven, debes ir al archivo pom.xml y en la seccion de dependencias, agregar las siguientes dos dependencias.

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-actuator -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>2.6.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.micrometer/micrometer-registry-prometheus -->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
    <version>1.8.1</version>
</dependency>

Configurando propiedades den Spring Boot

Ahora en el archivo de propiedades application.properties agregamos las siguientes dos propiedades.

management.endpoints.web.exposure.include=*
management.endpoints.health.include.show-details=always

Descargar prometheus

Una vez tenemos nuestro Spring Boot configurado, ahora vamos a descargar prometheus. Vamos a la web oficial de descargar el software.

Nota: recomendable ver el video al final de este post para tener una guia clara

Configurar prometheous

Una vez descargado y descomprimido el archivo, obtendremos algo parecido a estos archivos. Abrimos el archivo subrayado en rojo y lo editamos con editor de codigo o texto.

Recomendado:   Matriz de números aleatorios en C#
configurar prometheus en spring boot

La configuracion de Prometheus es muy sencilla, solo tenemos que editar el archivo prometheus.yml y al final, agregar estas dos lineas:

- job_name: "spring-backend"
    metrics_path: '/actuator/prometheus'
    scrape_interval: 1s
    static_configs:
      - targets: ["localhost:8080"]

El archivo completo de configuracion quedaria algo similar a esto:

# my global config
global:
  scrape_interval: 5s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 5s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "spring-backend"
    metrics_path: '/actuator/prometheus'
    scrape_interval: 1s
    static_configs:
      - targets: ["localhost:8080"]

Ejecutar prometheus

Para ejecutar prometheus vamos a carpeta de prometheus, y ejecutamos con poweshell o cmd el archivo prometheus.exe

Ejecutar el siguiente codigo en una terminal de powershell o cmd desde la raiz

.\prometheus.exe

Descargar grafana

Grafana es gratis de descargar. Lo puedes descargar para cualquier sistema operativo.

Ejecutar grafana

Para ejecuta gafana, entramos a la carpeta bin, abrimos una consola de poweshell o cmd dentro de la carpeta descomprimida y ejecutamos el siguiente comando:

.\grafana-server.exe

Luego vamos a http://localhost:3000 y ahi veremos el login de grafana, el cual para ingresar te pedira un usuario y contraseña, el cual es admin de usuario y admin de contraseña.

Recomendado:   APP INVENTOR: uso de CONDICIONALES BÁSICOS IF | ELSE Y IF ELSE

Video-tutorial completo en español

Aqui te dejo un video tutorial completo en español con el paso a paso para configurar grafana, prometheus y actuator

Subir