| = 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 |
| ---- |