blob: 107af7fc71cd7971e7d0a0079801c85df063afc1 [file] [log] [blame]
= Métricas con MicroProfile `@Metered`
:index-group: MicroProfile
:jbake-type: page
:jbake-status: published
Este es un ejemplo sobre cómo utilizar las métricas de MicroProfile en TomEE.
== Ejecute la aplicación:
[source,bash]
----
$ mvn clean install tomee:run
----
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:
[source,bash]
----
$ curl -X GET http://localhost:8080/mp-metrics-metered/weather/day/status
----
== Response:
[source,text]
----
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`.
[source,java]
----
@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:
[source,bash]
----
$ curl -X GET http://localhost:8080/mp-metrics-metered/metrics/application/dailyStatus
----
== Respuesta Prometheus:
[source,text]
----
# 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
[source,javascript]
----
{
"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_
[source,bash]
----
$ curl -X OPTIONS http://localhost:8080/mp-metrics-metered/metrics/application/dailyStatus
----
== Respuesta:
[source,javascript]
----
{
"dailyStatus": {
"description": "Metrics to daily weather status method",
"displayName": "",
"name": "dailyStatus",
"reusable": false,
"tags": "",
"type": "meter",
"typeRaw": "METERED",
"unit": "minutes"
}
}
----
== Pruebe la aplicación:
[source,bash]
----
$ mvn test
----