Un poco de Metrics

(Este me da que lo usaré pronto ;))

Metrics es una librería Java desarrollada por Yammer para medir el comportamiento de nuestros servicios/components Java instrumentando el código.

Tiene módulos para frameworks como Spring, Log4J, Guice,… y para motores de reporting como Ganglia y Graphite.

CORE:

La librería central es metrics-core que provee esta funcionalidad básica:

· Cinco tipos de métrica: Gauges, Counters, Histograms, Meters y Timers.

· Check de salud de un componente

· Reporting de métricas vía JMX, consola y ficheros CSV.

Su dependencia Maven es esta:

MÉTRICAS

· Cada métrica tiene un nombre de métrica único que se forma con:

Grupo: agrupración principal (por defecto paquete)

Tipo: segundo nivel de agrupación (por defecto nombre de Clase)

Nombre: nombre corto del objetivo de la métrica

Scope: nombre opcional

· Las métricas existentes en el core son:

Gauge: tipo más simple. Devuelve un valor

Counter: un entero de 64bits que se incrementa y decrementa:

Histogram: mide la distribución de valores en un stream de datos

Meter: mide la frecuencia con la que ocurre un conjunto de eventos:

Timer: es un Histogram de la duración de un tipo de evento y un Meter de la frecuencia:

CHECK DE SALUD (HEALTH CHECK)

· Metrics permite comprobar la salud de nuestros components de forma sencilla y unificada. Básicamente consiste en un pequeño autotest que verifica la aplicación para comprobar que un componente está funcionando correctamente.

Un Health check tiene este aspecto:

Y se registra así:

REPORTERS:

· Los Reporters son la forma en la que una aplicación export alas medidas que se han creado a partir de sus métricas. El core ofrece JMX, consola y CSV.

· Además Metrics ofrece este Reporters:

MetricsServlet: servlet que expone métricas como objeto JSON, además permite hacer ThreadDumps, Health checks,…

GangliaReporter envía datos en streaming a servidor Ganglia

GraphiteReporter envía datos en streaming a servidor Graphite

INTEGRACIÓN CON SPRING:

La integración de Metrics con Spring permite a través de Spring AOP y una sencilla configuración:

· Crear proxies de beans que tienen métodos anotados con @Timed, @Metered y @ExceptionMetered.

· Registrar un Gauge para beans con miembros anotados con @Gauge.

· Registrar beans que extienden a la clase HealthCheck.

Deja un comentario