[17.0.0.3 and later]

API REST MicroProfile metrics

Les fonctions mpMetrics-1.0 et mpMetrics-1.1 fournissent une API REST permettant d'afficher les métriques pour l'accès par les administrateurs.

Formats

Le noeud final metrics fournit deux formats de sortie. Le format qui est utilisé pour chaque réponse dépend de l'en-tête d'acceptation HTTP de la demande correspondante.
Format de texte Prometheus
Représentation des métriques compatible avec l'outil de surveillance Prometheus. Ce format est renvoyés pour les demandes avec une en-tête d'acceptation text/plain.
Format JSON
Représentation JSON des métriques. Ce format est renvoyé pour les demandes possédant une en-tête d'acceptation application/json.

Noeuds finaux REST

Le tableau suivant illustre les différents noeuds finaux accessibles pour fournir des métriques.
Noeuds finaux Type de demande Formats pris en charge Description
/metrics GET JSON, Prometheus Renvoie toutes les métriques enregistrées.
/metrics/<scope> GET JSON, Prometheus Renvoie les métriques enregistrées pour la portée respective.
/metrics/<scope>/<metric name> GET JSON, Prometheus Renvoie la métrique correspondant au nom de métrique de la portée respective.
/metrics OPTIONS JSON Renvoie toutes les métadonnées des métriques enregistrées.
/metrics/<scope> OPTIONS JSON Renvoie les métadonnées de métriques enregistrées pour la portée respective.
/metrics/<scope>/<metric name> OPTIONS JSON Renvoie les métadonnées de métrique correspondant au nom de métrique de la portée respective.

Connexion aux magasins de données et aux outils de surveillance

Les administrateurs peuvent connecter leurs métriques d'applications à d'autres outils et piles qui peuvent analyser et surveiller les informations des métriques.

Par défaut, le noeud final /metrics renvoie des données dans un format compatible avec Prometheus. Pour connecter votre serveur Liberty à Prometheus, configurez Prometheus pour utiliser le noeud final https://hôte:port_https/metrics.

Le format JSON peut être utilisé par d'autres outils de collecte de métriques comprenant JSON. Par exemple, le plug-in collectd curl_json peut être configuré pour interpréter le format JSON depuis MicroProfile metrics. collectd peut ensuite renvoyer les informations à différents outils, tels que Graphite.

Détails du format Prometheus

Le format de texte Prometheus est basé sur le format d'exposition 0.0.4 décrit dans la documentation de Prometheus. Lorsqu'elles sont disponibles, des métadonnées sont fournies à chaque métrique. La ligne # Help contient la description de la métrique. Toute balise présente dans les métadonnées sont fournies en tant qu'étiquettes Prometheus. L'unité de la métrique est ajoutée à la fin du nom de métrique pour les jauges et les histogrammes.

Une jauge est représentée par une valeur unique. L'exemple suivant montre comment une jauge nommée cost avec des unités en dollars s'afficherait :
# TYPE application:cost_dollars gauge
# HELP application:cost_dollars The running cost of the server in dollars.
application:cost_dollars 80
L'exemple suivant illustre le format de texte généré pour un compteur. La sortie inclut uniquement une valeur d'un compteur.
# TYPE application:visitors counter
# HELP application:visitors The number of unique visitors
application:visitors 80
Un mètre est composé de plusieurs valeurs. L'exemple suivant montre comment un mètre nommé requests s'afficherait.
# TYPE application:requests_count counter 
# HELP application:requests_count Tracks the number of requests to the server 
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 histogramme est composé de plusieurs valeurs. L'exemple suivant montre comment un histogramme nommé file_sizes avec des unités définies en octets s'afficherait.
# 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 Users file size
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étrique Timer (temporisateur) est composée de plusieurs valeurs. L'exemple ci-dessous montre comment un temporisateur appelé temps_de_réponse s'afficherait.
# 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 Server response time for /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

Détails du format JSON - GET

Le format JSON renvoie les données qui sont formatées dans un arbre. Chaque métrique est référencée par le nom et soit la valeur des jauges et des compteurs, soit une carte des mètres, des histogrammes et des temporisateurs.

Si /metrics est demandé, les données des portées sont encapsulées dans le nom de portée :
{
  "application": {
    "hitCount": 45
  },
  "base": {
     "thread.count" : 33,
     "thread.max.count" : 47
  },
  "vendor": {...}
}
Pour les jauges et les compteurs, la valeur correspond à la valeur de la métrique. L'exemple suivant illustre le renvoi d'un appel à /metrics/application.
{
  "hitCount": 45
}
L'exemple suivant illustre un objet JSON pour un mètre :
{
  "requests": {
    "count": 29382,
    "meanRate": 12.223,
    "oneMinRate": 12.563,
    "fiveMinRate": 12.364,
    "fifteenMinRate": 12.126,
  }
}
Dans l'exemple, les clés suivantes sont présentes :
Clé Valeur
count Comptage du nombre d'événements.
meanRate Taux moyen depuis l'enregistrement de la métrique (événements/seconde).
oneMinRate Taux moyen de la dernière minute (événements/seconde).
fiveMinRate Taux moyen au cours des 5 dernières minutes (événements/seconde).
fifteenMinRate Taux moyen au cours des 15 dernières minutes (événements/seconde).
L'exemple suivant illustre un objet JSON pour un histogramme :
{ 
"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
  }
}
Dans l'exemple, les clés suivantes sont présentes :
Clé Valeur
count Comptage du nombre d'événements.
min Valeur minimale enregistrée.
max Valeur maximale enregistrée.
mean Valeur moyenne.
stddev Déviation standard.
p50 Valeur au percentile 50, égale à la médiane.
p75 Valeur au percentile 75.
p95 Valeur au percentile 95.
p98 Valeur au percentile 98.
p99 Valeur au percentile 99.
p999 Valeur au percentile 999.
L'exemple suivant illustre un objet JSON pour un temporisateur :
{
  "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
  }
}
Clé Valeur
count Comptage du nombre d'événements.
meanRate Taux moyen depuis l'enregistrement de la métrique (événements/seconde).
oneMinRate Taux moyen de la dernière minute (événements/seconde).
fiveMinRate Taux moyen au cours des 5 dernières minutes (événements/seconde).
fifteenMinRate Taux moyen des quinze dernières minutes (événements/seconde).
min Valeur minimale enregistrée.
max Valeur maximale enregistrée.
mean Valeur moyenne.
stddev Déviation standard.
p50 Valeur au percentile 50, égale à la médiane.
p75 Valeur au percentile 75.
p95 Valeur au percentile 95.
p98 Valeur au percentile 98.
p99 Valeur au percentile 99.
p999 Valeur au percentile 999.

Détails du format JSON - OPTIONS

Les métadonnées sont affichées à l'aide du même style d'arbre, avec des arbres subordonnées pour les ressources subordonnées. Le nom de la métrique est mappé à ses valeurs de métadonnées. Par exemple, si GET /metrics/applications affiche les valeurs multiples suivantes :
{
  "fooVal": 12345,
  "barVal": 42
}
Alors, OPTIONS /metrics/application affiche :
{
  "fooVal": {
    "unit": "milliseconds",
    "type": "gauge",
    "description": "The average duration of foo requests during last 5 minutes",
    "displayName": "Duration of foo",
    "tags": "app=webshop"
  },
  "barVal": {
    "unit": "megabytes",
    "type": "gauge",
    "tags": "component=backend,app=webshop"
  }
}

Icône indiquant le type de rubrique Rubrique de référence

Nom du fichier : rwlp_mp_metrics_rest_api.html