Ir al contenido

Configuración de Prometheus

Prometheus es un sistema de monitorización de código abierto que tiene funcionalidades interesantes para la monitorización de eventos y alertas. Puede encontrar una descripción más detallada en https://prometheus.io/.

Este endpoint se incluyó en OpenKM desde la v8.1.10. Para activarlo, debe incluir estas dos líneas en el fichero de configuración openkm.properties:

Ventana de terminal
management.endpoints.web.exposure.include=info,health,prometheus

Una vez modificado, debe reiniciar OpenKM y el endpoint http://localhost:8080/openkm/actuator/prometheus estará disponible. Este endpoint está protegido y solo será accesible para usuarios con los roles ROLE_ACTUATOR o ROLE_ADMIN.

Para verificar que el acceso es válido, abra un terminal y ejecute este comando:

Ventana de terminal
$ http -v --auth okmAdmin:admin http://localhost:8080/openkm/actuator/prometheus
$ curl -v --user okmAdmin:admin http://localhost:8080/openkm/actuator/prometheus

Si el nombre de usuario y la contraseña coinciden, y el usuario tiene el rol ROLE_ACTUATOR, la salida será algo como:

Ventana de terminal
# HELP tomcat_global_request_max_seconds
# TYPE tomcat_global_request_max_seconds gauge
tomcat_global_request_max_seconds{name="http-nio-0.0.0.0-8080",} 0.449
tomcat_global_request_max_seconds{name="ajp-nio-127.0.0.1-8009",} 0.0
# HELP jvm_threads_peak_threads The peak live thread count since the Java virtual machine started or peak was reset
# TYPE jvm_threads_peak_threads gauge
jvm_threads_peak_threads 128.0
# HELP system_cpu_usage The "recent cpu usage" for the whole system
# TYPE system_cpu_usage gauge
system_cpu_usage 0.04721888755502201

La forma más sencilla de tener Prometheus en marcha es usar la imagen Docker, así que hay que obtenerla:

Ventana de terminal
$ docker pull prom/prometheus

Una vez tengamos la imagen, hay que crear el fichero de configuración prometheus.yml:

global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# 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: ['127.0.0.1:9090']
- job_name: 'spring-actuator'
metrics_path: '/openkm/actuator/prometheus'
scrape_interval: 5s
static_configs:
- targets: ['172.18.0.1:8080']
basic_auth:
username: 'okmAdmin'
password: 'admin'

Vamos a crear el fichero Docker Compose adecuado:

version: '3.2'
services:
prometheus:
image: prom/prometheus
container_name: prometheus
hostname: prometheus
command:
- "--config.file=/etc/prometheus/prometheus.yml"
ports:
- 9090:9090
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml

Y puede iniciarlo con:

Ventana de terminal
$ docker-compose up -d

Una vez iniciado, Prometheus estará accesible en http://localhost:9090/ y podrá ver un gráfico del uso de CPU de la aplicación filtrado por “process_cpu_usage”:

Grafana estará disponible en http://localhost:3000/ y para iniciar sesión, use “admin” como nombre de usuario y contraseña por defecto. Vaya a “Data sources” y añada una fuente de datos Prometheus usando la URL http://172.18.0.1:9090. Para crear un dashboard de ejemplo, vaya a Dashboard y haga clic en el botón “Create Dashboard”. Después, haga clic en “Import dashboard” y elija la plantilla “Spring Boot template”, que tiene el id 11378. Use la fuente de datos de Prometheus creada anteriormente.

Hay más información disponible en los sitios web de Prometheus y Grafana.