= Métricas con MicroProfile `@Gauge` (Medida)
: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á la temperatura en celsios
para el día.

== Obtenga la temperatura para el día:

[source,bash]
----
$ curl -X GET http://localhost:8080/mp-metrics-gauge/weather/day/temperature
----

== Response:
 30

== Usando `@Gauge`

Las métricas de MicroProfile tienen una función para medir. El valor y tipo
de la medida son iguales al valor y tipo del método anotado.

Para utilizar esta función, debe anotar los métodos de los recursos JAX-RS con
`@Gauge`.

[source,java]
----
@Path("/weather")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@ApplicationScoped
public class WeatherService {

    @Path("/day/temperature")
    @Gauge(name = "weather_day_temperature", absolute = true, unit = "celsius",
            displayName = "Weather Day Temperature",
            description = "This metric shows the day temperature.",
            tags = {"weather=temperature"})
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public Integer dayTemperature() {
        return 30;
    }
}
----

Hay algunas configuraciones, como parte de `@Gauge`, 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 = para suministrar etiquetas
especiales a una métrica.

*String unit*
Unidad de la métrica. Mira la clase MetricUnits para una lista de unidades
predeterminadas.

== Datos de la Métrica

Verifique la medida haciendo una solicitud _GET_:

=== Formato Prometheus:

[source,bash]
----
$ curl -X GET http://localhost:8080/mp-metrics-gauge/metrics/application/weather_day_temperature
----

=== Respuesta Prometheus:

[source]
----
 # TYPE application:weather_day_temperature_celsius gauge
 application:weather_day_temperature_celsius{weather="temperature"} 30.0
----

=== Formato JSON:

For json format add the header _Accept=application/json_ to the request.

=== Respuesta JSON

[source,javascript]
----
 {
     "weather_day_temperature": 30
 }
----

== 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-gauge/metrics/application/weather_day_temperature
----

=== Respuesta:

[source,javascript]
----
 {
     "weather_day_temperature": {
         "unit": "celsius",
         "displayName": "Weather Day Temperature",
         "name": "weather_day_temperature",
         "typeRaw": "GAUGE",
         "description": "This metric shows the day temperature.",
         "type": "gauge",
         "value": {
             "unit": "celsius",
             "displayName": "Weather Day Temperature",
             "name": "weather_day_temperature",
             "tagsAsString": "weather=\"temperature\"",
             "typeRaw": "GAUGE",
             "description": "This metric shows the day temperature.",
             "type": "gauge",
             "reusable": false,
             "tags": {
                 "weather": "temperature"
             }
         },
         "reusable": false,
         "tags": "weather=temperature"
     }
 }
----

También puede probarlo utilizando WeatherServiceTest.java disponible en el
proyecto.
