Integración de métricas de Prometheus en aplicaciones Java: biblioteca simpleclient

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Métricas de Prometheus en Java: biblioteca simpleclient

Prometheus es un potente sistema de monitoreo y alerta de código abierto que recopila métricas de diversas fuentes. Para aplicaciones Java, existen varias bibliotecas para la integración con Prometheus. La principal y más popular es simpleclient del propio proyecto Prometheus. Proporciona una forma minimalista, segura para subprocesos y de alto rendimiento para crear, registrar y exportar métricas.



¿Qué es simpleclient?

simpleclient es la biblioteca oficial de Java para Prometheus, que permite a los desarrolladores agregar métricas a las aplicaciones con una sobrecarga mínima. Admite cuatro tipos principales de métricas:

  • Counter — un contador que solo aumenta (por ejemplo, número de solicitudes).
  • Gauge — un valor que puede tanto aumentar como disminuir (por ejemplo, número de conexiones activas, temperatura).
  • Histogram — un histograma que mide la distribución de valores (por ejemplo, tiempo de ejecución de solicitudes).
  • Summary — un resumen similar al histograma, pero que calcula cuantiles en el lado del cliente.


Instalación y configuración

Para trabajar con simpleclient, agregue las siguientes dependencias en pom.xml (Maven):

<dependency>    <groupId>io.prometheus</groupId>    <artifactId>simpleclient</artifactId>    <version>0.16.0</version></dependency><dependency>    <groupId>io.prometheus</groupId>    <artifactId>simpleclient_hotspot</artifactId>    <version>0.16.0</version></dependency><dependency>    <groupId>io.prometheus</groupId>    <artifactId>simpleclient_servlet</artifactId>    <version>0.16.0</version></dependency>

Para Gradle:

implementation 'io.prometheus:simpleclient:0.16.0'implementation 'io.prometheus:simpleclient_hotspot:0.16.0'implementation 'io.prometheus:simpleclient_servlet:0.16.0'


Creación y registro de métricas

Veamos la creación de un contador simple de solicitudes. Las métricas se registran en el registro global CollectorRegistry.defaultRegistry.

import io.prometheus.client.Counter;import io.prometheus.client.Gauge;

public class MetricsExample { // Creamos un contador con nombre "http_requests_total" y etiquetas "method" y "endpoint" static final Counter requests = Counter.build() .name("http_requests_total") .help("Total number of HTTP requests.") .labelNames("method", "endpoint") .register();

// Creamos un gauge para el número de sesiones activas static final Gauge activeSessions = Gauge.build() .name("active_sessions") .help("Current number of active sessions.") .register();

public static void processRequest(String method, String endpoint) { // Incrementamos el contador requests.labels(method, endpoint).inc(); // Establecemos el valor del gauge (por ejemplo, tamaño de la cola) activeSessions.set(42); }}


Exportación de métricas a través de HTTP

Para que Prometheus pueda recopilar las métricas, es necesario proporcionar un endpoint /metrics. La forma más sencilla es usando el servlet integrado. Si usa Spring Boot, agregue la dependencia simpleclient_spring_boot.

import io.prometheus.client.exporter.MetricsServlet;import io.prometheus.client.hotspot.DefaultExports;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;

@WebServlet("/metrics"

Recommendations