Kostenkontrolle und -zuordnung

Google Cloud Managed Service for Prometheus berechnet die Anzahl der in Cloud Monitoring aufgenommenen Beispiele sowie die Leseanfragen an die Monitoring API. Die Anzahl der aufgenommenen Stichproben ist der Hauptfaktor für Ihre Kosten.

In diesem Dokument wird beschrieben, wie Sie die mit der Messwertaufnahme verbundenen Kosten steuern und Quellen für die Aufnahme großer Datenmengen identifizieren können.

Weitere Informationen zu den Preisen für Managed Service for Prometheus finden Sie unter Zusammenfassung der Preise für Managed Service for Prometheus.

Rechnung ansehen

So rufen Sie Ihre Google Cloud-Rechnung auf:

  1. Öffnen Sie in der Google Cloud Console die Seite Abrechnung.

    Zur Abrechnung

  2. Wenn Sie mehrere Rechnungskonten haben und das Rechnungskonto des aktuellen Projekts aufrufen möchten, wählen Sie Zum verknüpften Rechnungskonto aus. Wenn Sie lieber ein anderes Rechnungskonto aufrufen möchten, wählen Sie Rechnungskonten verwalten und anschließend das Konto aus, für das Sie Nutzungsberichte ansehen möchten.

  3. Wählen Sie Berichte aus.

  4. Wählen Sie im Menü Dienste die Option Stackdriver Monitoring aus.

  5. Wählen Sie im Menü SKUs die folgenden Optionen aus:

    • Aufgenommene Prometheus-Beispiele
    • Monitoring API-Anfragen

Der folgende Screenshot zeigt den Abrechnungsbericht für Managed Service for Prometheus aus einem Projekt:

Grafik: Der Abrechnungsbericht für Managed Service for Prometheus zeigt die aktuelle und voraussichtliche Nutzung.

Kosten senken

So können Sie die Kosten für die Verwendung von Managed Service for Prometheus reduzieren:

  • Reduzieren Sie die Anzahl der Zeitachsen, die Sie an den verwalteten Dienst senden, indem Sie die generierten Messwertdaten filtern.
  • Reduzieren Sie die Anzahl der Stichproben, die Sie erfassen, indem Sie das Extraktionsintervall ändern.
  • Begrenzen Sie die Anzahl der Stichproben von potenziell falsch konfigurierten Messwerten mit hoher Kardinalität.

Anzahl der Zeitachsen reduzieren

Die Open-Source-Prometheus-Dokumentation empfiehlt selten das Filtern des Messwertvolumens, was sinnvoll ist, wenn die Kosten durch Maschinenkosten begrenzt sind. Wenn Sie jedoch einen Anbieter für verwaltete Dienste auf Basis einzelner Einheiten bezahlen, kann das Senden unbegrenzter Daten zu unnötig hohen Kosten führen.

Die im Projekt kube-prometheus enthaltenen Exporter, insbesondere der Dienst kube-state-metrics, können viele Messwertdaten ausgeben. Der Dienst kube-state-metrics gibt beispielsweise Hunderte von Messwerten aus, von denen viele für Sie als Nutzer möglicherweise völlig wertlos sind. Ein neuer Cluster mit drei Knoten, der das Projekt kube-prometheus verwendet, sendet ungefähr 900 Stichproben pro Sekunde an den verwalteten Dienst für Prometheus. Das Filtern dieser zusätzlichen Messwerte kann schon ausreichen, um Ihre Rechnung auf ein akzeptables Niveau zu reduzieren.

So reduzieren Sie die Anzahl der Messwerte:

Wenn Sie beispielsweise den Dienst kube-state-metrics verwenden, können Sie mit einem keep-Filter in Ihrer Extraktionskonfiguration beginnen und ihn dann anpassen. Wenn Sie beispielsweise den folgenden Filter für einen neuen Cluster mit drei Knoten verwenden, wird das Stichprobenvolumen um etwa 125 Beispiele pro Sekunde reduziert:

kube_(daemonset|deployment|pod|namespace|node|statefulset).+

Manchmal ist ein Exporter als unwichtig eingestuft. Das Paket kube-prometheus installiert beispielsweise standardmäßig die folgenden Dienstmonitore, von denen viele in einer verwalteten Umgebung nicht benötigt werden:

  • alertmanager
  • coredns
  • grafana
  • kube-apiserver
  • kube-controller-manager
  • kube-scheduler
  • kube-state-metrics
  • kubelet
  • node-exporter
  • prometheus
  • prometheus-adapter
  • prometheus-operator

Damit die Anzahl der zu exportierenden Messwerte reduziert wird, können Sie die nicht mehr benötigten Dienstmonitore löschen, deaktivieren oder beenden. Wenn Sie beispielsweise den Dienst-Monitoring kube-apiserver in einem neuen Cluster mit drei Knoten deaktivieren, verringert sich das Stichprobenvolumen um etwa 200 Beispiele pro Sekunde.

Anzahl der erfassten Stichproben reduzieren

Managed Service for Prometheus wird pro Stichprobe abgerechnet. Sie können die Anzahl der aufgenommenen Stichproben reduzieren, indem Sie die Länge des Stichprobenzeitraums erhöhen. Beispiel:

  • Wenn Sie einen Stichprobenzeitraum von 10 Sekunden in einen Stichprobenzeitraum von 30 Sekunden ändern, kann das Stichprobenvolumen um 66 % reduziert werden, ohne dass dadurch zu viele Informationen verloren gehen.
  • Durch das Ändern eines Stichprobenzeitraums von 10 Sekunden auf 60 Sekunden kann das Stichprobenvolumen um 83 % reduziert werden.

Informationen darüber, wie Stichproben gezählt werden und wie sich der Stichprobenzeitraum auf die Anzahl der Stichproben auswirkt, finden Sie unter Preisbeispiele basierend auf den aufgenommenen Stichproben.

Normalerweise ist das Extraktionsintervall pro Job oder Ziel festgelegt.

Für die verwaltete Sammlung legen Sie das Extraktionsintervall in der Ressource PodMonitoring mithilfe des Felds interval fest. Für die selbst bereitgestellte Sammlung legen Sie das Stichprobenintervall in Ihren Extraktionskonfigurationen fest, normalerweise durch Festlegen des Felds interval oder scrape_interval.

Stichproben von Messwerten mit hoher Kardinalität beschränken

Sie können Messwerte mit hoher Kardinalität erstellen, indem Sie Labels mit einer großen Anzahl potenzieller Werte hinzufügen, z. B. eine Nutzer-ID oder IP-Adresse. Solche Messwerte können eine sehr große Anzahl von Stichproben generieren. Die Verwendung von Labels mit einer großen Anzahl von Werten ist in der Regel eine fehlerhafte Konfiguration. Sie können sich vor Messwerten mit hoher Kardinalität in Ihren selbst bereitgestellten Collectors schützen, indem Sie in Ihren Extraktionskonfigurationen einen sample_limit-Wert festlegen.

Wenn Sie dieses Limit verwenden, sollten Sie es auf einen sehr hohen Wert setzen, damit nur offensichtlich falsch konfigurierte Messwerte abgefangen werden. Alle Stichproben, die das Limit überschreiten, werden verworfen und es kann sehr schwierig sein, Probleme zu diagnostizieren, die durch das Überschreiten des Limits verursacht wurden.

Die Verwendung eines Beispiellimits ist keine gute Möglichkeit, die Beispielaufnahme zu verwalten. Dieses Limit kann Sie jedoch vor versehentlichen Fehlkonfigurationen schützen. Weitere Informationen finden Sie unter sample_limit zur Vermeidung von Überlastungen.

Kosten identifizieren und zuordnen

Mit Cloud Monitoring können Sie die Prometheus-Messwerte ermitteln, die die größte Anzahl von Stichproben schreiben. Diese Messwerte tragen am meisten zu Ihren Kosten bei. Nachdem Sie die teuersten Messwerte ermittelt haben, können Sie die Extraktionskonfigurationen ändern, um diese Messwerte entsprechend zu filtern.

In den folgenden Abschnitten wird beschrieben, wie Sie die Anzahl der Beispiele analysieren können, die Sie an Managed Service for Prometheus senden, und bestimmten Messwerten, Kubernetes-Namespaces und Google Cloud-Regionen ein hohes Volumen zuordnen.

Messwerte mit hohem Volumen identifizieren

So ermitteln Sie die Prometheus-Messwerte mit den größten Datenaufnahme-Volumes:

  1. Rufen Sie in der Google Cloud Console die Seite Monitoring auf.

    Zu Monitoring

  2. Klicken Sie im Navigationsbereich von Monitoring auf Metrics Explorer.
  3. Wählen Sie den Tab Konfiguration aus und füllen Sie die Felde mit den folgenden Informationen aus:
    1. Geben Sie im Feld Ressourcentyp Attribution von Messwerten ein oder wählen Sie die Option aus.
    2. Geben Sie im Feld Messwert Nach Attributions-ID geschriebene Beispiele ein oder wählen Sie die Option aus.
    3. Wählen Sie für das Feld Gruppieren nach die Option metric_type aus.
    4. Wählen Sie für das Feld Aggregator die Option Summe aus.

    Im Diagramm wird nun das Aufnahmevolumen für die einzelnen Messwerttypen angezeigt.

  4. Klicken Sie in der Diagrammlegende auf Wert, um die Messwerte mit den größten Aufnahmevolumen zu identifizieren.

Das daraus resultierende Diagramm, in dem Ihre 300 besten Messwerte nach Volumen und Mittelwert sortiert werden, sieht so aus:

Grafik: Im konfigurierten Diagramm wird das Volumen der Messwertaufnahme für jeden einzelnen Messwert angezeigt.

Namespaces mit hohem Volumen identifizieren

Sie können auch den Messwert und die Ressourcentypen aus dem vorherigen Beispiel verwenden, um das Aufnahmevolumen bestimmten Kubernetes-Namespaces zuzuordnen und dann entsprechende Maßnahmen zu ergreifen. Beispiel:

  • Wenn das Gesamtaufnahmevolumen mit Namespaces korreliert werden soll, wählen Sie die folgenden Labels für das Feld Gruppieren nach aus:

    • attribution_dimension
    • attribution_id
  • Wählen Sie die folgenden Labels für das Feld Gruppieren nach aus, um das Aufnahmevolumen einzelner Messwerte mit Namespaces zu korrelieren:

    • attribution_dimension
    • attribution_id
    • metric_type
  • So identifizieren Sie die Namespaces, die für einen bestimmten Messwert mit hohem Volumen verantwortlich sind:

    1. Ermitteln Sie den Messwerttyp für den Messwert mit hohem Volumen. Verwenden Sie dazu eines der anderen Beispiele, um die Messwerttypen mit hohem Volumen zu identifizieren. Der Messwerttyp ist der String in der Diagrammlegende, der mit prometheus.googleapis.com/ beginnt.
    2. Wenn Sie die Diagrammdaten auf einen bestimmten Messwerttyp beschränken möchten, fügen Sie im Feld Filter einen Filter für den Messwerttyp hinzu. Beispiel:

      metric_type=prometheus.googleapis.com/container_tasks_state/gauge

    3. Wählen Sie die folgenden Labels für das Feld Gruppieren nach aus:

      • attribution_dimension
      • attribution_id
  • Wenn Sie Aufnahme nach Google Cloud-Region sehen möchten, fügen Sie dem Feld Gruppieren nach das Label Standort hinzu.

  • Wenn Sie die Aufnahme nach Cloud-Projekt sehen möchten, fügen Sie dem Feld Gruppieren nach das Label resource_container hinzu.