In diesem Dokument wird beschrieben, wie Sie Google Cloud Managed Service for Prometheus mit einer selbst bereitgestellten Erfassung einrichten. Eine Beispielanwendung wird in einem Kubernetes-Cluster bereitgestellt und von einem Prometheus-Server überwacht, der erfasste Messwerte in Monarch speichert.
Dieses Dokument enthält Anleitungen für folgende Aufgaben:
- Umgebung und Befehlszeilentools einrichten
- Dienstkonto für die Workload Identity Federation for GKE in GKE-Clustern konfigurieren
- Prometheus-Ersatzbinärdatei in Kubernetes ausführen
- Steuern, welche Messwerte in Managed Service for Prometheus aufgenommen werden
- Managed Service for Prometheus in prometheus-operator-Einrichtungen einbinden
- Prometheus-Binärdatei manuell kompilieren und ausführen
Bei der selbst bereitgestellten Datenerhebung verwalten Sie Ihre Prometheus-Installation wie gewohnt. Der einzige Unterschied besteht darin, dass Sie anstelle der vorgelagerten Prometheus-Binärdatei die Managed Service for Prometheus-Ersatzbinärdatei gke.gcr.io/prometheus-engine/prometheus:v2.45.3-gmp.9-gke.0
ausführen.
Die Ersatzbinärdatei bietet zusätzliche Konfigurationsoptionen mit den --export.*
-Flags. Weitere Informationen finden Sie in der Ausgabe der Option --help
. In diesem Dokument werden die wichtigsten Optionen erläutert.
Managed Service for Prometheus unterstützt nicht den Export von Messwerten von einem Föderationsserver oder von einem Server, der als Remote-Schreibempfänger verwendet wird. Mithilfe von Filtern und lokalen Aggregationen können Sie alle Funktionen des Föderationsservers replizieren, einschließlich der Aufnahme von Volumes durch Aggregieren von Daten vor dem Senden an Monarch.
Das Streaming von Daten an Managed Service for Prometheus verbraucht zusätzliche Ressourcen. Wenn Sie Collectors selbst bereitstellen, sollten Sie die CPU- und Speicherlimits um das Fünffache erhöhen und an die tatsächliche Nutzung anpassen.
Weitere Informationen zur verwalteten und selbst bereitgestellten Datenerhebung finden Sie unter Datenerhebung mit Managed Service for Prometheus.
Hinweise
In diesem Abschnitt wird die Konfiguration beschrieben, die für die in diesem Dokument beschriebenen Aufgaben erforderlich ist.
Projekte und Tools einrichten
Zum Verwenden von Google Cloud Managed Service for Prometheus benötigen Sie folgende Ressourcen:
Ein Google Cloud-Projekt mit aktivierter Cloud Monitoring API.
Wenn Sie kein Google Cloud-Projekt haben, gehen Sie so vor:
Wechseln Sie in der Google Cloud Console zu Neues Projekt:
Geben Sie im Feld Projektname einen Namen für Ihr Projekt ein und klicken Sie dann auf Erstellen.
Wechseln Sie zu Billing (Abrechnung):
Wählen Sie das Projekt aus, das Sie gerade erstellt haben, falls es nicht bereits oben auf der Seite ausgewählt wurde.
Sie werden aufgefordert, ein vorhandenes Zahlungsprofil auszuwählen oder ein neues Zahlungsprofil zu erstellen.
Die Monitoring API ist für neue Projekte standardmäßig aktiviert.
Wenn Sie bereits ein Google Cloud-Projekt haben, muss die Monitoring API aktiviert sein:
Gehen Sie zu APIs & Dienste:
Wählen Sie Ihr Projekt aus.
Klicken Sie auf APIs und Dienste aktivieren.
Suchen Sie nach „Monitoring“.
Klicken Sie in den Suchergebnissen auf "Cloud Monitoring API".
Wenn "API aktiviert" nicht angezeigt wird, klicken Sie auf die Schaltfläche Aktivieren.
Einen Kubernetes-Cluster. Wenn Sie keinen Kubernetes-Cluster haben, folgen Sie der Anleitung in der Kurzanleitung für GKE.
Sie benötigen außerdem die folgenden Befehlszeilentools:
gcloud
kubectl
Die Tools gcloud
und kubectl
sind Teil der Google Cloud CLI. Informationen zur Installation finden Sie unter Komponenten der Google Cloud-Befehlszeile verwalten. Führen Sie den folgenden Befehl aus, um die installierten gloud CLI-Komponenten aufzurufen:
gcloud components list
Konfigurierung Ihrer Umgebung
Führen Sie die folgende Konfiguration aus, um zu vermeiden, dass Sie Ihre Projekt-ID oder den Clusternamen wiederholt eingeben müssen:
Konfigurieren Sie die Befehlszeilentools so:
Konfigurieren Sie die gcloud CLI so, dass sie auf die ID Ihres Google Cloud-Projekts verweist:
gcloud config set project PROJECT_ID
Konfigurieren Sie die
kubectl
-Befehlszeile für die Verwendung Ihres Clusters:kubectl config set-cluster CLUSTER_NAME
Weitere Informationen zu diesen Tools finden Sie hier:
Namespace einrichten
Erstellen Sie den Kubernetes-Namespace NAMESPACE_NAME
für Ressourcen, die Sie als Teil der Beispielanwendung erstellen:
kubectl create ns NAMESPACE_NAME
Anmeldedaten für das Dienstkonto prüfen
Sie können diesen Abschnitt überspringen, wenn in Ihrem Kubernetes-Cluster die Workload Identity Federation for GKE aktiviert ist.
Bei Ausführung in GKE ruft Managed Service for Prometheus automatisch Anmeldedaten aus der Umgebung anhand des Compute Engine-Standarddienstkontos ab. Das Standarddienstkonto hat standardmäßig die erforderlichen Berechtigungen monitoring.metricWriter
und monitoring.viewer
. Wenn Sie Workload Identity Federation for GKE nicht verwenden und zuvor eine dieser Rollen aus dem Standardknotendienstkonto entfernt haben, müssen Sie diese fehlenden Berechtigungen wieder hinzufügen, bevor Sie fortfahren.
Wenn Sie nicht GKE ausführen, finden Sie weitere Informationen unter Anmeldedaten explizit angeben.
Dienstkonto für die Workload Identity Federation for GKE konfigurieren
Sie können diesen Abschnitt überspringen, wenn in Ihrem Kubernetes-Cluster die Workload Identity Federation for GKE nicht aktiviert ist.
Managed Service for Prometheus erfasst Messwertdaten mithilfe der Cloud Monitoring API. Wenn in Ihrem Cluster die Workload Identity Federation for GKE verwendet wird, müssen Sie Ihrem Kubernetes-Dienstkonto die Berechtigung für die Monitoring API erteilen. In diesem Abschnitt wird Folgendes beschrieben:
- Dediziertes Google Cloud-Dienstkonto
gmp-test-sa
erstellen - Google Cloud-Dienstkonto an das Standard-Kubernetes-Dienstkonto im Test-Namespace
NAMESPACE_NAME
binden - Dem Google Cloud-Dienstkonto die erforderliche Berechtigung gewähren
Dienstkonto erstellen und binden
Dieser Schritt wird an mehreren Stellen in der Dokumentation zu Managed Service for Prometheus aufgeführt. Wenn Sie diesen Schritt bereits als Teil einer vorherigen Aufgabe ausgeführt haben, müssen Sie ihn nicht wiederholen. Fahren Sie mit Dienstkonto autorisieren fort.
Mit der folgenden Befehlssequenz wird das Dienstkonto gmp-test-sa
erstellt und an das Standard-Kubernetes-Dienstkonto im Namespace NAMESPACE_NAME
gebunden:
gcloud config set project PROJECT_ID \ && gcloud iam service-accounts create gmp-test-sa \ && gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:PROJECT_ID.svc.id.goog[NAMESPACE_NAME/default]" \ gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ && kubectl annotate serviceaccount \ --namespace NAMESPACE_NAME \ default \ iam.gke.io/gcp-service-account=gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com
Wenn Sie einen anderen GKE-Namespace oder ein anderes GKE-Dienstkonto verwenden, passen Sie die Befehle entsprechend an.
Dienstkonto autorisieren
Gruppen zusammengehöriger Berechtigungen werden in Rollen zusammengefasst und Sie weisen die Rollen einem Hauptkonto zu, in diesem Beispiel dem Google Cloud-Dienstkonto. Weitere Informationen zu Monitoring-Rollen finden Sie unter Zugriffssteuerung.
Mit dem folgenden Befehl werden dem Google Cloud-Dienstkonto gmp-test-sa
die Monitoring API-Rollen zugewiesen, die zum Schreiben von Messwertdaten erforderlich sind.
Wenn Sie dem Google Cloud-Dienstkonto im Rahmen der vorherigen Aufgabe bereits eine bestimmte Rolle zugewiesen haben, müssen Sie dies nicht noch einmal tun.
gcloud projects add-iam-policy-binding PROJECT_ID\ --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter
Fehlerbehebung der Konfiguration von Workload Identity Federation for GKE
Wenn Sie Probleme mit der Workload Identity Federation for GKE haben, lesen Sie die Dokumentation zum Prüfen der Workload Identity Federation for GKE-Einrichtung und zur Fehlerbehebung bei der Workload Identity Federation for GKE.
Da Tippfehler und partielle Kopierfunktionen die häufigsten Fehlerquellen bei der Konfiguration von Workload Identity Federation for GKE sind, empfehlen wir dringend die bearbeitbaren Variablen und anklickbaren Symbole, die in die Codebeispiele in dieser Anleitung eingebettet sind.
Workload Identity Federation for GKE in Produktionsumgebungen
Das in diesem Dokument beschriebene Beispiel bindet das Google Cloud-Dienstkonto an das Standard-Kubernetes-Dienstkonto und gewährt dem Google Cloud-Dienstkonto alle erforderlichen Berechtigungen zur Verwendung der Monitoring API.
In einer Produktionsumgebung können Sie einen feiner abgestimmten Ansatz mit einem Dienstkonto für jede Komponente nutzen, das jeweils nur minimale Berechtigungen hat. Weitere Informationen zum Konfigurieren von Dienstkonten für die Verwaltung von Workload Identity finden Sie unter Workload Identity Federation for GKE verwenden.
Selbst bereitgestellte Erfassung einrichten
In diesem Abschnitt wird beschrieben, wie Sie eine Beispielanwendung einrichten und ausführen, die eine selbst bereitgestellte Erfassung verwendet.
Beispielanwendung bereitstellen
Die Beispielanwendung gibt Folgendes aus:
der Zählermesswert example_requests_total
und den example_random_numbers
Histogramm-Messwert (unter anderem) am Port metrics
. Das Manifest
für die Anwendung definiert drei Replikate.
Führen Sie den folgenden Befehl aus, um die Beispielanwendung bereitzustellen:
kubectl -n NAMESPACE_NAME apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.13.0/examples/example-app.yaml
Prometheus-Ersatzbinärdatei ausführen
Zur Aufnahme der von der Beispielanwendung ausgegebenen Messwertdaten stellen Sie die verzweigte Version des Prometheus-Servers bereit, die für die Extraktion der Messwerte der Arbeitslast und ihres eigenen Messwertendpunkts konfiguriert ist.
Führen Sie den folgenden Befehl aus, um den verzweigten Server bereitzustellen:
kubectl -n NAMESPACE_NAME apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.13.0/examples/prometheus.yaml
Der bereitgestellte Prometheus-Server ist eine schlanke Fork der vorgelagerten Prometheus-Binärdatei. Er verhält sich wie ein Standard-Prometheus-Server, nimmt aber auch Daten in Managed Service for Prometheus auf.
Das obige Manifest stellt ein einfaches Arbeitsbeispiel dar, das Daten an den globalen Datenspeicher, Monarch, sendet. Es wird keine lokale Kopie der Daten dauerhaft gespeichert. Informationen zur Funktionsweise der vordefinierten Konfiguration und zu ihrer Erweiterung finden Sie in der Open-Source-Konfigurationsdokumentation für Prometheus.
Das vordefinierte Image funktioniert nur auf Linux-Knoten. Wenn Sie Ziele extrahieren möchten, die auf Windows-Knoten ausgeführt werden, stellen Sie entweder den Server auf einem Linux-Knoten bereit und konfigurieren Sie ihn so, dass Endpunkte auf den Windows-Knoten extrahiert werden oder erstellen Sie die Binärdatei für Windows selbst.
Prüfen Sie, ob die Pods für den Prometheus-Server und die Beispielanwendung erfolgreich bereitgestellt wurden:
kubectl -n NAMESPACE_NAME get pod
Wenn die Bereitstellung erfolgreich war, sieht die Ausgabe in etwa so aus:
NAME READY STATUS RESTARTS AGE prom-example-84c6f547f5-fglbr 1/1 Running 0 5m prom-example-84c6f547f5-jnjp4 1/1 Running 0 5m prom-example-84c6f547f5-sqdww 1/1 Running 0 5m prometheus-test-0 2/2 Running 1 3m
Wenn Sie GKE ausführen, können Sie Folgendes lesen:
- Informationen zum Abfragen der von der Beispielanwendung aufgenommenen Messwerte finden Sie unter Abfrage mit Cloud Monitoring oder Abfrage mit Grafana.
- Informationen zur Verwendung von prometheus-operator und kube-prometheus mit einer selbst bereitgestellten Erfassung sowie zum Erstellen und Ausführen der Binärdatei für den verwalteten Dienst finden Sie unter Weitere Themen für die selbst bereitgestellte Erfassung.
Wenn die Ausführung außerhalb von GKE erfolgt, müssen Sie ein Dienstkonto erstellen und es zum Schreiben Ihrer Messwertdaten autorisieren. Dies wird im folgenden Abschnitt beschrieben.
Anmeldedaten explizit angeben
Bei der Ausführung in GKE ruft der erfassende Prometheus-Server automatisch Anmeldedaten aus der Umgebung anhand des Dienstkontos des Knotens oder der Einrichtung von Workload Identity Federation for GKE ab.
In Nicht-GKE-Kubernetes-Clustern müssen Anmeldedaten explizit mit Flags oder der Umgebungsvariablen GOOGLE_APPLICATION_CREDENTIALS
für den erfassenden Prometheus-Server bereitgestellt werden.
Legen Sie den Kontext auf Ihr Zielprojekt fest:
gcloud config set project PROJECT_ID
Erstellen Sie ein Dienstkonto:
gcloud iam service-accounts create gmp-test-sa
Mit diesem Schritt wird das Dienstkonto erstellt, das Sie möglicherweise bereits in der Anleitung für Workload Identity Federation for GKE erstellt haben.
Gewähren Sie die erforderlichen Berechtigungen für das Dienstkonto:
gcloud projects add-iam-policy-binding PROJECT_ID\ --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter
Erstellen Sie einen Schlüssel für das Dienstkonto und laden Sie ihn herunter:
gcloud iam service-accounts keys create gmp-test-sa-key.json \ --iam-account=gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com
Fügen Sie dem Nicht-GKE-Cluster die Schlüsseldatei als Secret hinzu:
kubectl -n NAMESPACE_NAME create secret generic gmp-test-sa \ --from-file=key.json=gmp-test-sa-key.json
Öffnen Sie die Prometheus-StatefulSet.Ressource zur Bearbeitung:
kubectl -n NAMESPACE_NAME edit statefulset prometheus-test
Fügen Sie der Ressource den fett formatierten Text hinzu:
apiVersion: apps/v1 kind: StatefulSet metadata: namespace: NAMESPACE_NAME name: example spec: template containers: - name: prometheus args: - --export.credentials-file=/gmp/key.json ... volumeMounts: - name: gmp-sa mountPath: /gmp readOnly: true ... volumes: - name: gmp-sa secret: secretName: gmp-test-sa ...
Speichern Sie die Datei und schließen Sie den Editor. Nachdem die Änderung angewendet wurde, werden die Pods neu erstellt und beginnen mit der Authentifizierung beim Messwert-Backend mit dem angegebenen Dienstkonto.
GOOGLE_APPLICATION_CREDENTIALS
festlegen.Weitere Themen für die selbst bereitgestellte Erfassung
In diesem Abschnitt wird Folgendes beschrieben:
- Daten filtern, die Sie für den verwalteten Dienst exportieren
- Vorhandene Bereitstellungskonfigurationen konvertieren
- Führen Sie die Prometheus-Binärdatei im Hochverfügbarkeitsmodus aus.
- Prometheus-Ersatzbinärdatei erstellen und ausführen
- Managed Service for Prometheus außerhalb von Google Cloud ausführen.
Exportierte Messwerte filtern
Wenn Sie viele Daten erheben, möchten Sie möglicherweise verhindern, dass einige Zeitachsen an Managed Service for Prometheus gesendet werden, um Kosten niedrig zu halten.
Sie können in Ihrer Prometheus-Scraping-Konfiguration reguläre Messwert-Relabeling-Konfigurationen verwenden. Mit Relabeling-Konfigurationen können Labels basierend auf Labelübereinstimmungen zum Zeitpunkt der Aufnahme ignoriert werden.
Manchmal möchten Sie Daten lokal aufnehmen, aber nicht in Managed Service for Prometheus exportieren. Zum Filtern exportierter Messwerte können Sie das Flag
--export.match
verwenden.Das Flag gibt einen oder mehrere PromQL-Serienselektoren an und kann mehrmals verwendet werden. Eine Zeitreihe wird für Prometheus in den verwalteten Dienst exportiert, wenn sie alle Selektoren in mindestens einem der Flags erfüllt. Das heißt, wenn die Berechtigung bestimmt wird, werden die Voraussetzungen in einem einzelnen Flag mit AND verknüpft, während die Bedingungen in separaten Flags mit OR verknüpft werden. Im folgenden Beispiel werden zwei Instanzen des Flags verwendet:
./prometheus \ --export.match='{job="prometheus"}' \ --export.match='{__name__=~"job:.+"}' \ ...
Diese Änderung sorgt dafür, dass nur Messwerte für den Job "prometheus" sowie Messwerte, die von Aufzeichnungsregeln erzeugt werden, die auf der Jobebene aggregieren (wenn den Best Practices zur Benennung gefolgt wird), exportiert werden. Beispiele für alle anderen Zeitachsen werden herausgefiltert. Standardmäßig sind keine Selektoren angegeben und alle Zeitachsen werden exportiert.
Das Flag
--export.match
hat dieselbe Semantik wie der Parametermatch[]
für die Prometheus-Föderation. Daher können Sie die Föderationseinrichtungen zu Managed Service for Prometheus migrieren. Verwenden Sie dazu die Selektoren von Ihrem Föderationsserver direkt als Flags auf den Prometheus-Servern, auf denen Ihr Prometheus-Föderationsserver das Scraping durchführt. Das Exportieren von Messwerten von einem Föderationsserver in den verwalteten Dienst wird nicht unterstützt.Wenn Sie Messwerte vom Typ
histogram
in einen Filter aufnehmen möchten, müssen Sie den Wert_count
,_sum
- und_bucket
-Messwerte angeben. Sie können dies auch mit einem Platzhalterabgleich tun, z. B. mit dem Auslöser{__name__=~"histogram_metric_.+"}
.Wenn du die
prometheus-operator
-Bibliothek verwendest, lege beliebige--export.match
-Flags mit der UmgebungsvariableEXTRA_ARGS
des Container fest. Weitere Informationen finden Sie unter Verwendung mit Prometheus-Operator.Sie können Filter-Flags mit lokal ausgeführten Regeln zur Aufzeichnung und Aggregation von Daten kombinieren, bevor Sie sie an Monarch senden, wodurch die Kardinalität und Kosten reduziert werden. Weitere Informationen finden Sie unter Kostenkontrolle und -zuordnung.
Auf der Cloud Monitoring-Seite Messwertverwaltung können Sie den Betrag steuern, den Sie für abrechenbare Messwerte ausgeben, ohne die Beobachtbarkeit zu beeinträchtigen. Die Seite Messwertverwaltung enthält folgende Informationen:
- Aufnahmevolumen für byte- und probenbasierte Abrechnung für Messwertdomains und einzelne Messwerte
- Daten zu Labels und zur Kardinalität von Messwerten
- Anzahl der Lesevorgänge für jeden Messwert.
- Verwenden Messwerten in Benachrichtigungsrichtlinien und benutzerdefinierten Dashboards
- Rate von Messwert-Schreibfehlern
Mit der Messwertverwaltung können Sie auch unnötige Messwerte ausschließen, sodass keine Kosten für die Datenaufnahme anfallen. Weitere Informationen zur Seite Messwertverwaltung finden Sie unter Messwertnutzung ansehen und verwalten.
Verwendung mit Prometheus-Operator
Die Managed Service for Prometheus Prometheus-Binärdatei kann auch mit einer vorhandenen GKE-Prometheus-Bereitstellung verwendet werden, die vom prometheus-operator verwaltet wird.
Wenn Sie die Binärdatei des verwalteten Dienstes verwenden möchten, ersetzen Sie die Image-Spezifikation in der Prometheus-Ressource:
apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: NAMESPACE_NAME namespace: gmp-system spec: image: gke.gcr.io/prometheus-engine/prometheus:v2.45.3-gmp.9-gke.0 ... replicas: 1 serviceAccountName: default version: v2.35.0 ...
Wenn Sie sich in einem Cluster der Workload Identity Federation for GKE befinden und sich der Namespace oder das Dienstkonto in Ihrer Ressource unterscheidet, wiederholen Sie die Anleitung zur Workload Identity Federation for GKE für den zusätzlichen Namespace und das Kubernetes-Dienstkontopaar.
Bei der Ausführung in einem Nicht-GKE-Kubernetes-Cluster müssen Sie Anmeldedaten manuell angeben. So geben Sie Anmeldedaten an:
Fügen Sie eine entsprechende Dienstkonto-Schlüsseldatei als Secret hinzu, wie unter Anmeldedaten explizit angeben beschrieben.
Ändern Sie die Prometheus-Ressource, um den fett formatierten Text hinzuzufügen:
apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: namespace: gmp-test name: example spec: ... secrets: - gmp-test-sa containers: - name: prometheus env: - name: GOOGLE_APPLICATION_CREDENTIALS value: /gmp/key.json volumeMounts: - name: secret-gmp-test-sa mountPath: /gmp readOnly: true
Sie können die Umgebungsvariable
EXTRA_ARGS
des Containers festlegen, um zusätzliche Flags hinzuzufügen, z. B. die Flags zur Messwertfilterung. Dies erfolgt über eine Umgebungsvariable, da der Abschnittargs
der Containerspezifikation vom Prometheus-Operator verwaltet wird.Verwendung mit kube-prometheus
Sie können Bereitstellungen konfigurieren, die mit der beliebten kube-prometheus-Bibliothek erstellt wurden, um Managed Service for Prometheus zu verwenden.
Da kube-prometheus einige enge interne Abhängigkeiten von seinen Standard-Namespaces und -Dienstkonten hat, sollten Sie nur die Mindestanzahl von Feldern ändern, die zum Senden von Daten an Managed Service for Prometheus erforderlich ist.
Ersetzen Sie in
manifests/prometheus-prometheus.yaml
die Image-Spezifikation und deaktivieren Sie die Hochverfügbarkeitssammlung, indem Siereplicas
auf 1 reduzieren:apiVersion: monitoring.coreos.com/v1 kind: Prometheus ... spec: image: gke.gcr.io/prometheus-engine/prometheus:v2.45.3-gmp.9-gke.0 ... replicas: 1 version: v2.35.0 ...
Wenn die Ausführung in GKE erfolgt und Sie das Standarddienstkonto auf dem Knoten nicht geändert haben, sollten durch das Anwenden der geänderten Manifeste sofort Daten an Managed Service for Prometheus gesendet werden. Andernfalls müssen Sie möglicherweise ein Dienstkonto konfigurieren und anwenden. Bei der Ausführung in GKE und der Verwendung von Workload Identity müssen Sie möglicherweise das Dienstkonto
prometheus-k8s
im Namespacemonitoring
erstellen und autorisieren. Folgen Sie der Anleitung im Abschnitt „prometheus-operator“ bei der Ausführung auf einem Nicht-GKE-Kubernetes-Cluster.Beachten Sie, dass kube-prometheus standardmäßig viele Messwerte erfasst, die in einer verwalteten Kubernetes-Umgebung wie GKE häufig nicht erforderlich sind. Um Kosten für die Datenaufnahme zu sparen, können Sie kube-prometheus so anpassen, dass nur relevante Messwerte extrahiert und exportierte Messwerte aggressiv gefiltert werden.
Weitere Vorschläge finden Sie unter Kostenkontrolle und Quellenangabe.
Bereitstellung mit Hochverfügbarkeit
Die Prometheus-Ersatzbinärdatei bietet eine integrierte Unterstützung für eine hochverfügbare Sammlung unter Verwendung von Leader-Bestimmung. Replizierte Prometheus-Server im Hochverfügbarkeitsmodus erfassen wie üblich Messwerte und werten Regeln aus, aber nur einer davon sendet Daten an Google Cloud Managed Service for Prometheus.
Replikate desselben Prometheus-Servers müssen immer identische Konfigurationen haben, einschließlich derselben
external_labels
. Diese Anforderung unterscheidet sich von anderen Systemen, die ein spezielles externes Label wie__replica__
verwenden, um Replikate explizit zu unterscheiden.Der Kubernetes API-Server ist ein unterstütztes Backend zur Wahl eines Leaders. Er kann durch Festlegen der folgenden Flags aktiviert werden:
./prometheus ... --export.ha.backend=kube \ --export.ha.kube.namespace=LEASE_NAMESPACE \ --export.ha.kube.name=LEASE_NAME
Die Werte LEASE_NAMESPACE und LEASE_NAME geben die Freigaberessource an, über die die Leader-Auswahl erfolgt. Alle Prometheus-Server, die auf dieselbe Ressource verweisen, gehören zum selben Replikatset. Das Kubernetes-Dienstkonto der Prometheus-Bereitstellung benötigt die Berechtigung zum Lesen und Schreiben der entsprechenden Lease-Ressource. Wenn Sie den Prometheus-Server außerhalb eines Kubernetes-Clusters ausführen, können Sie eine explizite Konfiguration mithilfe des Flags
--export.ha.kube.config
angeben.Danach können Sie den Wert für
replicas
auf 2 oder mehr erhöhen.Reservierte Labels
Managed Service for Prometheus verwendet sechs reservierte Labels, um eine Ressource in Monarch eindeutig zu identifizieren:
project_id
: Die Kennung des Google Cloud-Projekts, das Ihrem Messwert zugeordnet ist. Erforderlich.location
: Der physische Standort (Google Cloud-Region), an dem die Daten gespeichert werden. Dieser Wert ist in der Regel die Region Ihres GKE-Clusters. Wenn Daten aus einer AWS- oder lokalen Bereitstellung erhoben werden, ist der Wert möglicherweise die nächstgelegene Cloud-Projektregion. Erforderlich.cluster
: Der Name des Kubernetes-Clusters, der Ihrem Messwert zugeordnet ist. Wenn nicht in Kubernetes ausgeführt wird, kann dies als beliebige Hierarchieebene verwendet werden, z. B. wie eine Instanzgruppe. Optional, wird aber dringend empfohlen.namespace
: Der Name des Kubernetes-Namespace, der Ihrem Messwert zugeordnet ist. Wenn er nicht in Kubernetes ausgeführt wird, kann er als beliebige Hierarchieebene verwendet werden z. B. als Untergruppe von Instanzen. Optional, wird aber dringend empfohlen.job
: Das Joblabel des Prometheus-Ziels, sofern bekannt. Kann für Ergebnisse der Regelauswertung leer sein. Erforderlich und wird in der Regel automatisch von Prometheus hinzugefügt.instance
: Das Instanzlabel des Prometheus-Ziels, sofern bekannt. Kann für Ergebnisse der Regelauswertung leer sein. Erforderlich und wird in der Regel automatisch von Prometheus hinzugefügt. wenn sie manuell festgelegt oder ein neues Label hinzugefügt wurde nicht hartcodierte Werte wielocalhost
verwenden, da kann führen zu Zeitreihenkonflikten.
Bei der Ausführung in Google Cloud werden die
project_id
,location
undcluster
Labels allen Messwerten automatisch hinzugefügt.Obwohl dies bei der Ausführung in Google Cloud nicht empfohlen wird, können Sie die Die Labels
project_id
,location
,cluster
undnamespace
mithilfe derglobal.external_labels
Abschnitts Ihrer Prometheus-Konfiguration überschreiben. Weitere Informationen finden Sie unter Selbst bereitgestellte Erfassung außerhalb von Google Cloud ausführenWenn Sie reservierte Labels als Messwertlabels verwenden, wird die selbst bereitgestellte Erfassung das Messwertlabel als Wert für den reservierten Label verwenden. Dies kann eine gewisse Flexibilität bieten, kann aber auch zu Fehlern führen, wenn Sie verwenden beispielsweise das Label
location
, um auf etwas anderes als Google Cloud-Region zu verweisen.Binärdateibereitstellungen
Wenn die Ausführung in einer nicht containerisierten Umgebung erfolgen soll, können Sie die Prometheus-Ersatzbinärdatei direkt erstellen.
Quelle erstellen
Wenn Sie bereits einen Prozess zum Kompilieren von Prometheus haben, können Sie unser GitHub-Repository transparent in Ihren Prozess einfügen. Managed Service for Prometheus hat eine eigene Versions-Tag-Erweiterung, um zwischen Releases und vorgelagerten Releases zu unterscheiden.
Zum Erstellen der einfachen Binärdatei müssen die Go-Toolchain und die neuesten Versionen von NPM/Yarn auf dem Computer installiert sein. Weitere Informationen finden Sie in der Anleitung für vorgelagerte Builds.
Klonen Sie das Repository:
git clone https://github.com/GoogleCloudPlatform/prometheus && cd prometheus
Sehen Sie sich das gewünschte Versions-Tag an:
git checkout v2.45.3-gmp.9
Führen Sie die folgenden Befehle aus, um einen Managed Service for Prometheus-Tarball zu erstellen:
make build && make tarball
Der resultierende Tarball und die resultierenden Binärdateien sind in Bezug auf Verzeichnisstruktur und Funktionalität vollständig mit ihren vorgelagerten Varianten kompatibel.
Limits für das Erstellen und Aktualisieren von Messwerten und Labels
Managed Service for Prometheus erzwingt beim Erstellen neuer Messwerte und beim Hinzufügen neuer Messwertlabels zu vorhandenen Messwerten ein Ratenlimit pro Minute. Diese Ratenbegrenzung wird normalerweise nur erreicht, wenn Sie zum ersten Mal eine Einbindung in Managed Service for Prometheus vornehmen, z. B. beim Migrieren einer vorhandenen, ausgereiften Prometheus-Bereitstellung, um die selbst bereitgestellte Sammlung zu verwenden. Dies ist keine Ratenbeschränkung für die Datenaufnahme. Dieses Ratenlimit gilt nur, wenn noch-nie-dagewesene Messwerte erstellt oder neue Messwerte zu vorhandenen Messwerten hinzugefügt werden.
Dieses Kontingent ist fest, aber alle Probleme sollten automatisch behoben werden, wenn neue Messwerte und Messwertlabels bis zum Limit pro Minute erstellt werden.
Weitere Informationen finden Sie unter Fehlerbehebung.
Selbst bereitgestellte Sammlung außerhalb von Google Cloud ausführen
In Compute Engine-Umgebungen, GKE-Umgebungen oder auf einem Computer, auf dem Sie
gcloud login
mit einem ausreichend autorisierten Konto ausgeführt haben, können Sie eine selbst bereitgestellte Sammlung ohne weitere Konfiguration ausführen. Außerhalb von Google Cloud müssen Sie Anmeldedaten, eineproject_id
, in dem die Messwerte enthalten sind, und einenlocation
(Google Cloud-Region), in dem die Messwerte gespeichert werden, explizit angeben. Sie sollten auch die Labelscluster
undnamespace
festlegen, auch wenn die Ausführung in einem nicht-Kubernetes-Umgebung stattfindet.Sie können einen Dienstkontoschlüssel mit dem Flag
--export.credentials-file
oder der UmgebungsvariableGOOGLE_APPLICATION_CREDENTIALS
angeben, wie unter Anmeldedaten explizit angeben beschrieben.Wir empfehlen die Auswahl von
project_id
basierend auf Ihrem geplanten Mandantenmodell für Lesevorgänge. Wählen Sie ein Projekt aus, um Messwerte basierend darauf zu speichern, wie Sie Lesevorgänge später über Messwertbereiche organisieren möchten. Wenn dies für Sie nicht relevant ist, können Sie alles in einem Projekt ablegen.Für
location
empfehlen wir, die Google Cloud-Region auszuwählen, die Ihrer Bereitstellung am nächsten ist. Je weiter die ausgewählte Google Cloud-Region von Ihrer Bereitstellung entfernt ist, desto mehr Schreiblatenz haben Sie und desto mehr sind Sie von potenziellen Netzwerkproblemen betroffen. Sehen Sie sich diese Liste der Regionen in mehreren Clouds an. Wenn es Ihnen nicht wichtig ist, können Sie alles in einer einzigen Google Cloud-Region zusammenfassen. Sie könnenglobal
nicht als Standort verwenden.Bei Ausführung in einer Kubernetes-Umgebung die Werte
cluster
undnamespace
festlegen auf den lokalen Cluster und Namespace. Wenn die Ausführung außerhalb von Kubernetes erfolgt, setzen Sie sie auf Werte die hierarchisch sinnvoll sind. Beispiel: In einer VM-basierten Umgebung, die auf AWS ausgeführt wird, setzen Sie den Wertcluster
auf__aws__
und den Wertnamespace
auf die Instanz-ID. Sie können die Instanz-ID dynamisch eingeben, indem Sie eine Regel zur Labelerstellung verwenden, die den lokalen Metadatenserver aufruft.Als minimales Arbeitsbeispiel können Sie eine lokale, selbst überwachende Prometheus-Binärdatei mit dem folgenden Befehl ausführen:
./prometheus \ --config.file=documentation/examples/prometheus.yaml \ --export.label.project-id=PROJECT_ID \ --export.label.location=REGION \ --export.label.cluster=CLUSTER_NAME \
In diesem Beispiel wird davon ausgegangen, dass Sie die Variable
REGION
auf einen Wert wieus-central1
gesetzt haben.Es wird jedoch empfohlen, die
export
-Ziellabels für den verwalteten Dienst im Abschnittglobal.external_labels
Ihrer Prometheus-Konfiguration festzulegen. In Kubernetes-Umgebungen können Sie beispielsweise die folgende Konfiguration verwenden:global: external_labels: project_id: PROJECT_ID location: REGION cluster: CLUSTER_NAME namespace: local-testing scrape_configs: ...
Für die Ausführung von Managed Service for Prometheus außerhalb von Google Cloud fallen Gebühren für die Datenübertragung an. Für die Übertragung von Daten in Google Cloud fallen Gebühren an. Es können Gebühren für die Übertragung von Daten aus einer anderen Cloud anfallen. Sie können diese Kosten minimieren, indem Sie die Komprimierung mit dem Flag
--export.compression=gzip
aktivieren.Wie geht es weiter?
- PromQL in Cloud Monitoring zum Abfragen von Prometheus-Messwerten verwenden
- Prometheus-Messwerte mit Grafana abfragen
- Verwenden Sie PromQL-Benachrichtigungen in Cloud Monitoring.
- Richten Sie die verwaltete Regelauswertung ein.
- Richten Sie die selbst bereitgestellte Regelauswertung ein.
- Kardinalität und Kosten durch Konfigurieren lokaler Aggregationen reduzieren.