Perzentile und Verteilungsmesswerte

Dieses Dokument hilft, Perzentile und das Histogrammmodell für Messwertdaten mit dem Werttyp Distribution zu verstehen. Ein Verteilungsmesswert definiert Buckets genannte Wertebereiche und erfasst die Anzahl der gemessenen Werte, die in die einzelnen Buckets fallen. Verteilungsmesswerte melden keine einzelnen Messwerte. Sie melden ein Mengenhistogramm in Buckets. Dieser Wertetyp wird von Diensten verwendet, wenn die einzelnen Messungen zu zahlreich sind, um sie zu erfassen, aber statistische Informationen, wie z. B. Durchschnittswerte oder Perzentile, zu diesen Messungen wertvoll sind.

Wenn Sie einen Messwert mit Verteilungswert in einer Heatmap darstellen, können Sie mit einer Option in der Diagrammsymbolleiste die 50., 95. und 99. Perzentile überlagern. Wenn Sie einen Verteilungswert in einem Liniendiagramm darstellen möchten, müssen Sie um den Verteilungswert in einen numerischen Wert umzuwandeln. Sie können diese Konvertierung mit einem Aligner ausführen. ein Perzentil auswählt.

Im nächsten Abschnitt dieser Seite wird anhand eines synthetischen Beispiels gezeigt, Perzentile bestimmt. Das Beispiel zeigt, dass die Perzentilwerte die Anzahl der Container, die Breite der Container, die Verteilung der Messungen und die Gesamtzahl der Stichproben. Die Perzentilwerte hängen nicht von den tatsächlich gemessenen Werten ab, da diese Werte im Histogramm nicht verfügbar sind.

Beispiel mit synthetischen Daten

Angenommen, Sie haben ein Exponential-Bucket-Modell mit einer Skala von 1, einem Wachstumsfaktor von 2 und 10 endlichen Buckets. Dieses Histogramm enthält 12 Buckets, die 10 endlichen Buckets, 1 Bucket, der nur eine Obergrenze und 1, die nur eine Untergrenze angibt. In diesem Beispiel ist der endliche Bucket mit dem Index n+1 doppelt so breit wie der endliche Bucket mit dem Index n.

Die folgenden Beispiele zeigen, dass die Breite des Buckets den maximalen Fehler zwischen dem berechneten Prozentrang und den Messungen bestimmt. Außerdem zeigen sie, dass die Anzahl der Samples in einem Histogramm wichtig ist. Ist die Anzahl der Stichproben beispielsweise kleiner als 20, so befinden sich das 95. und 99. Perzentil immer im selben Bucket.

Fall 1: Die Gesamtzahl der Samples ist 1.

Bei einer einzelnen Messung unterscheiden sich die drei Perzentilwerte, es werden aber nur das 50., 95. und 99. Perzentil desselben Buckets angezeigt. Der Fehler zwischen der Schätzung und den tatsächlichen Messungen da die Messung nicht bekannt ist.

Angenommen, das Histogramm der Messungen entspricht folgender Tabelle:

Bucket-Nummer Untergrenze Obergrenze Anzahl Perzentilbereich
0 1 0 0
1 1 2 0 0
2 2 4 0 0
3 4 8 0 0
4 8 16 0 0
5 16 32 0 0
6 32 64 0 0
7 64 128 0 0
8 128 256 1 0–100
9 256 512 0 0
10 512 1.024 0 0
11 1.024 0 0

So berechnen Sie das 50. Perzentil:

  1. Sie bestimmen anhand der Bucket-Anzahl, welcher Bucket das 50. Perzentil enthält. In diesem Beispiel enthält Container Nummer 8 das 50. Perzentil.
  2. Berechnen Sie die Schätzung anhand der folgenden Regel:

    pth percentage = bucket_low +
                    (bucket_up - bucket_low)*(p - p_low)/(p_up - p_low)
    

    Im vorherigen Ausdruck sind p_low und p_up die Unter- und Obergrenze des Prozentrangbereichs für den Bucket. bucket_low und bucket_up sind die Unter- und Obergrenze des Buckets. Die Werte für p_low und p_up hängen davon ab, wie die werden auf die verschiedenen Buckets verteilt.

Das 50. Perzentil wird beispielsweise so berechnet:

   50th percentile = 128 + (256-128)*(50-0)/(100-0)
                   = 128 + 128 * 50 / 100
                   = 128 + 64
                   = 192

Wenn Sie den 95. Perzentilwert berechnen möchten, ersetzen Sie im vorherigen Ausdruck 50 durch 95. In diesem Beispiel, in dem es genau eine Stichprobe gibt, Perzentile sehen wie folgt aus:

Perzentil Bucket-Nummer Wert
50. 8 192
95. 8 249.6
99. 8 254.7

Der Fehler zwischen der Schätzung und den tatsächlichen Messungen kann begrenzt, aber nicht ermittelt werden, da die Messung nicht bekannt ist.

Fall 2: Die Gesamtzahl der Stichproben beträgt 10.

Bei zehn Stichproben kann sich das 50. Perzentil in einem anderen Bucket als das 95. und 99. Perzentil befinden. Es gibt jedoch noch nicht genügend Messungen, damit das 95. und 99. Perzentil in verschiedenen Buckets sein könnten.

Angenommen, das Histogramm der Messungen entspricht folgender Tabelle:

Bucket-Nummer Untergrenze Obergrenze Anzahl Perzentilbereich
0 1 4 0–40
1 1 2 2 40–60
2 2 4 1 60–70
3 4 8 1 70–80
4 8 16 1 80–90
5 16 32 0 0
6 32 64 0 0
7 64 128 0 0
8 128 256 1 90–100
9 256 512 0 0
10 512 1.024 0 0
11 1.024 0 0

Sie können mit dem zuvor beschriebenen Verfahren die 50., 95. und 99. Perzentile. Das 50. Perzentil, das sich in Bucket 1 befindet, wird beispielsweise so berechnet:

50th percentile = 1 + (2-1)*(50-40)/(60-40)
                = 1 + (1 * 10 / 20)
                = 1 + 0.5
                = 1.5

In ähnlicher Weise wird das 95. Perzentil so berechnet:

95th percentile = 128 + (256-128)*(95-90)/(100-90)
                = 128 + 128 * 5 / 10
                = 128 + 64
                = 192

Mithilfe des zuvor beschriebenen Verfahrens können die Perzentile berechnet werden. Jede Zeile der folgenden Tabelle listet ein Perzentil, den entsprechende Bucket und den berechneten Wert auf:

Perzentil Bucket-Nummer Wert Maximaler Fehlerwert
50. 1 1,5 0,5
95. 8 192 74
99. 8 243,2 115,2

In diesem und im vorherigen Beispiel befindet sich das 95. Perzentil im Bucket Zahl 8; Die Perzentilberechnung ist jedoch anders. Die auf die Verteilung der Stichproben zurückzuführen. Im ersten Beispiel wurden alle Stichproben befinden sich im selben Bucket, während im jüngsten Beispiel der Wert in verschiedenen Buckets.

Beispiel mit realen Daten

In diesem Abschnitt wird anhand eines Beispiels veranschaulicht, wie Sie das von einem bestimmten Messwert verwendete Bucket-Modell ermitteln. Dieser Abschnitt zeigt auch, wie Sie den potenziellen Fehler in der berechneten Perzentilwerte.

Bucket-Modell identifizieren

Um die Buckets zu ermitteln, die für einen Messwert über ein bestimmtes Zeitintervall verwendet werden, der Cloud Monitoring API projects.timeSeries/list-Methode.

So ermitteln Sie beispielsweise das Bucket-Modell für einen Messwert:

  1. Rufen Sie die Webseite von projects.timeSeries/list auf.
  2. Geben Sie im APIs Explorer den Filter ein, in dem der Messwert, eine Startzeit und eine Endzeit angegeben sind.

    Um beispielsweise Informationen zu dem Messwert zu erhalten, Latenzen von API-Anfragen geben Sie Folgendes ein:

    metric.type="serviceruntime.googleapis.com/api/request_latencies"
    resource.type="consumed_api"
    

    In diesem Beispiel wird im Filterfeld ein Messwerttyp und ein Ressourcentyp angegeben. Weitere Informationen zu diesen Filtern finden Sie unter Filter überwachen.

  3. Drücken Sie die Eingabetaste.

Im Folgenden finden Sie die list-API-Antwort für einen Verteilungswert, der in einem Google Cloud-Projekt verfügbar ist:

{
  "timeSeries": [
    {
      "metric": {...},
      "resource": {...},
      },
      "metricKind": "DELTA",
      "valueType": "DISTRIBUTION",
      "points": [
        {
          "interval": {
            "startTime": "2020-11-03T15:05:00Z",
            "endTime": "2020-11-03T15:06:00Z"
          },
          "value": {
            "distributionValue": {
              "count": "3",
              "mean": 25.889,
              "bucketOptions": {
                "exponentialBuckets": {
                  "numFiniteBuckets": 66,
                  "growthFactor": 1.4,
                  "scale": 1
                }
              },
              "bucketCounts": [
                "0",
                "0",
                "0",
                "0",
                "0",
                "0",
                "0",
                "0",
                "0",
                "0",
                "3"
              ]
            }
          }
        },

In der API-Antwort beschreibt das value-Feld die im points-Array gespeicherten Daten. Die Felder count und mean geben an, dass für das angegebene Zeitintervall drei Messungen erfolgten und deren Durchschnittswert bei 25,889 lag. Das bucketOptions-Feld zeigt, dass das exponentielle Modell so konfiguriert ist, dass es 66 Buckets, eine Skalierung von 1 und einen Wachstumsfaktor von 1,4 hat.

Verwenden Sie folgende Regeln, um die Unter- und Obergrenzen für den Bucket mit dem Index n zu berechnen:

  • Untergrenze (1 ≤ n < N) = Skalierung * (Wachstumsfaktor)(n-1)
  • Obergrenze (0 ≤ n < N-1) = Skalierung * (Wachstumsfaktor)n

In den vorherigen Ausdrücken ist N die Gesamtzahl der Bucket.

Die Buckets für diesen Messwert sowie der Mittelpunkt der einzelnen Buckets sind in folgender Tabelle aufgeführt:

n-ter Bucket Untergrenze Obergrenze Mittelwert
0 1 Nicht zutreffend
1 1 1,40 1.20
2 1,40 1.96 1,68
9 14,76 20.66 17,71
10 20.66 28.93 24.79
11 28.93 40,50 34.71

Perzentilberechnungen prüfen

Nachdem die Bucket-Konfiguration nun bekannt ist, können Sie für jede Reihe von Messungen die Werte für das 50., 95. und 99. Perzentil vorhersagen. Beispiel: Wenn es nur eine Stichprobe gibt und sie sich in Bucket 10 befindet, ist der Wert des 50. Perzentils 24,79.

Sie können die Werte für den 50., 95. und 99. Perzentil des Messwerts abrufen. Dazu nutzen Sie die API-Methode projects.timeSeries/list und geben einen Ausrichtungszeitraum nebst Aligner an. In diesem Beispiel wurden folgende Einstellungen ausgewählt:

  • Aligner: ALIGN_PERCENTILE_50, ALIGN_PERCENTILE_95 oder ALIGN_PERCENTILE_99
  • Ausrichtungszeitraum: 60 s

Bei der Auswahl ALIGN_PERCENTILE_50 ist jeder Wert in der Zeitreihe der 50. Perzentil eines Buckets:

{
  "timeSeries": [
    {
      "metric": {...},
      "resource": {...},
      "metricKind": "GAUGE",
      "valueType": "DOUBLE",
      "points": [
        {
          "interval": {
            "startTime": "2020-11-03T15:06:36Z",
            "endTime": "2020-11-03T15:06:36Z"
          },
          "value": {
            "doubleValue": 24.793256140799986
          }
        },
        {
          "interval": {
            "startTime": "2020-11-03T15:05:36Z",
            "endTime": "2020-11-03T15:05:36Z"
          },
          "value": {
            "doubleValue": 34.710558597119977
          }
        },
        {
          "interval": {
            "startTime": "2020-11-03T15:04:36Z",
            "endTime": "2020-11-03T15:04:36Z"
          },
          "value": {
            "doubleValue": 24.793256140799986
          }
        }
      ]
    },

Bei zwei der Stichproben befindet sich das 50. Perzentil in Bucket 10, für das andere Beispiel befindet es sich in Bucket 11.

In der folgenden Tabelle sind die Ergebnisse der Ausführung der projects.timeSeries/list-Methode mit verschiedenen Alignern zu sehen. Die erste Zeile entspricht dem Fall, in dem der Aligner nicht spezifiziert ist. Wenn Sie nicht wenn Sie einen Aligner angeben, werden das Bucket-Modell und die Mittelwerte zurückgegeben. In den nächsten drei Zeilen sind die Daten aufgeführt, die zurückgegeben werden, wenn der Aligner auf ALIGN_PERCENTILE_50, ALIGN_PERCENTILE_95 und ALIGN_PERCENTILE_99 festgelegt ist:

Statistik Stichprobe bei 15:06 Stichprobe bei 15:05 Stichprobe bei 15:04
Mittel 25.889 33.7435 Nicht verfügbar.
50. Perzentil 24.79 34.71 24.79
95. Perzentil 28.51 39.91 28.51
99. Perzentil 28.84 40.37 28.84

Wie die beiden Beispiele mit synthetischen Daten zeigen, sind die Werte der Perzentile abhängig von der Verteilung der Stichproben. Wenn sich alle Stichproben im Stichproben-Bucket befinden, ist das 50. Perzentil der Mittelpunkt dieses Buckets. Wenn sich Stichproben jedoch in verschiedenen Buckets befinden, die Schätzungen beeinflusst.

Um festzustellen, ob der 50. Perzentilwert eine angemessene Schätzung des Mittelwerts ist, können Sie den Mittelwert mit dem 50. Perzentilwert vergleichen. Der Mittelwert wird mit den Bucket-Details zurückgegeben.

Nächste Schritte

Informationen zum Visualisieren von Verteilungsmesswerten finden Sie unter Verteilungsmesswerte.