(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