Integración de métricas de Prometheus en 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: guía completa de la biblioteca simpleclient



Prometheus es un potente sistema de monitoreo y alerta de código abierto, que se ha convertido en el estándar de facto en el mundo Cloud Native. Para desarrolladores Java, existen varias bibliotecas para la integración, pero la biblioteca oficial simpleclient (también conocida como prometheus/client_java) es la más popular y con mejor soporte. En este artículo, analizaremos en detalle cómo agregar métricas de Prometheus a una aplicación Java utilizando esta biblioteca.



¿Qué es simpleclient?



simpleclient es el cliente oficial de Java para Prometheus, que proporciona una forma simple y eficiente de crear y exportar métricas. La biblioteca admite cuatro tipos principales de métricas de Prometheus:

  • Counter (Contador) — un valor que aumenta monótonamente (por ejemplo, número de solicitudes).
  • Gauge (Indicador) — un valor que puede cambiar arbitrariamente (por ejemplo, la carga actual de la CPU).
  • Histogram (Histograma) — distribución de valores en "cubos" predefinidos (por ejemplo, tiempo de respuesta).
  • Summary (Resumen) — cuantiles de los valores observados (por ejemplo, p50, p99 del tiempo de respuesta).


Instalación y configuración



Para comenzar, agregue las siguientes dependencias a su archivo pom.xml (Maven) o build.gradle (Gradle).



Maven

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

<!-- Para exportar métricas a través de HTTP --><dependency> <groupId>io.prometheus</groupId> <artifactId>simpleclient_httpserver</artifactId> <version>0.16.0</version></dependency>


Gradle

implementation 'io.prometheus:simpleclient:0.16.0'implementation 'io.prometheus:simpleclient_httpserver:0.16.0'


Creación y uso de métricas



Veamos un ejemplo de creación de todos los tipos principales de métricas en una sola clase.



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

public class MetricsExample {

// 1. Counter: número de solicitudes procesadas static final Counter requestsCounter = Counter.build() .name("app_requests_total") .help("Total number of processed requests.") .labelNames("endpoint", "method") .register();

// 2. Gauge: número actual de usuarios activos static final Gauge activeUsersGauge = Gauge.build() .name("app_active_users") .help("Current number of active users.") .register();

// 3. Histogram: duración de la solicitud en milisegundos static final Histogram requestDurationHistogram = Histogram.build() .name("app_request_duration_ms") .help("Request duration in milliseconds.") .buckets(10, 50, 100, 200, 500, 1000, 5000) .register();

// 4. Summary: cuantiles de la duración de la solicitud static final Summary requestDurationSummary = Summary.build() .name("app_request_duration_summary_ms") .help("Request duration summary in milliseconds.") .quantile(0.5, 0.05) // p50 con un margen de error del 5% .quantile(0.99, 0.01) // p99 con un margen de error del 1% .register();

public static void main(String[] args) throws Exception { // Simulación de procesamiento de solicitudes for (int i = 0; i < 100; i++) { processRequest("/api/users", "GET"); }

// Iniciar el servidor HTTP para exportar métricas new HTTPServer(9090); System.out.println("Metrics server started

Recommendations