[17.0.0.3 und höher]

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

Der Metrikendpunkt bietet zwei Ausgabeformate. Das für die Antworten verwendete Format ist abhängig vom HTTP-Accept-Header der entsprechenden Anforderung.
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

In der folgenden Tabelle sind die unterschiedlichen Endpunkte aufgeführt, auf die für die Bereitstellung von Metriken zugegriffen werden kann.
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.

Ein Messwert wird durch einen einzigen Wert dargestellt. Das folgende Beispiel zeigt, wie ein Messwert mit dem Namen cost und der Einheit dollars angezeigt wird:
# TYPE application:cost_dollars gauge
# HELP application:cost_dollars The running cost of the server in dollars.
application:cost_dollars 80        
Das folgende Beispiel stellt das für einen Zähler generierte Textformat dar. Die Ausgabe enthält nur einen Wert für einen Zähler.
# TYPE application:visitors counter
# HELP application:visitors The number of unique visitors
application:visitors 80
Ein Zähler setzt sich aus mehreren Werten zusammen. Das folgende Beispiel zeigt, wie ein Zähler mit dem Namen requests angezeigt wird:
# 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
Ein Histogramm setzt sich aus mehreren Werten zusammen. Das folgende Beispiel zeigt, wie ein Histogramm mit dem Namen file_sizes und mit bytes als definierte Einheit angezeigt wird.
# 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
Die Timer-Metrik setzt sich aus mehreren Werten zusammen. Das folgende Beispiel zeigt, wie ein Zeitgeber mit dem Namen response_time angezeigt wird.
# 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.

Wenn /metrics angefordert wird, werden die Daten für die Geltungsbereich in den Geltungsbereichsnamen eingeschlossen.
{
  "application": {
    "hitCount": 45
  },
  "base": {
     "thread.count" : 33,
     "thread.max.count" : 47
  },
  "vendor": {...}
}
Bei Messwerten und Zählern ist der Wert der Metrikwert. Das folgende Beispiel veranschaulicht die Rückgabe für einen Aufruf an /metrics/application.
{
  "hitCount": 45
}
Das folgende Beispiel veranschaulicht ein JSON-Objekt für einen Zähler:
{
  "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).
Das folgende Beispiel veranschaulicht ein JSON-Objekt für ein Histogramm:
{ 
"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.
Das folgende Beispiel veranschaulicht ein JSON-Objekt für einen Zeitgeber:
{
  "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

Metadaten werden unter Verwendung derselben Verzeichnisstrukturdarstellung mit Unterverzeichnisstrukturdarstellungen für die untergeordneten Ressourcen. Der Name der Metrik wird den zugehörigen Metadatenwerten zugeordnet. Es werden beispielsweise GET /metrics/applications die folgenden Mehrfachwerte angezeigt:
{
  "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"
  }
}

Symbol das den Typ des Artikels anzeigt. Referenzartikel

Dateiname: rwlp_mp_metrics_rest_api.html