![[17.0.0.3 und höher]](../ng_v17003plus.gif)
MicroProfile-Metrics-REST-API
Die Features mpMetrics-1.0 und mpMetrics-1.1 stellen eine REST-API zum Anzeigen von Metriken bereit, auf die Administratoren zugreifen können.
Formate
- Prometheus-Textformat
- Eine Darstellung der Metriken, die mit dem Prometheus-Überwachungstool kompatibel ist. Dieses Format wird für Anforderungen mit einem Accept-Header text/plain zurückgegeben.
- JSON-Format
- Eine JSON-Darstellung der Metriken. Dieses Format wird für Anforderungen mit einem Accept-Header application/json zurückgegeben.
REST-Endpunkte
Endpunkte | Anforderungstyp | Unterstützte Formate | Beschreibung |
---|---|---|---|
/metrics | GET | JSON, Prometheus | Gibt alle registrierten Metriken zurück. |
/metrics/<Geltungsbereich> | GET | JSON, Prometheus | Gibt Metriken zurück, die für den entsprechenden Geltungsbereich registriert sind. |
/metrics/<Geltungsbereich>/<Metrikname> | GET | JSON, Prometheus | Gibt die Metriken zurück, die dem Metriknamen für den entsprechenden Geltungsbereich entsprechen. |
/metrics | OPTIONS | JSON | Gibt alle registrierten Metrikmetadaten zurück. |
/metrics/<Geltungsbereich> | OPTIONS | JSON | Gibt Metrikmetadaten zurück, die für den entsprechenden Geltungsbereich registriert sind. |
/metrics/<Geltungsbereich>/<Metrikname> | OPTIONS | JSON | Gibt Metrikmetadaten zurück, die dem Metriknamen für den entsprechenden Geltungsbereich entsprechen. |
Verbindung zu Datenspeichern und Überwachungstools herstellen
Administratoren können Ihre Anwendungsmetriken mit anderen Tools und Stacks verbinden, die die Metrikinformationen analysieren und überwachen.
Standardmäßig gibt der Endpunkt /metrics Daten in einem mit Prometheus kompatiblen Format zurück. Wenn Sie Ihren Liberty-Server mit Prometheus verbinden möchten, verwenden Sie den Endpunkt https://Host:HTTPS-Port/metrics.
Das JSON-Format kann von anderen Metrikerfassungstools verwendet werden, die JSON verarbeiten können. Das Plug-in collectd curl_json kann so konfiguriert werden, dass es das JSON-Format aus den MicroProfile-Metriken interpretieren kann. collectd kann anschließend die Informationen an verschiedene Tools, wie z. B. Graphite, weiterleiten.
Details zum Prometheus-Format
Das Prometheus-Textformat basiert auf dem in der Prometheus-Dokumentation beschriebenen 0.0.4-Format, mit dem Metriken verfügbar gemacht werden. Sofern verfügbar, werden Metadaten für jede Metrik bereitgestellt. Die Zeile # Help enthält die Beschreibung der Metrik. Alle in den Metadaten vorhandenen Tags werden als Prometheus-Kennzeichnungen bereitgestellt. Die Metrikeinheit wird an das Ende des Metriknamens bei Messwerten und Histogrammen (Typ "gauge" und "histogram") angehängt.
# TYPE application:cost_dollars gauge
# HELP application:cost_dollars The running cost of the server in dollars.
application:cost_dollars 80
# TYPE application:visitors counter
# HELP application:visitors The number of unique visitors
application:visitors 80
# 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
# 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
# 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
Details zum JSON-Format - GET
Das JSON-Format gibt Daten zurück, die in einer Verzeichnisstruktur formatiert sind. Jede Metrik wird über den Namen und entweder den Wert für Messwerte und Zähler oder einer Zuordnung für Zähler, Histogramme und Zeitgeber referenziert.
{
"application": {
"hitCount": 45
},
"base": {
"thread.count" : 33,
"thread.max.count" : 47
},
"vendor": {...}
}
{
"hitCount": 45
}
{
"requests": {
"count": 29382,
"meanRate": 12.223,
"oneMinRate": 12.563,
"fiveMinRate": 12.364,
"fifteenMinRate": 12.126,
}
}
Im Beispiel sind die folgenden Schlüssel vorhanden: Schlüssel | Wert |
---|---|
count | Die Anzahl der Ereignisse. |
meanRate | Die durchschnittliche Geschwindigkeit seit der Metrikregistrierung (Ereignisse/Sekunde). |
oneMinRate | Die durchschnittliche Geschwindigkeit in der letzten Minute (Ereignisse/Sekunde). |
fiveMinRate | Die durchschnittliche Geschwindigkeit in den letzten fünf Minuten (Ereignisse/Sekunde). |
fifteenMinRate | Die durchschnittliche Geschwindigkeit in den letzten 15 Minuten (Ereignisse/Sekunde). |
{
"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
}
}
Im Beispiel sind die folgenden Schlüssel vorhanden: Schlüssel | Wert |
---|---|
count | Die Anzahl der Ereignisse. |
min | Der aufgezeichnete Mindestwert. |
max | Der aufgezeichnete Maximalwert. |
mean | Der Durchschnittswert. |
stddev | Die Standardabweichung. |
p50 | Der Wert im 50. Perzentil, entspricht dem gemittelten Wert. |
p75 | Der Wert im 75. Perzentil. |
p95 | Der Wert im 95 Perzentil. |
p98 | Der Wert im 98. Perzentil. |
p99 | Der Wert im 99. Perzentil. |
p999 | Der Wert im 999. Perzentil. |
{
"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
}
}
Schlüssel | Wert |
---|---|
count | Die Anzahl der Ereignisse. |
meanRate | Die durchschnittliche Geschwindigkeit seit der Metrikregistrierung (Ereignisse/Sekunde). |
oneMinRate | Die durchschnittliche Geschwindigkeit in der letzten Minute (Ereignisse/Sekunde). |
fiveMinRate | Die durchschnittliche Geschwindigkeit in den letzten fünf Minuten (Ereignisse/Sekunde). |
fifteenMinRate | Die durchschnittliche Geschwindigkeit in den letzten 15 Minuten (Ereignisse/Sekunde). |
min | Der aufgezeichnete Mindestwert. |
max | Der aufgezeichnete Maximalwert. |
mean | Der Durchschnittswert. |
stddev | Die Standardabweichung. |
p50 | Der Wert im 50. Perzentil, entspricht dem gemittelten Wert. |
p75 | Der Wert im 75. Perzentil. |
p95 | Der Wert im 95 Perzentil. |
p98 | Der Wert im 98. Perzentil. |
p99 | Der Wert im 99. Perzentil. |
p999 | Der Wert im 999. Perzentil. |
Details zum JSON-Format - OPTIONS
{
"fooVal": 12345,
"barVal": 42
}
Dann wird anschließend OPTIONS /metrics/application angezeigt: {
"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"
}
}