Abfrage mit Grafana

Nachdem Sie Google Cloud Managed Service for Prometheus bereitgestellt haben, können Sie die an den verwalteten Dienst gesendeten Daten abfragen und die Ergebnisse in Diagrammen und Dashboards darstellen.

In diesem Dokument werden Messwertbereiche beschrieben, mit denen die abfragbaren Daten bestimmt werden, und die Verwendung von Grafana zum Abrufen und Verwenden der erhobenen Daten.

Alle Abfrageschnittstellen für Managed Service for Prometheus sind so konfiguriert, dass Daten mit der Cloud Monitoring API aus Monarch abgerufen werden. Durch die Abfrage von Monarch anstelle der Abfrage von lokalen Prometheus-Servern erhalten Sie umfassendes globales Monitoring.

Vorbereitung

Wenn Sie den verwalteten Dienst noch nicht bereitgestellt haben, richten Sie die verwaltete Erfassung oder die selbst bereitgestellte Erfassung ein. Sie können diesen Schritt überspringen, wenn Sie nur Cloud Monitoring-Messwerte mit PromQL abfragen möchten.

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 Lesen 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.

Folgen Sie dieser Anleitung, um Ihr Dienstkonto zum Lesen aus einem Bereich mit Messwerten für mehrere Projekte zu autorisieren, und informieren Sie sich dann unter Abfrage des Projekts ändern.

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \
  --role=roles/monitoring.viewer \
&& \
gcloud projects add-iam-policy-binding PROJECT_ID \
  --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \
  --role=roles/iam.serviceAccountTokenCreator

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.

Abfragen und Messwertbereiche

Die Daten, die Sie abfragen können, werden durch den Messwertbereich von Cloud Monitoring-Konstrukten festgelegt, unabhängig von der Methode, die Sie zum Abfragen der Daten verwenden. Wenn Sie beispielsweise Grafana verwenden, um Managed Service for Prometheus-Daten abzufragen, muss jeder Messwertbereich als separate Datenquelle konfiguriert werden.

Ein Monitoring-Messwertbereich ist ein schreibgeschütztes Konstrukt, mit dem Sie Messwertdaten abfragen können, die zu mehreren Google Cloud-Projekten gehören. Jeder Messwertbereich wird von einem festgelegten Google Cloud-Projekt gehostet, dem sogenannten Scoping-Projekt.

Standardmäßig ist ein Projekt das den Bereich festlegende Projekt für den eigenen Messwertbereich und der Messwertbereich enthält die Messwerte und die Konfiguration für dieses Projekt. Ein den Bereich festlegendes Projekt kann mehrere überwachte Projekte in seinem Messwertbereich enthalten und die Messwerte und Konfigurationen aus allen überwachten Projekten im Messwertbereich sind für das den Bereich festlegende Projekt sichtbar. Ein überwachtes Projekt kann auch zu mehreren Messwertbereichen gehören.

Wenn Sie die Messwerte in einem den Bereich festlegenden Projekt abfragen und dieses Projekt einen Messwertbereich für mehrere Projekte hostet, können Sie Daten aus mehreren Projekten abrufen. Wenn der Messwertbereich alle Ihre Projekte enthält, werden Ihre Abfragen und Regeln global ausgewertet.

Weitere Informationen zu den Bereich festlegenden Projekten und Messwertbereichen finden Sie unter Messwertbereiche. Informationen zum Konfigurieren eines Messwertbereichs für mehrere Projekte finden Sie unter Messwerte für mehrere Projekte ansehen.

Managed Service for Prometheus-Daten in Cloud Monitoring

Am einfachsten können Sie prüfen, ob Ihre Prometheus-Daten exportiert werden, indem Sie die Cloud Monitoring-Seite "Metrics Explorer" in der Google Cloud Console verwenden, die PromQL unterstützt. Eine Anleitung finden Sie unter Abfragen mit PromQL in Cloud Monitoring.

Sie können auch Ihre Grafana-Dashboards in Cloud Monitoring importieren. So können Sie weiterhin von der Community erstellte oder persönliche Grafana-Dashboards verwenden, ohne eine Grafana-Instanz konfigurieren oder bereitstellen zu müssen.

Grafana

Managed Service for Prometheus verwendet die integrierte Prometheus-Datenquelle für Grafana. Das bedeutet, dass Sie weiterhin alle von der Community erstellten oder persönlichen Grafana-Dashboards ohne Änderungen verwenden können.

Grafana bei Bedarf bereitstellen

Wenn in Ihrem Cluster keine Grafana-Bereitstellung ausgeführt wird, können Sie eine sitzungsspezifische Testbereitstellung zum Experimentieren erstellen.

Wenn Sie eine sitzungsspezifische Grafana-Bereitstellung erstellen möchten, wenden Sie das Manifest grafana.yaml von Managed Service for Prometheus auf Ihren Cluster an und führen Sie eine Portweiterleitung des grafana-Dienstes zu Ihrem lokalen Computer durch. Aufgrund von CORS-Einschränkungen können Sie nicht über Cloud Shell auf eine Grafana-Bereitstellung zugreifen.

  1. Wenden Sie das grafana.yaml-Manifest an:

    kubectl -n NAMESPACE_NAME apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.13.0/examples/grafana.yaml
    
  2. Führen Sie eine Portweiterleitung des grafana-Dienstes zum lokalen Computer durch. In diesem Beispiel wird der Dienst an Port 3000 weitergeleitet:

    kubectl -n NAMESPACE_NAME port-forward svc/grafana 3000
    

    Dieser Befehl gibt nichts zurück und während er ausgeführt wird, meldet er Zugriffe auf die URL.

    Sie können Grafana in Ihrem Browser unter der URL http://localhost:3000 mit dem Nutzernamen admin:admin aufrufen.

Fügen Sie Grafana dann eine neue Prometheus-Datenquelle hinzu:

  1. Wechseln Sie zu Ihrer Grafana-Bereitstellung, indem Sie beispielsweise die URL http://localhost:3000 aufrufen, um die Grafana-Begrüßungsseite zu erreichen.

  2. Wählen Sie im Hauptmenü von Grafana die Option Verbindungen und dann Datenquellen aus.

    Datenquelle in Grafana hinzufügen

  3. Wählen Sie Datenquelle hinzufügen und dann Prometheus als Zeitachsendatenbank aus.

    Hinzufügen einer Prometheus-Datenquelle.

  4. Geben Sie einen Namen für die Datenquelle ein, legen Sie das Feld URL aufhttp://localhost:9090 fest und wählen Sie dann Speichern und testen. Sie können Fehler ignorieren, die darauf hinweisen, dass die Datenquelle nicht richtig konfiguriert ist.

  5. Notieren Sie sich die URL des lokalen Dienstes für Ihre Bereitstellung. Sie wird etwa so aussehen:

    http://grafana.NAMESPACE_NAME.svc:3000
    

Grafana-Datenquelle konfigurieren und authentifizieren

Alle Google Cloud APIs erfordern eine Authentifizierung mit OAuth2. OAuth2-Authentifizierung für Dienstkonten, die mit Prometheus-Datenquellen verwendet werden, wird jedoch nicht von Grafana unterstützt. Um Grafana mit Managed Service for Prometheus zu verwenden, verwenden Sie die Datenquellen-Synchronizer, um OAuth2-Anmeldedaten für Ihr Dienstkonto zu generieren und über die Grafana Data Source API an Grafana zu synchronisieren.

Sie müssen den Datenquellen-Synchronizer verwenden, um Grafana zu konfigurieren und zu autorisieren, Daten global abzufragen. Wenn Sie diese Schritte nicht ausführen, führt Grafana nur Abfragen für Daten auf dem lokalen Prometheus-Server aus.

Der Datenquellen-Syncer ist ein Befehlszeilentool, das einen Cronjob verwendet, um Konfigurationswerte per Remotezugriff mit einer bestimmten Grafana Prometheus-Datenquelle zu synchronisieren. Dadurch wird sichergestellt, dass für Ihre Grafana-Datenquelle Folgendes korrekt konfiguriert ist:

  • Authentifizierung, durch regelmäßige Aktualisierung eines OAuth2-Zugriffstokens
  • Die Cloud Monitoring API als Prometheus-Server-URL festgelegt
  • Die HTTP-Methode ist auf GET festgelegt.
  • Der Prometheus-Typ und die Prometheus-Version müssen mindestens 2.40.x sein.
  • Die Zeitüberschreitungswerte für HTTP- und Abfragevorgänge sind auf 2 Minuten festgelegt

Der Datenquellen-Syncer verwendet ein Google Cloud-Dienstkonto, um regelmäßig ein Google Cloud API-Zugriffstoken mit den erforderlichen IAM-Berechtigungen zum Abfragen von Cloud Monitoring-Daten zu generieren. Da Google Cloud API-Zugriffstokens eine Lebensdauer von einer Stunde haben, wird der Syncer für Datenquellen alle 30 Minuten ausgeführt, um sicherzustellen, dass Sie eine unterbrechungsfreie authentifizierte Verbindung zwischen Grafana und der Monitoring API Cloud haben.

Sie können den Datenquellensynchronisierer entweder mit einem Kubernetes-CronJob oder mit Cloud Run und Cloud Scheduler ausführen, um eine vollständig serverlose Lösung zu erhalten. Wenn Sie Grafana lokal bereitstellen, z. B. mit Open-Source-Grafana oder Grafana Enterprise, empfehlen wir, den Datenquellen-Synchronizer in demselben Cluster auszuführen, in dem Grafana ausgeführt wird. Wenn Sie Grafana Cloud verwenden, empfehlen wir die vollständig serverlose Option.

Serverless verwenden

So stellen Sie einen serverlosen Datenquellen-Syncer mit Cloud Run und Cloud Scheduler bereit und führen ihn aus:

  1. Wählen Sie ein Projekt aus, in dem Sie den Datenquellen-Syncer bereitstellen möchten. Wir empfehlen, das Scoping-Projekt eines Messwertbereichs mit mehreren Projekten auszuwählen. Der Datenquellen-Syncer verwendet das konfigurierte Google Cloud-Projekt als das Umfang festlegende Projekt.

    Konfigurieren und autorisieren Sie als Nächstes ein Dienstkonto für den Datenquellen-Synchronizer. Mit der folgenden Befehlssequenz wird ein Dienstkonto erstellt und ihm mehrere IAM-Rollen zugewiesen. Mit den ersten beiden Rollen kann das Dienstkonto Daten aus der Cloud Monitoring API lesen und Dienstkontotokens generieren. Mit den letzten beiden Rollen kann das Dienstkonto das Grafana-Dienstkontotoken aus Secret Manager lesen und Cloud Run aufrufen:

    gcloud config set project PROJECT_ID \
    &&
    gcloud iam service-accounts create gmp-ds-syncer-sa \
    &&
    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:gmp-ds-syncer-sa@PROJECT_ID.iam.gserviceaccount.com \
    --role=roles/monitoring.viewer \
    && \
    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:gmp-ds-syncer-sa@PROJECT_ID.iam.gserviceaccount.com \
    --role=roles/iam.serviceAccountTokenCreator \
    && \
    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:gmp-ds-syncer-sa@PROJECT_ID.iam.gserviceaccount.com \
    --role=roles/secretmanager.secretAccessor
    && \
    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:gmp-ds-syncer-sa@PROJECT_ID.iam.gserviceaccount.com \
    --role=roles/run.invoker
    
  2. Ermitteln Sie die URL Ihrer Grafana-Instanz, z. B. https://yourcompanyname.grafana.net für eine Grafana Cloud-Bereitstellung. Auf Ihre Grafana-Instanz muss von Cloud Run aus zugegriffen werden können, also über das Internet.

    Wenn auf Ihre Grafana-Instanz nicht über das Internet zugegriffen werden kann, empfehlen wir, den Datenquellen-Syncer stattdessen auf Kubernetes bereitzustellen.

  3. Wählen Sie die Grafana Prometheus-Datenquelle aus, die Sie für Managed Service for Prometheus verwenden möchten. Dies kann eine neue oder eine bereits vorhandene Prometheus-Datenquelle sein. Ermitteln Sie dann die Datenquellen-UID. Die Datenquellen-UID finden Sie im letzten Teil der URL, wenn Sie eine Datenquelle untersuchen oder konfigurieren. Beispiel:https://yourcompanyname.grafana.net/connections/datasources/edit/GRAFANA_DATASOURCE_UID. Kopieren Sie nicht die gesamte Datenquellen-URL. Kopieren Sie nur die eindeutige Kennung in der URL.

    Suchen Sie in Grafana nach der UID einer Datenquelle.

  4. Richten Sie ein Grafana-Dienstkonto ein, indem Sie das Dienstkonto erstellen und ein Token für das Konto generieren:

    1. Klicken Sie in der Grafana-Navigationsleiste auf Verwaltung > Nutzer und Zugriff > Dienstkonten.

    2. Erstellen Sie das Dienstkonto in Grafana. Klicken Sie dazu auf Dienstkonto hinzufügen, geben Sie ihm einen Namen und weisen Sie ihm die Rolle „Datenquellen > Writer“ zu. Klicken Sie auf die Schaltfläche Übernehmen, um die Rolle zuzuweisen. In älteren Versionen von Grafana können Sie stattdessen die Rolle „Administrator“ verwenden.

    3. Klicken Sie auf Dienstkonto-Token hinzufügen.

    4. Legen Sie den Tokenablauf auf „Kein Ablauf“ fest und klicken Sie auf Token generieren. Kopieren Sie dann das generierte Token in die Zwischenablage, um es im nächsten Schritt als GRAFANA_SERVICE_ACCOUNT_TOKEN zu verwenden:

      Generieren und speichern Sie ein Dienstkonto-Token in Grafana.

  5. Legen Sie die folgenden Dokumentationsvariablen anhand der Ergebnisse der vorherigen Schritte fest. Sie müssen das nicht in ein Terminal einfügen:

    # These values are required.
    REGION # The Google Cloud region where you want to run your Cloud Run job, such as us-central1.
    PROJECT_ID # The Project ID from Step 1.
    GRAFANA_INSTANCE_URL # The Grafana instance URL from step 2. This is a URL. Include "http://" or "https://".
    GRAFANA_DATASOURCE_UID # The Grafana data source UID from step 3. This is not a URL.
    GRAFANA_SERVICE_ACCOUNT_TOKEN # The Grafana service account token from step 4.
    
  6. So erstellen Sie ein Secret in Secret Manager:

    gcloud secrets create datasource-syncer --replication-policy="automatic" && \
    echo -n GRAFANA_SERVICE_ACCOUNT_TOKEN | gcloud secrets versions add datasource-syncer --data-file=-
    
  7. Erstellen Sie die folgende YAML-Datei und nennen Sie sie cloud-run-datasource-syncer.yaml:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
     name: datasource-syncer-job
    spec:
     template:
       spec:
         taskCount: 1
         template:
           spec:
             containers:
             - name: datasource-syncer
               image: gke.gcr.io/prometheus-engine/datasource-syncer:v0.14.0-gke.0
               args:
               - "--datasource-uids=GRAFANA_DATASOURCE_UID"
               - "--grafana-api-endpoint=GRAFANA_INSTANCE_URL"
               - "--project-id=PROJECT_ID"
               env:
               - name: GRAFANA_SERVICE_ACCOUNT_TOKEN
                 valueFrom:
                   secretKeyRef:
                     key: latest
                     name: datasource-syncer
             serviceAccountName: gmp-ds-syncer-sa@PROJECT_ID.iam.gserviceaccount.com
    

    Führen Sie dann den folgenden Befehl aus, um mit der YAML-Datei einen Cloud Run-Job zu erstellen:

    gcloud run jobs replace cloud-run-datasource-syncer.yaml --region REGION
    
  8. Erstellen Sie in Cloud Scheduler einen Zeitplan, um den Cloud Run-Job alle 10 Minuten auszuführen:

    gcloud scheduler jobs create http datasource-syncer \
    --location REGION \
    --schedule="*/10 * * * *" \
    --uri="https://REGION-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/PROJECT_ID/jobs/datasource-syncer-job:run" \
    --http-method POST \
    --oauth-service-account-email=gmp-ds-syncer-sa@PROJECT_ID.iam.gserviceaccount.com
    

    Führen Sie dann den gerade erstellten Scheduler erzwungen aus:

    gcloud scheduler jobs run datasource-syncer --location REGION
    

    Es kann bis zu 15 Sekunden dauern, bis die Datenquelle aktualisiert ist.

  9. Rufen Sie die neu konfigurierte Grafana-Datenquelle auf und prüfen Sie, ob der Wert der Prometheus-Server-URL mit https://monitoring.googleapis.com beginnt. Möglicherweise müssen Sie die Seite aktualisieren. Sobald die Prüfung abgeschlossen ist, wählen Sie am Ende der Seite die Option Speichern und testen aus. Die Datenquelle ist richtig konfiguriert, wenn ein grünes Häkchen angezeigt wird. Sie müssen mindestens einmal Speichern und testen auswählen, damit die automatische Vervollständigung von Labels in Grafana funktioniert.

Kubernetes verwenden

So stellen Sie den Datenquellen-Syncer in einem Kubernetes-Cluster bereit und führen ihn aus:

  1. Wählen Sie ein Projekt, einen Cluster und einen Namespace aus, in dem Sie den Datenquellen-Syncer bereitstellen möchten. Es wird empfohlen, den Datenquellen-Syncer in einem Cluster bereitzustellen, der zum Scoping-Projekt eines Messwertbereichs mit mehreren Projekten gehört. Der Datenquellen-Syncer verwendet das konfigurierte Google Cloud-Projekt als das Umfang festlegende Projekt.

    Konfigurieren und autorisieren Sie als Nächstes den Datenquellen-Syncer richtig:

    Prüfen Sie dann, ob Sie den Datenquellen-Syncer für Abfragen mehrerer Projekte weiter autorisieren müssen:

  2. Ermitteln Sie die URL Ihrer Grafana-Instanz, z. B. https://yourcompanyname.grafana.net für eine Grafana Cloud-Bereitstellung oder http://grafana.NAMESPACE_NAME.svc:3000 für eine lokale Instanz, die mit der Testbereitstellungs-YAML-Datei konfiguriert wurde.

    Wenn Sie Grafana lokal bereitstellen und Ihr Cluster so konfiguriert ist, dass der gesamte clusterinterne Traffic mithilfe von TLS gesichert wird, müssen Sie https:// in Ihrer URL verwenden und sich mit einer der unterstützten TLS-Authentifizierungoptionen authentifizieren.

  3. Wählen Sie die Grafana Prometheus-Datenquelle aus, die Sie für Managed Service for Prometheus verwenden möchten. Dies kann eine neue oder eine bereits vorhandene Prometheus-Datenquelle sein. Ermitteln Sie dann die Datenquellen-UID. Die Datenquellen-UID finden Sie im letzten Teil der URL, wenn Sie eine Datenquelle untersuchen oder konfigurieren. Beispiel:https://yourcompanyname.grafana.net/connections/datasources/edit/GRAFANA_DATASOURCE_UID. Kopieren Sie nicht die gesamte Datenquellen-URL. Kopieren Sie nur die eindeutige Kennung in der URL.

    Suchen Sie in Grafana nach der UID einer Datenquelle.

  4. Richten Sie ein Grafana-Dienstkonto ein, indem Sie das Dienstkonto erstellen und ein Token für das Konto generieren:

    1. Klicken Sie in der Grafana-Navigationsleiste auf Verwaltung > Nutzer und Zugriff > Dienstkonten.

    2. Erstellen Sie das Dienstkonto in Grafana. Klicken Sie dazu auf Dienstkonto hinzufügen, geben Sie ihm einen Namen und weisen Sie ihm entweder die Rolle „Datenquellen > Writer“ zu. In älteren Versionen von Grafana können Sie stattdessen die Rolle „Administrator“ verwenden.

    3. Klicken Sie auf Dienstkonto-Token hinzufügen.

    4. Legen Sie den Tokenablauf auf „Kein Ablauf“ fest und klicken Sie auf Token generieren. Kopieren Sie dann das generierte Token in die Zwischenablage, um es im nächsten Schritt als GRAFANA_SERVICE_ACCOUNT_TOKEN zu verwenden:

      Generieren und speichern Sie ein Dienstkonto-Token in Grafana.

  5. Richten Sie die folgenden Umgebungsvariablen anhand der vorherigen Schritte ein:

    # These values are required.
    PROJECT_ID=PROJECT_ID # The Project ID from Step 1.
    GRAFANA_API_ENDPOINT=GRAFANA_INSTANCE_URL # The Grafana instance URL from step 2. This is a URL. Include "http://" or "https://".
    DATASOURCE_UIDS=GRAFANA_DATASOURCE_UID # The Grafana data source UID from step 3. This is not a URL.
    GRAFANA_API_TOKEN=GRAFANA_SERVICE_ACCOUNT_TOKEN # The Grafana service account token from step 4.
    
  6. Führen Sie den folgenden Befehl aus, um einen CronJob zu erstellen, der die Datenquelle bei der Initialisierung und anschließend alle 30 Minuten aktualisiert. Wenn Sie die Workload Identity Federation for GKE verwenden, sollte der Wert von NAMESPACE_NAME dem Namespace entsprechen, den Sie zuvor an das Dienstkonto gebunden haben.

    curl https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/0ca68f91fedb8ab9fc5bc6871c3b100dd602e32b/cmd/datasource-syncer/datasource-syncer.yaml \
    | sed 's|$DATASOURCE_UIDS|'"$DATASOURCE_UIDS"'|; s|$GRAFANA_API_ENDPOINT|'"$GRAFANA_API_ENDPOINT"'|; s|$GRAFANA_API_TOKEN|'"$GRAFANA_API_TOKEN"'|; s|$PROJECT_ID|'"$PROJECT_ID"'|;' \
    | kubectl -n NAMESPACE_NAME apply -f -
    
  7. Rufen Sie die neu konfigurierte Grafana-Datenquelle auf und prüfen Sie, ob der Wert der Prometheus-Server-URL mit https://monitoring.googleapis.com beginnt. Möglicherweise müssen Sie die Seite aktualisieren. Sobald die Prüfung abgeschlossen ist, wählen Sie am Ende der Seite die Option Speichern und testen aus. Sie müssen diese Schaltfläche mindestens einmal auswählen, damit die automatische Vervollständigung von Labels in Grafana funktioniert.

Abfragen mit Grafana ausführen

Sie können jetzt Grafana-Dashboards erstellen und Abfragen mit der konfigurierten Datenquelle ausführen. Der folgende Screenshot zeigt ein Grafana-Diagramm mit dem Messwert up:

Grafana-Diagramm für den Messwert „Managed Service for Prometheus up“.

Informationen zum Abfragen von Google Cloud-Systemmesswerten mit PromQL finden Sie unter PromQL für Cloud Monitoring-Messwerte.

Datenquellen-Syncer außerhalb von GKE ausführen

Sie können diesen Abschnitt überspringen, wenn Sie den Datenquellensynchronisierer in einem Google Kubernetes Engine-Cluster ausführen oder die serverlose Option verwenden. Wenn Sie Probleme mit der Authentifizierung in GKE haben, lesen Sie die Informationen unter Anmeldedaten des Dienstkontos prüfen.

Bei der Ausführung in GKE ruft der Datenquellensynchronisierer automatisch Anmeldedaten aus der Umgebung anhand des Dienstkontos des Knotens oder der Einrichtung der Workload Identity Federation for GKE ab. In Nicht-GKE-Kubernetes-Clustern müssen Anmeldedaten explizit mit der Umgebungsvariablen GOOGLE_APPLICATION_CREDENTIALS für den Datenquellensynchronisierer bereitgestellt werden.

  1. Legen Sie den Kontext auf Ihr Zielprojekt fest:

    gcloud config set project PROJECT_ID
    
  2. 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.

  3. 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.viewer \
    && \
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \
      --role=roles/iam.serviceAccountTokenCreator
    

  4. 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
    
  5. Legen Sie den Schlüsseldateipfad mithilfe der Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS fest.

Datenquellen-Syncer autorisieren, um das Monitoring über mehrere Projekte hinweg zu ermöglichen

Managed Service for Prometheus unterstützt das Monitoring mehrerer Projekte mithilfe von Messwertbereichen.

Wenn Sie die serverlose Option verwenden, können Sie mehrere Projekte abfragen, wenn das ausgewählte Projekt das Scoping-Projekt eines Messwertbereichs für mehrere Projekte ist.

Wenn Sie den Datenquellen-Syncer in Kubernetes bereitstellen, ist Ihr lokales Projekt Ihr den Umfang festlegendes Projekt und Sie haben die Anleitung zum Prüfen oder Konfigurieren eines Dienstkontos für das lokale Projekt befolgt, sollten Abfragen mit mehreren Projekten ohne weitere Konfiguration funktionieren.

Wenn Ihr lokales Projekt nicht Ihr den Umfang festlegendes Projekt ist, müssen Sie entweder das Compute-Standarddienstkonto des lokalen Projekts oder Ihr Workload Identity Federation for GKE-Dienstkonto für den monitoring.viewer-Zugriff auf das den Umfang festlegende Projekt autorisieren. Übergeben Sie dann die ID des den Umfang festlegendes Projekts als Wert der Umgebungsvariablen PROJECT_ID.

Wenn Sie das Compute Engine-Dienstkonto default verwenden, haben Sie folgende Möglichkeiten:

So gewähren Sie einem Dienstkonto die Berechtigungen für den Zugriff auf ein anderes Google Cloud-Projekt:

  1. Gewähren Sie dem Dienstkonto die Berechtigung zum Lesen aus dem Zielprojekt, das Sie abfragen möchten:

    gcloud projects add-iam-policy-binding SCOPING_PROJECT_ID \
      --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \
      --role=roles/monitoring.viewer
    
  2. Übergeben Sie beim Konfigurieren des Datenquellen-Syncer die ID des den Umfang festlegenden Projekts als Wert der Umgebungsvariable PROJECT_ID.

Kubernetes-CronJob prüfen

Wenn Sie den Datenquellen-Synchronizer in Kubernetes bereitstellen, können Sie den CronJob prüfen und dafür sorgen, dass alle Variablen korrekt festgelegt sind. Führen Sie dazu den folgenden Befehl aus:

kubectl describe cronjob datasource-syncer

Führen Sie den folgenden Befehl aus, nachdem Sie die Datei datasource-syncer.yaml angewendet haben, um Logs für den Job aufzurufen, der ursprünglich Grafana konfiguriert hat:

kubectl logs job.batch/datasource-syncer-init

Bereinigen

Führen Sie den folgenden Befehl aus, um den Cronjob des Datenquellen-Synchronizers in Kubernetes zu deaktivieren:

kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/main/cmd/datasource-syncer/datasource-syncer.yaml

Wenn Sie den Datenquellen-Synchronizer deaktivieren, wird die verknüpfte Grafana-Instanz nicht mehr mit neuen Authentifizierungsdaten aktualisiert. Das Abfragen von Managed Service for Prometheus funktioniert dann nicht mehr.

API-Kompatibilität

Die folgenden Prometheus HTTP API-Endpunkte werden von Managed Service for Prometheus unter der URL mit dem Präfix https://monitoring.googleapis.com/v1/projects/PROJECT_ID/location/global/prometheus/api/v1/ unterstützt.

Eine vollständige Dokumentation finden Sie in der Referenzdokumentation zur Cloud Monitoring API. Die Prometheus-HTTP-Endpunkte sind in den sprachspezifischen Clientbibliotheken von Cloud Monitoring nicht verfügbar.

Informationen zur PromQL-Kompatibilität finden Sie unter PromQL-Unterstützung.

  • Die folgenden Endpunkte werden vollständig unterstützt:

    • /api/v1/query
    • /api/v1/query_range
    • /api/v1/metadata
    • /api/v1/labels
    • /api/v1/query_exemplars
  • Der Endpunkt /api/v1/label/<label_name>/values funktioniert nur, wenn das Label __name__ entweder durch Verwendung des Werts <label_name> oder durch genaue Übereinstimmung mit einem Serienselektor angegeben wird. Die folgenden Aufrufe werden beispielsweise vollständig unterstützt:

    • /api/v1/label/__name__/values
    • /api/v1/label/__name__/values?match[]={__name__=~".*metricname.*"}
    • /api/v1/label/labelname/values?match[]={__name__="metricname"}

    Diese Einschränkung führt dazu, dass label_values($label)-Variablenabfragen in Grafana fehlschlagen. Stattdessen können Sie label_values($metric, $label) verwenden. Dieser Abfragetyp wird empfohlen, da damit keine Werte für Labels zu Messwerten abgerufen werden, die für das entsprechende Dashboard nicht relevant sind.

  • Der Endpunkt /api/v1/series wird für GET-, aber nicht für POST-Anfragen unterstützt. Wenn Sie den Datenquellensynchronisierung oder Front-End-Proxy verwenden, wird diese Einschränkung für Sie verwaltet. Sie können Ihre Prometheus-Datenquellen in Grafana auch so konfigurieren, dass nur GET-Anfragen gesendet werden. Der Parameter match[] unterstützt den Abgleich regulärer Ausdrücke für das Label __name__ nicht.

Nächste Schritte