[17.0.0.3 and later]

API REST de métricas de MicroProfile

Las características mpMetrics-1.0 y mpMetrics-1.1 proporcionan una API REST para visualizar las métricas para que los administradores puedan acceder a ellas.

Formatos

El punto final de métricas proporciona dos formatos de salida. El formato que se utiliza para cada respuesta depende de la cabecera de aceptación HTTP de la solicitud correspondiente.
Formato de texto Prometheus
Una representación de las métricas que es compatible con la herramienta de supervisión Prometheus. Se devuelve este formato para solicitudes con una cabecera de aceptación text/plain.
Formato JSON
Una representación JSON de las métricas. Se devuelve este formato para solicitudes con una cabecera de aceptación application/json.

Puntos finales REST

La tabla siguiente ilustra los distintos puntos finales a los que se puede acceder para proporcionar métricas.
Puntos finales Tipo de solicitud Formatos soportados Descripción
/metrics GET JSON, Prometheus Devuelve todas las métricas registradas.
/metrics/<scope> GET JSON, Prometheus Devuelve métricas que se han registrado para el ámbito respectivo.
/metrics/<ámbito>/<nombre métrica> GET JSON, Prometheus Devuelve las métricas que coinciden con el nombre de la métrica para el ámbito respectivo.
/metrics OPTIONS JSON Devuelve todos los metadatos de métricas registrados.
/metrics/<scope> OPTIONS JSON Devuelve metadatos de métricas registrados para el ámbito respectivo.
/metrics/<ámbito>/<nombre métrica> OPTIONS JSON Devuelve metadatos de métricas que coinciden con el nombre de métrica para el ámbito respectivo.

Conexión a almacenes de datos y herramientas de supervisión

Los administradores pueden conectar sus métricas de aplicación a otras herramientas y pilas que pueden analizar y supervisar la información de métrica.

De forma predeterminada, el punto final /metrics devuelve datos en un formato que es compatible con Prometheus. Para conectar el servidor Liberty a Prometheus, configure Prometheus para que utilice el punto final https://host:puerto_https/metrics.

El formato JSON puede ser utilizado por otras herramientas de recopilación de métricas que comprendan JSON. Por ejemplo, el plug-in curl_json de collectd se puede configurar para interpretar el formato JSON a partir de métricas de MicroProfile. A continuación, collectd puede enviar la información a distintas herramientas como, por ejemplo, Graphite.

Detalles de formato Prometheus

El formato de texto Prometheus se basa en el formato de exposición 0.0.4 que se describe en la documentación de Prometheus. Cuando estén disponibles, se proporcionan metadatos para cada métrica. La línea # Help contiene la descripción de la métrica. Las etiquetas presentes en los metadatos se proporcionan como etiquetas de Prometheus. La unidad de la métrica se añade al final del nombre de la métrica para indicadores e histogramas.

Un indicador se representa mediante un valor único. El ejemplo siguiente muestra cómo se mostrarán un indicador llamado cost con unidades en dollars:
# TYPE application:cost_dollars gauge
# HELP application:cost_dollars El coste de ejecución del servidor en dólares.
application:cost_dollars 80
El ejemplo siguiente ilustra el formato de texto generado para un contador. La salida solo incluye un valor para un contador.
# TYPE application:visitors counter
# HELP application:visitors El número de visitantes exclusivos
application:visitors 80
Un medidor está formado por varios valores. El ejemplo siguiente muestra cómo se muestra un medidor llamado requests.
# TYPE application:requests_count counter 
# HELP application:requests_count Rastrea el número de solicitudes en el servidor 
application:requests_count 29382
# TYPE application:requests_rate_per_second gauge 
application:requests_rate_per_second 12.223
# TYPE application:requests_one_min_rate_per_second gauge 
application:requests_one_min_rate_per_second 12.563
# TYPE application:requests_five_min_rate_per_second gauge 
application:requests_five_min_rate_per_second 12.364
# TYPE application:requests_fifteen_min_rate_per_second gauge 
application:requests_fifteen_min_rate_per_second 12.126
Un histograma está formado por varios valores. El ejemplo siguiente muestra cómo se muestra un histograma llamado file_sizes, con unidades establecidas en bytes:
# TYPE application:file_sizes_mean_bytes gauge
application:file_sizes_mean_bytes 4738.231
# TYPE application:file_sizes_max_bytes gauge
application:file_sizes_max_bytes 31716
# TYPE application:file_sizes_min_bytes gauge
application:file_sizes_min_bytes 180
# TYPE application:file_sizes_stddev_bytes gauge
application:file_sizes_stddev_bytes 1054.7343037063602
# TYPE application:file_sizes_bytes summary
# HELP application:file_sizes_bytes Tamaño de archivo de usuarios
application:file_sizes_bytes_count 2037
application:file_sizes_bytes{quantile="0.5"} 4201
application:file_sizes_bytes{quantile="0.75"} 6175
application:file_sizes_bytes{quantile="0.95"} 13560
application:file_sizes_bytes{quantile="0.98"} 29643
application:file_sizes_bytes{quantile="0.99"} 31716
application:file_sizes_bytes{quantile="0.999"} 31716
La métrica de temporizador está formada por varios valores. A continuación se muestra cómo se mostrará un temporizador denominado response_time.
# TYPE application:response_time_rate_per_second gauge 
application:response_time_rate_per_second  0.004292520715985437
# TYPE application:response_time_one_min_rate_per_second gauge 
application:response_time_one_min_rate_per_second  2.794076465421066E-14
# TYPE application:response_time_five_min_rate_per_second  gauge 
application:response_time_five_min_rate_per_second  4.800392614619373E-4
# TYPE application:response_time_fifteen_min_rate_per_second  gauge 
application:response_time_fifteen_min_rate_per_second  0.01063191047532505
# TYPE application:response_time_mean_seconds gauge 
application:response_time_mean_seconds 0.000415041
# TYPE application:response_time_max_seconds gauge 
application:response_time_max_seconds 0.0005608694
# TYPE application:response_time_min_seconds gauge 
application:response_time_min_seconds 0.000169916
# TYPE application:response_time_stddev_seconds gauge 
application:response_time_stddev_seconds 0.000652907
# TYPE application:response_time_seconds summary 
# HELP application:response_time_seconds Tiempo de respuesta de servidor para /index.html
application:response_time_seconds_count 80
application:response_time_seconds{quantile="0.5"} 0.0002933240
application:response_time_seconds{quantile="0.75"} 0.000344914
application:response_time_seconds{quantile="0.95"} 0.000543647
application:response_time_seconds{quantile="0.98"} 0.002706543
application:response_time_seconds{quantile="0.99"} 0.005608694
application:response_time_seconds{quantile="0.999"} 0.005608694

Detalles de formato JSON - GET

El formato JSON devuelve datos que se formatean en un árbol. Cada métrica está referenciada por el nombre y el valor para indicadores y contadores o un mapa para medidores, histogramas y temporizadores.

Si se solicita /metrics, los datos para los ámbitos están envueltos en el nombre del ámbito:
{
  "application": {
    "hitCount": 45
  },
  "base": {
     "thread.count" : 33,
     "thread.max.count" : 47
  },
  "vendor": {...}
}
Para indicadores y contadores, el valor es el valor de la métrica. El ejemplo siguiente ilustra la devolución para una llamada a /metrics/application.
{
  "hitCount": 45
}
El ejemplo siguiente ilustra un objeto JSON para un medidor:
{
  "requests": {
    "count": 29382,
    "meanRate": 12.223,
    "oneMinRate": 12.563,
    "fiveMinRate": 12.364,
    "fifteenMinRate": 12.126,
  }
}
En el ejemplo, están presentes las claves siguientes:
Clave Valor
count Un recuento del número de sucesos.
meanRate La velocidad media desde que se registró la métrica (sucesos/segundo).
oneMinRate La velocidad media durante el último minuto (sucesos/segundo).
fiveMinRate La velocidad media durante los últimos 5 minutos (sucesos/segundo).
fifteenMinRate La velocidad media durante los últimos 15 minutos (sucesos/segundo).
El ejemplo siguiente ilustra un objeto JSON para un histograma:
{ 
"file_sizes": {
    "count":2,
    "min":-1624,
    "max":26,
    "mean":-799.0,
    "stddev":825.0,
    "p50":26.0,
    "p75":26.0,
    "p95":26.0,
    "p98":26.0,
    "p99":26.0,
    "p999":26.0
  }
}
En el ejemplo, están presentes las claves siguientes:
Clave Valor
count Un recuento del número de sucesos.
min El valor mínimo registrado.
max El valor máximo registrado.
mean El valor medio.
stddev La desviación estándar.
p50 El valor en el percentil 50, igual que la mediana.
p75 El valor en el percentil 75.
p95 El valor en el percentil 95.
p98 El valor en el percentil 98.
p99 El valor en el percentil 99.
p999 El valor en el percentil 999.
El ejemplo siguiente ilustra un objeto JSON para un temporizador:
{
  "responseTime": {
    "count": 29382,
    "meanRate":12.185627192860734,
    "oneMinRate": 12.563,
    "fiveMinRate": 12.364,
    "fifteenMinRate": 12.126,
    "min":169916,
    "max":5608694,
    "mean":415041.00024926325,
    "stddev":652907.9633011606,
    "p50":293324.0,
    "p75":344914.0,
    "p95":543647.0,
    "p98":2706543.0,
    "p99":5608694.0,
    "p999":5608694.0
  }
}
Clave Valor
count Un recuento del número de sucesos.
meanRate La velocidad media desde que se registró la métrica (sucesos/segundo).
oneMinRate La velocidad media durante el último minuto (sucesos/segundo).
fiveMinRate La velocidad media durante los últimos 5 minutos (sucesos/segundo).
fifteenMinRate La velocidad media durante los últimos quince minutos (sucesos/segundo).
min El valor mínimo registrado.
max El valor máximo registrado.
mean El valor medio.
stddev La desviación estándar.
p50 El valor en el percentil 50, igual que la mediana.
p75 El valor en el percentil 75.
p95 El valor en el percentil 95.
p98 El valor en el percentil 98.
p99 El valor en el percentil 99.
p999 El valor en el percentil 999.

Detalles de formato JSON - OPCIONES

Los metadatos se muestran utilizando el mismo estilo de árbol, con subárboles para los subrecursos. El nombre de la métrica está correlacionado con sus valores de metadatos. Por ejemplo, si GET /metrics/applications muestra los valores múltiples siguientes:
{
  "fooVal": 12345,
  "barVal": 42
}
Después, se muestra OPTIONS /metrics/application:
{
  "fooVal": {
    "unit": "milisegundos",
    "type": "indicador",
    "description": "La duración media de las solicitudes foo durante los últimos 5 minutos",
    "displayName": "Duración de foo",
    "tags": "app=webshop"
  },
  "barVal": {
    "unit": "megabytes",
    "type": "indicador",
    "tags": "component=backend,app=webshop"
  }
}

Icono que indica el tipo de tema Tema de referencia

Nombre de archivo: rwlp_mp_metrics_rest_api.html