Prometheus-Messwerte verwenden

Auf dieser Seite werden die Grundlagen der Verwendung von Prometheus-Messwerten für Verfügbarkeits- und Latenz-SLIs in Cloud Monitoring und die Verwendung dieser Messwerte zum Erstellen eines SLO erläutert.

Die Grundlagen von Prometheus

Prometheus ist eine führende Open-Source-Monitoring-Lösung für Messwerte und Benachrichtigungen.

Prometheus unterstützt Dimensionsdaten mit Schlüssel/Wert-Paaren für Messwerte, stellt die PromQL-Abfragesprache bereit und unterstützt zahlreiche Integrationen, da es Exporter für andere Produkte bereitstellt.

Wenn Sie Prometheus mit Monitoring verwenden möchten, empfehlen wir die Verwendung von Google Cloud Managed Service for Prometheus.

Messwerte

Prometheus unterstützt folgende Messwerttypen:

  • Zähler: Ein einzelner Wert, der nur monoton erhöht oder beim Neustart auf 0 zurückgesetzt werden kann.
  • Gauge: Ein einzelner numerischer Wert, der beliebig festgelegt werden kann.
  • Histogramm: Eine Gruppe konfigurierbaren Buckets für Sampling-Beobachtungen und zur Aufzeichnung von Werten in Bereichen. Stellt auch eine Summe aller beobachteten Werte bereit.
  • Zusammenfassung: Wie ein Histogramm, kalkuliert aber auch konfigurierbare Quantile über ein gleitendes Zeitfenster.

Weitere Informationen finden Sie unter Messwerttypen.

Messwerte für SLIs erstellen

Wenn Ihre Anwendung Prometheus-Messwerte ausgibt, können Sie sie für SLIs verwenden.

  • Für Verfügbarkeits-SLIs zur Anzahl von Anfragen und Fehler können Sie mit Prometheus-Zählermesswerten starten.
  • Für Latenz-SLIs können Sie ein Prometheus-Histogramm oder Messwerte zur Zusammenfassung verwenden.

Informationen zum Erfassen von Prometheus-Messwerten mit Google Cloud Managed Service for Prometheus finden Sie in der Dokumentation zum Einrichten einer verwalteten oder selbst bereitgestellten Messwerterfassung.

Wenn Sie in der Google Cloud Console ein SLO erstellen, enthalten die Standard-SLO-Typen für Verfügbarkeit und Latenz keine Prometheus-Messwerte. Wenn Sie einen Prometheus-Messwert verwenden möchten, erstellen Sie ein benutzerdefiniertes SLO und wählen Sie dann einen Prometheus-Messwert für den SLI aus.

Prometheus-Messwerte beginnen mit prometheus.googleapis.com/.

Messwerte für GKE

Die verwaltete Erfassung von Messwerten durch Google Cloud Managed Service for Prometheus ist für GKE standardmäßig aktiviert. In einer GKE-Umgebung, in der die verwaltete Erfassung nicht standardmäßig aktiviert ist, können Sie die verwaltete Erfassung manuell aktivieren. Wenn die verwaltete Erfassung aktiviert ist, werden die clusterinternen Komponenten ausgeführt. Messwerte werden jedoch erst generiert, wenn Sie eine PodMonitoring-Ressource bereitstellen, die einen gültigen Messwertendpunkt extrahiert oder eines der Pakete mit verwalteten Messwerten aktiviert.

Das Paket Messwerte der Steuerungsebene enthält Messwerte, die nützliche Indikatoren für den Systemzustand sind. Aktivieren Sie die Erfassung der Messwerte der Steuerungsebene, um diese Messwerte für Verfügbarkeit, Latenz und andere SLIs zu verwenden.

  • Verwenden Sie API-Servermesswerte, um die API-Serverlast, den Anteil der API-Serveranfragen, die Fehler zurückgeben, und die Antwortlatenz für Anfragen zu verfolgen, die vom API-Server empfangen werden.
  • Nutzen Sie Planermesswerte, um proaktiv auf Planungsprobleme zu reagieren, wenn nicht genügend Ressourcen für ausstehende Pods vorhanden sind.

Messwerte für Verfügbarkeits-SLIs

Sie geben einen anfragebasierten Verfügbarkeits-SLI in der Cloud Monitoring API an, indem Sie mit der Struktur TimeSeriesRatio ein Verhältnis von „guten” oder „schlechten” Anfragen zu den gesamten Anfragen festlegen. Dieses Verhältnis wird im Feld goodTotalRatio einer RequestBasedSli-Struktur verwendet.

Die Anwendung muss Prometheus-Messwerte erstellen, mit denen dieses Verhältnis erstellt werden kann. Die Anwendung muss mindestens zwei der folgenden Elemente ausgeben:

  1. Ein Messwert, mit dem alle Ereignisse gezählt werden. Verwenden Sie diesen Messwert im totalServiceFilter des Verhältnisses.

    Sie können einen Prometheus-Zähler verwenden, der für jedes Ereignis erhöht wird.

  2. Verwenden Sie diesen Messwert im badServiceFilter des Verhältnisses, um "schlechte" Ereignisse zu zählen.

    Sie können einen Prometheus-Zähler verwenden, der für jeden Fehler und jedes andere „fehlerhaftes” Ereignis erhöht wird.

  3. Verwenden Sie diesen Messwert im goodServiceFilter des Verhältnisses, um "gute" Ereignisse zu zählen.

    Sie können einen Prometheus-Zähler verwenden, der für jedes erfolgreiche und jedes sonstige „gute” Ereignis erhöht wird.

Messwerte für Latenz-SLIs

Sie geben einen anfragebasierten Latenz-SLI in der Cloud Monitoring API mithilfe einer DistributionCut-Struktur aus. Diese Struktur wird im Feld distributionCut einer RequestBasedSli-Struktur verwendet.

Ihre Anwendung muss einen Prometheus-Messwert erstellen, mit dem der Wert für den Verteilungsschnitt erstellt werden kann. Sie können für diesen Zweck ein Prometheus-Histogramm oder eine Zusammenfassung verwenden. Informationen zum Definieren von Buckets, um genau zu messen, ob die Antworten in Ihr SLO fallen, finden Sie unter Messwerttypen in der Prometheus-Dokumentation.

Beispiel

Im folgenden JSON-Beispiel wird mit dem Messwert prometheus.googleapis.com/apiserver_request_duration_seconds der GKE-Steuerungsebene ein Latenz-SLO für einen Dienst erstellt. Das SLO erfordert 98 % der Antwortlatenz in weniger als 50 Sekunden in einem Kalendermonat.

{
 "displayName": "98% Calendar month - Request Duration Under 50s",
 "goal": 0.98,
 "calendarPeriod": "MONTH",
 "serviceLevelIndicator": {
   "requestBased": {
     "distributionCut": {
       "distributionFilter": "metric.type=\"prometheus.googleapis.com/apiserver_request_duration_seconds/histogram\" resource.type=\"prometheus_target\"",
       "range": {
         "min": "-Infinity",
         "max": 50
       }
     }
   }
 }
}

Nächste Schritte