$ mvn clean install tomee:run
Métricas con MicroProfile @Metered
Este es un ejemplo sobre cómo utilizar las métricas de MicroProfile en TomEE.
Ejecute la aplicación:
Dentro de la aplicación, hay un endpoint que te dará el estado del clima para el día y la semana.
Obtenga el clima para la semana:
$ curl -X GET http://localhost:8080/mp-metrics-metered/weather/day/status
Response:
Hi, today is a sunny day!
Usando @Metered
Las métricas de MicroProfile tienen una función que se puede usar para medir solicitudes a un servicio.
Para utilizar esta función, debe anotar los métodos de los recursos JAX-RS con
@Metered
.
@Path("/weather")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@ApplicationScoped
public class WeatherService {
@Path("/day/status")
@Metered(name = "dailyStatus",
unit = MetricUnits.MINUTES,
description = "Metrics to daily weather status method",
absolute = true)
@GET
@Produces(MediaType.TEXT_PLAIN)
public String dayStatus() {
return "Hi, today is a sunny day!";
}
...
}
Hay algunas configuraciones, como parte de @Metered
, que necesita saber:
String name Opcional. Establece el nombre de la métrica. Si no se proporciona explícitamente, se utiliza el nombre del objeto anotado.
boolean absolute Si es verdadero, usa el nombre dado como el nombre absoluto de la métrica. Si es falso, antepone el nombre del paquete y el nombre de la clase antes del nombre dado. El valor predeterminado es falso.
String displayName Opcional. Un nombre para mostrar legible para los metadatos.
String description Opcional. Una descripción de la métrica.
String[] tags Opcional. Matriz de cadenas en el formato <key>=<value> para suministrar etiquetas especiales a una métrica.
boolean reusable
Indica si una métrica con un nombre determinado se puede registrar en más de un
lugar. No se aplica a @Gauges
(medidores).
String unit
Unidad de la métrica. El valor predeterminado para @Metered
es nanosegundos.
Datos de la Métrica
Verifique la métrica @Metered
haciendo una solicitud GET:
Formato Prometheus:
$ curl -X GET http://localhost:8080/mp-metrics-metered/metrics/application/dailyStatus
Respuesta Prometheus:
# TYPE application:daily_status_seconds_count meter
application:daily_status_seconds_count 1.2E-7
# TYPE application:daily_status_rate_per_second meter
application:daily_status_rate_per_second 0.0
# TYPE application:daily_status_one_min_rate_per_second meter
application:daily_status_one_min_rate_per_second 1.3376002644204984E-19
# TYPE application:daily_status_five_min_rate_per_second meter
application:daily_status_five_min_rate_per_second 3.5942838529305413E-20
# TYPE application:daily_status_fifteen_min_rate_per_second meter
application:daily_status_fifteen_min_rate_per_second 3.4665766454142955E-21
Formato JSON:
Para el formato json, agregue el encabezado Accept: application/json
a la
solicitud HTTP.
Respuesta JSON
{
"dailyStatus": {
"count": 2,
"fifteenMinRate": 5.77762774235716e-14,
"fiveMinRate": 5.990473088217569e-13,
"meanRate": 0,
"oneMinRate": 2.229333774034164e-12,
"unit": "minutes"
}
}
Metadatos Métrica
Una métrica tendrá metadatos para que pueda conocer más información al
respecto, como displayName
,description
, tags
, etc.
Verifique los metadatos de la métrica haciendo una solicitud HTTP OPTIONS:
Solicitud HTTP OPTIONS
$ curl -X OPTIONS http://localhost:8080/mp-metrics-metered/metrics/application/dailyStatus
Respuesta:
{
"dailyStatus": {
"description": "Metrics to daily weather status method",
"displayName": "",
"name": "dailyStatus",
"reusable": false,
"tags": "",
"type": "meter",
"typeRaw": "METERED",
"unit": "minutes"
}
}
Pruebe la aplicación:
$ mvn test