In diesem Dokument wird beschrieben, wie Sie Grafana so konfigurieren, dass Messwertdaten aus Cloud Monitoring gelesen werden. Anschließend können Sie PromQL verwenden, um Daten zu visualisieren und in Diagrammen darzustellen. Grafana und Cloud Monitoring sind über einen Prozess namens Syncer für Datenquellen miteinander verknüpft, der die Kommunikation zwischen einer Grafana-Datenquelle und Cloud Monitoring ermöglicht. Der Datenquellen-Syncer führt folgende Aktionen aus:
- Sendet Konfigurationswerte an eine Grafana-Datenquelle.
- Enthält Authentifizierungsanmeldedaten für ein Trusted Cloud by S3NS Dienstkonto Trusted Cloud by S3NS , das Messwertdaten aus Cloud Monitoring lesen kann.
In diesem Dokument wird beschrieben, wie Sie den Datenquellen-Syncer einrichten. Außerdem finden Sie hier Informationen zur Verwendung von PromQL in Cloud Monitoring. In diesem Dokument wird davon ausgegangen, dass Sie bereits mit Grafana vertraut sind.
Grafana zum Lesen von Messwertdaten autorisieren
In diesem Abschnitt wird beschrieben, wie Sie die Autorisierung zwischen Cloud Monitoring und Grafana einrichten, indem Sie einen Datenquellen-Synchronizer verwenden, um Anmeldedaten zu generieren und zu synchronisieren.
Datenquellen-Syncer zur Autorisierung verwenden
AlleTrusted Cloud by S3NS 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 Cloud Monitoring zu verwenden, verwenden Sie den 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 so zu konfigurieren und zu autorisieren, dass Daten global abgefragt werden. 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 Konfigurationswerte per Remotezugriff an eine bestimmte Grafana Prometheus-Datenquelle sendet. 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 ist als Prometheus-Server-URL festgelegt.
- Die HTTP-Methode ist auf GET festgelegt.
- Der Prometheus-Typ und die Version sind auf mindestens 2.40.x festgelegt.
- Die Zeitüberschreitungswerte für HTTP- und Abfragevorgänge sind auf 2 Minuten festgelegt
Der Datenquellen-Syncer muss wiederholt ausgeführt werden. Da Trusted Cloud by S3NS API-Zugriffstokens eine Lebensdauer von einer Stunde haben, wird der Syncer für Datenquellen alle 10 Minuten ausgeführt, um sicherzustellen, dass Sie eine unterbrechungsfreie authentifizierte Verbindung zwischen Grafana und der Cloud Monitoring API haben.
Grafana-Datenquelle konfigurieren und authentifizieren
Mit Grafana können Sie Cloud Monitoring-Messwertdaten aus Google Kubernetes Engine-Diensten oder anderen Umgebungen abfragen. In der Anleitung werden bearbeitbare Variablen verwendet, um ausführbare Befehle zu erstellen. Wir empfehlen dringend, die bearbeitbaren Variablen und anklickbaren Symbole zum Kopieren und Einfügen zu verwenden, die in die Codebeispiele eingebettet sind.
GKE
So stellen Sie den Datenquellen-Syncer in einem Kubernetes-Cluster bereit und führen ihn aus:
Wählen Sie ein Projekt, einen Cluster und einen Namespace aus, in dem Sie den Datenquellen-Syncer bereitstellen möchten.
Konfigurieren und autorisieren Sie als Nächstes den Datenquellen-Syncer richtig:
- Wenn Sie Workload Identity Federation for GKE verwenden, folgen Sie der Anleitung zum Erstellen und Autorisieren eines Dienstkontos. Binden Sie ihn an den Kubernetes-Namespace, in dem Sie den Datenquellen-Syncer ausführen möchten.
- Wenn Sie Workload Identity Federation for GKE nicht verwenden, prüfen Sie, ob Sie das Compute Engine-Standarddienstkonto nicht geändert haben.
Ermitteln Sie die URL Ihrer Grafana-Instanz, z. B.
https://yourcompanyname.grafana.net
für eine Grafana Cloud-Bereitstellung oderhttp://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.Wählen Sie die Grafana Prometheus-Datenquelle aus, die Sie für Cloud Monitoring verwenden möchten. Dies kann eine neue oder eine bereits vorhandene 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.Grafana-Dienstkonto einrichten: Erstellen Sie das Dienstkonto und generieren Sie ein Token für das Konto:
- Klicken Sie in der Grafana-Navigationsleiste auf Administration> „Users and Access“ (Nutzer und Zugriff) > „Service Accounts“ (Dienstkonten).
Erstellen Sie das Dienstkonto. Klicken Sie dazu auf Dienstkonto hinzufügen, geben Sie ihm einen Namen und weisen Sie ihm die Rolle „Administrator“ in Grafana zu. Wenn Ihre Version von Grafana detailliertere Berechtigungen zulässt, können Sie die Rolle Data Sources > Writer verwenden.
Klicken Sie auf Dienstkonto-Token hinzufügen.
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.
Richten Sie die folgenden Umgebungsvariablen anhand der vorherigen Schritte ein:
# These values are required. PROJECT_ID=SCOPING_PROJECT_ID # The value from Step 1. GRAFANA_API_ENDPOINT=GRAFANA_INSTANCE_URL # The value from step 2. This is a URL. DATASOURCE_UIDS=GRAFANA_DATASOURCE_UID # The value from step 3. This is not a URL. GRAFANA_API_TOKEN=GRAFANA_SERVICE_ACCOUNT_TOKEN # The value from step 4. GCM_ENDPOINT_OVERRIDE=--gcm-endpoint-override="https://monitoring.s3nsapis.fr/v1/projects/PROJECT_ID/location/global/prometheus/"
Führen Sie den folgenden Befehl aus, um einen CronJob zu erstellen, der die Datenquelle bei der Initialisierung und anschließend alle 10 Minuten aktualisiert. Wenn Sie die Workload Identity-Föderation für GKE verwenden, sollte der Wert von NAMESPACE_NAME derselbe Namespace sein, den Sie zuvor an das Dienstkonto gebunden haben.
curl https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.15.3/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"'|;' s|$GCM_ENDPOINT_OVERRIDE|'"$GCM_ENDPOINT_OVERRIDE"'|; \ | kubectl -n NAMESPACE_NAME apply -f -
Rufen Sie die neu konfigurierte Grafana-Datenquelle auf und prüfen Sie, ob der Wert der Prometheus-Server-URL mit
https://monitoring.s3nsapis.fr
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.
Anmeldedaten für das Dienstkonto prüfen
Wenn in Ihrem Kubernetes-Cluster die Workload Identity Federation for GKE aktiviert ist, können Sie diesen Abschnitt überspringen.
Bei Ausführung in GKE ruft Cloud Monitoring 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.
Dienstkonto für die Workload Identity Federation for GKE konfigurieren
Wenn in Ihrem Kubernetes-Cluster die Workload Identity Federation for GKE nicht aktiviert ist, können Sie diesen Abschnitt überspringen.
Cloud Monitoring erfasst Messwertdaten mithilfe der Cloud Monitoring API. Wenn Ihr Cluster Workload Identity Federation for GKE verwendet, müssen Sie Ihrem Kubernetes-Dienstkonto die Berechtigung für die Monitoring API erteilen. In diesem Abschnitt wird Folgendes beschrieben:
- Dediziertes Trusted Cloud by S3NS -Dienstkonto
SERVICE_ACCT_NAME
erstellen - Trusted Cloud -Dienstkonto an das Standard-Kubernetes-Dienstkonto im Test-Namespace
NAMESPACE_NAME
binden - Dem Trusted Cloud -Dienstkonto die erforderliche Berechtigung gewähren
Dienstkonto erstellen und binden
Dieser Schritt wird an mehreren Stellen in der Cloud Monitoring-Dokumentation 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 SERVICE_ACCT_NAME
erstellt und an das Standard-Kubernetes-Dienstkonto im Namespace NAMESPACE_NAME
gebunden:
gcloud config set project PROJECT_ID \ && gcloud iam service-accounts create SERVICE_ACCT_NAME \ && gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:PROJECT_ID.svc.id.goog[NAMESPACE_NAME/default]" \ SERVICE_ACCT_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com \ && kubectl annotate serviceaccount \ --namespace NAMESPACE_NAME \ default \ iam.gke.io/gcp-service-account=SERVICE_ACCT_NAME@PROJECT_ID.s3ns-system.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 Trusted Cloud-Dienstkonto. Weitere Informationen zu Monitoring-Rollen finden Sie unter Zugriffssteuerung.
Mit dem folgenden Befehl werden dem Dienstkonto Trusted Cloud ,SERVICE_ACCT_NAME
, die Monitoring API-Rollen zugewiesen, die zum Lesen von Messwertdaten erforderlich sind.
Wenn Sie dem Dienstkonto Trusted Cloud 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:SERVICE_ACCT_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com \ --role=roles/monitoring.viewer \ && \ gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCT_NAME@PROJECT_ID.s3ns-system.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 Trusted Cloud -Dienstkonto an das Standard-Kubernetes-Dienstkonto und gewährt dem Trusted 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.
Anderswo
So stellen Sie den Datenquellen-Synchronizer in anderen Umgebungen als Google Kubernetes Engine bereit und führen ihn aus:
Richten Sie ein Dienstkonto für den Datenquellen-Synchronisierer ein:
Legen Sie das Standardprojekt für
gcloud
-Befehle fest:gcloud config set project PROJECT_ID
Erstellen Sie ein Dienstkonto für den Datenquellen-Synchronisierer:
gcloud iam service-accounts create DS_SYNCER_SVCACCT_NAME
Gewähren Sie dem Dienstkonto die Berechtigung zum Lesen von Messwertdaten:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:DS_SYNCER_SVCACCT_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com \ --role=roles/monitoring.viewer \ && \ gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:DS_SYNCER_SVCACCT_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Erstellen Sie einen Schlüssel für das Dienstkonto:
gcloud iam service-accounts keys create DS_SYNCER_SVCACCT_KEYFILE_NAME.json \ --iam-account DS_SYNCER_SVCACCT_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com
Der Pfad zu diesem Verzeichnis wird in einem späteren Schritt verwendet, um eine Umgebungsvariable festzulegen. Führen Sie den Befehl
pwd
aus, um den Pfad zu ermitteln, und notieren Sie den Wert:pwd DS_SYNCER_SVCACCT_KEYFILE_DIR
Ermitteln Sie die URL Ihrer Grafana-Instanz, z. B.
https://yourcompanyname.grafana.net
für eine Grafana Cloud-Bereitstellung oderhttps://localhost:3000
für eine lokale Testinstanz. Dieser Wert wird im Befehl zum Ausführen des Datenquellen-Syncers verwendet.Wenn Sie Grafana lokal für einen Kubernetes-Cluster bereitstellen, der so konfiguriert ist, dass der gesamte clusterinterne Traffic mithilfe von TLS gesichert wird, müssen Sie
https://
in Ihrer URL verwenden und sich im nächsten Schritt mit einer der unterstützten TLS-Authentifizierungoptionen authentifizieren.Fügen Sie in Grafana eine Prometheus-Datenquelle hinzu, die für Cloud Monitoring verwendet werden soll, und notieren Sie die UID der Datenquelle:
Klicken Sie auf Verbindungen > Datenquellen > Neue Datenquelle hinzufügen. Wählen Sie Prometheus aus der Liste der Zeitachsendatenbanken aus.
Geben Sie im Feld Prometheus-Server-URL den folgenden Wert ein:
https://monitoring.s3nsapis.fr/v1/projects/PROJECT_ID/location/global/prometheus/
Klicken Sie auf Speichern und testen.
Die URL im Browser für die Datenquellenseite enthält die Benutzeroberfläche der Datenquelle, z. B.
https://yourcompanyname.grafana.net/connections/datasources/edit/GRAFANA_DATASOURCE_UID.
.Notieren Sie sich die UID der Datenquelle. Dieser Wert wird im Befehl zum Ausführen des Datenquellen-Syncers verwendet. Kopieren Sie nicht die gesamte Datenquellen-URL. Kopieren Sie nur die eindeutige Kennung in der URL, z. B.
ee0z3woqjah34e
:GRAFANA_DATASOURCE_UID
Grafana-Dienstkonto einrichten: Erstellen Sie das Dienstkonto und generieren Sie ein Token für das Dienstkonto:
- Klicken Sie in der Grafana-Navigationsleiste auf Administration> „Users and Access“ (Nutzer und Zugriff) > „Service Accounts“ (Dienstkonten).
Erstellen Sie das Dienstkonto. Klicken Sie dazu auf Dienstkonto hinzufügen, geben Sie ihm einen Namen und weisen Sie ihm die Rolle „Administrator“ in Grafana zu.
Klicken Sie auf Dienstkonto-Token hinzufügen.
Legen Sie den Tokenablauf auf „Kein Ablauf“ fest und klicken Sie auf Token generieren. Kopieren Sie dann das generierte Token in die folgende bearbeitbare Variable. Dieser Wert wird im Befehl zum Ausführen des Datenquellen-Syncers verwendet.
GRAFANA_SERVICE_ACCOUNT_TOKEN
Führen Sie den Datenquellen-Syncer aus. Sie können den Syncer über ein vorgefertigtes Container-Image mit Docker ausführen oder den Code aus der Quelle erstellen und manuell ausführen. Der Datenquellen-Syncer ist eine Go-Anwendung. Sie müssen also Go installiert haben, um den Syncer aus dem Quellcode zu erstellen.
Docker
Führen Sie den Datenquellen-Synchronisierer über Docker mit dem Container-Image
gke.gcr.io/prometheus-engine/datasource-syncer:v0.15.3-gke.0
aus. Zum Testen können Sie den Syncer manuell ausführen. Nachdem Sie überprüft haben, ob die Verbindung funktioniert, müssen Sie einen automatisierten Mechanismus wie einen Cron-Job verwenden, um den Syncer für Datenquellen alle 10 Minuten auszuführen. Zugriffstokens haben eine Lebensdauer von einer Stunde. So stellen Sie sicher, dass Ihre Verbindung nicht unterbrochen wird.Verwenden Sie den folgenden Docker-Befehl, um den Datenquellen-Syncer auszuführen:
docker run --network container:grafana -v "DS_SYNCER_SVCACCT_KEYFILE_DIR/DS_SYNCER_SVCACCT_KEYFILE_NAME.json:/app/DS_SYNCER_SVCACCT_KEYFILE_NAME.json" gke.gcr.io/prometheus-engine/datasource-syncer:v0.15.3-gke.0 -datasource-uids=UID_OF_GRAFANA_DATASOURCE -grafana-api-token=GRAFANA_SERVICE_ACCOUNT_TOKEN -grafana-api-endpoint=URL_OF_GRAFANA_INSTANCE -project-id=PROJECT_ID -query.credentials-file=DS_SYNCER_SVCACCT_KEYFILE_DIR/DS_SYNCER_SVCACCT_KEYFILE_NAME.json -gcm-endpoint-override="https://monitoring.s3nsapis.fr/v1/projects/PROJECT_ID/location/global/prometheus/"
So erstellen Sie einen
cron
-Job zum Ausführen des Datenquellen-Synchronizers:Bearbeiten Sie die Crontab:
cron -e
Fügen Sie einen Eintrag hinzu, der den vorherigen Befehl alle 10 Minuten ausführt:
*/10 * * * * * docker run --network container:grafana -v "DS_SYNCER_SVCACCT_KEYFILE_DIR/DS_SYNCER_SVCACCT_KEYFILE_NAME.json:/app/<KEY_ID>" gke.gcr.io/prometheus-engine/datasource-syncer:v0.15.3-gke.0 -datasource-uids=UID_OF_GRAFANA_DATASOURCE -grafana-api-token=GRAFANA_SERVICE_ACCOUNT_TOKEN -grafana-api-endpoint=URL_OF_GRAFANA_INSTANCE -project-id=PROJECT_ID -query.credentials-file=DS_SYNCER_SVCACCT_KEYFILE_DIR/DS_SYNCER_SVCACCT_KEYFILE_NAME.json -gcm-endpoint-override="https://monitoring.s3nsapis.fr/v1/projects/PROJECT_ID/location/global/prometheus/"
Weitere Informationen zu den Befehlszeilenoptionen, die beim Ausführen des Datenquellen-Syncers verfügbar sind, finden Sie im README-Dokument.
Quellcode
So erstellen Sie den Datenquellen-Syncer selbst:
Erstellen Sie ein Verzeichnis für den Code und wechseln Sie in dieses Verzeichnis:
mkdir data-source-syncer-code cd data-source-syncer-code
Der Pfad zu diesem Verzeichnis wird in einem späteren Schritt verwendet, um eine Umgebungsvariable festzulegen. Führen Sie den Befehl
pwd
aus, um den Pfad abzurufen, und speichern Sie ihn in der bearbeitbaren Variablen:pwd PATH_TO_LOCAL_REPO_COPY
Klonen Sie den Code aus dem aktuellen Release des Repositorys:
git clone -b 'v0.15.3' --single-branch https://github.com/GoogleCloudPlatform/prometheus-engine
Wechseln Sie in das Verzeichnis
datasource-syncer
und erstellen Sie den Code:cd prometheus-engine/cmd/datasource-syncer go build main.go
Führen Sie den Datenquellen-Syncer aus. Zum Testen können Sie den Syncer manuell ausführen. Nachdem Sie überprüft haben, ob die Verbindung funktioniert, müssen Sie einen automatisierten Mechanismus wie einen
cron
-Job verwenden, um den Syncer für Datenquellen alle 10 Minuten auszuführen. Zugriffstokens haben eine Lebensdauer von einer Stunde. So stellen Sie sicher, dass Ihre Verbindung nicht unterbrochen wird.Verwenden Sie den folgenden Befehl, um den Datenquellen-Syncer manuell auszuführen:
main -datasource-uids=UID_OF_GRAFANA_DATASOURCE -grafana-api-token=GRAFANA_SERVICE_ACCOUNT_TOKEN -grafana-api-endpoint=URL_OF_GRAFANA_INSTANCE -project-id=PROJECT_ID -query.credentials-file=DS_SYNCER_SVCACCT_KEYFILE_DIR/DS_SYNCER_SVCACCT_KEYFILE_NAME.json -gcm-endpoint-override="https://monitoring.s3nsapis.fr/v1/projects/PROJECT_ID/location/global/prometheus/"
So erstellen Sie einen
cron
-Job zum Ausführen des Datenquellen-Synchronizers:Bearbeiten Sie die Crontab:
cron -e
Fügen Sie einen Eintrag hinzu, der den vorherigen Befehl alle 10 Minuten ausführt:
*/10 * * * * * main -datasource-uids=UID_OF_GRAFANA_DATASOURCE -grafana-api-token=GRAFANA_SERVICE_ACCOUNT_TOKEN -grafana-api-endpoint=URL_OF_GRAFANA_INSTANCE -project-id=PROJECT_ID -query.credentials-file=DS_SYNCER_SVCACCT_KEYFILE_DIR/DS_SYNCER_SVCACCT_KEYFILE_NAME.json -gcm-endpoint-override="https://monitoring.s3nsapis.fr/v1/projects/PROJECT_ID/location/global/prometheus/"
Weitere Informationen zu den Befehlszeilenoptionen, die beim Ausführen des Datenquellen-Syncers verfügbar sind, finden Sie im README-Dokument.
Rufen Sie die neu konfigurierte Grafana-Datenquelle auf und prüfen Sie, ob der Wert der Prometheus-Server-URL mit
https://monitoring.s3nsapis.fr
beginnt. Möglicherweise müssen Sie die Seite aktualisieren. Sobald die Prüfung abgeschlossen ist, klicken Sie am Ende der Seite auf Speichern und testen. Sie müssen mindestens einmal auf diese Schaltfläche klicken, damit die automatische Vervollständigung von Labels in Grafana funktioniert.
Messwerte in Grafana ansehen
So rufen Sie Messwerte aus Ihrem Trusted Cloud -Projekt in Grafana auf:
Klicken Sie im Navigationsbereich oder auf der Seite Datenquellen auf Erkunden.
Wählen Sie im Feld Messwert über das Drop-down-Menü einen Messwert aus. Sie können auch Metrics Explorer auswählen, um nach bestimmten Messwerten zu suchen. Wenn der Messwert mit mehr als einer überwachten Ressource verknüpft ist, müssen Sie Ihrer Abfrage einen
monitored_resource
-Label-Filter hinzufügen und einen Ressourcentyp auswählen.Fügen Sie weitere Labelfilter und ‑vorgänge hinzu, um Ihre Abfrage zu erstellen.
Informationen zum Erstellen von Visualisierungen und Dashboards in Grafana finden Sie unter Panels and visualizations.
Cloud Monitoring-Messwerte mit PromQL abfragen
Cloud Monitoring-Messwerte können mit der UTF-8-Spezifikation für PromQL abgefragt werden. UTF-8-Messwertnamen müssen in Anführungszeichen gesetzt und in die geschweiften Klammern verschoben werden. Labelnamen müssen auch in Anführungszeichen gesetzt werden, wenn sie Zeichen enthalten, die mit der alten Version nicht kompatibel sind. Für den Cloud Monitoring-Messwert kubernetes.io/container/cpu/limit_utilization
sind die folgenden Abfragen gleichwertig:
{"kubernetes.io/container/cpu/limit_utilization", pod_name="foo"}
{__name__="kubernetes.io/container/cpu/limit_utilization", pod_name="foo"}
.{"__name__"="kubernetes.io/container/cpu/limit_utilization", "pod_name"="foo"}
.
Cloud Monitoring-Verteilungsmesswerte können wie Prometheus-Histogramme abgefragt werden, wobei das Suffix _count
, _sum
oder _bucket
an den Messwertnamen angehängt wird.
Für Diagramme und Dashboards, die vor der UTF-8-Kompatibilität erstellt wurden, werden Cloud Monitoring-Messwerte abgefragt, indem ihre Namen in Legacy-PromQL-kompatible Entsprechungen konvertiert werden. Weitere Informationen zu den alten PromQL-Konvertierungsregeln finden Sie unter Cloud Monitoring-Messwerte altem PromQL zuordnen.
PromQL lernen
Grundlagen zur Verwendung von PromQL erhalten Sie in der Open-Source-Dokumentation. Die folgenden Ressourcen können Ihnen den Einstieg erleichtern:
Typ der überwachten Ressource angeben
Wenn ein Cloud Monitoring-Messwert nur einem einzelnen von Cloud Monitoring überwachten Ressourcentyp zugeordnet ist, funktioniert die PromQL-Abfrage, ohne manuell einen Ressourcentyp anzugeben. Einige Messwerte in Cloud Monitoring, darunter einige Systemmesswerte, lassen sich jedoch mehr als einem Ressourcentyp zuordnen.Sie können prüfen, welche überwachten Ressourcentypen einem Messwert zugeordnet sind. Sehen Sie dazu in der Liste der Trusted Cloud by S3NS Messwerte nach. Jeder Eintrag in der Dokumentation enthält die zugehörigen überwachten Ressourcentypen in der ersten Spalte des jeweiligen Eintrags unter dem Typ. Wenn keine überwachten Ressourcentypen aufgeführt sind, kann der Messwert einem beliebigen Typ zugeordnet werden.
Wenn ein Messwert mit mehr als einem Ressourcentyp verknüpft ist, müssen Sie den Ressourcentyp in Ihrer PromQL-Abfrage angeben. Mit dem speziellen Label monitored_resource
können Sie den Ressourcentyp auswählen.
Überwachte Ressourcentypen sind in den meisten Fällen ein kurzer String wie gce_instance
. Gelegentlich werden sie jedoch als vollständige URIs wie monitoring.googleapis.com/MetricIngestionAttribution
angezeigt. Korrekt formulierte PromQL-Abfragen können so aussehen:
logging_googleapis_com:byte_count{monitored_resource="k8s_container"}
loadbalancing_googleapis_com:l3_external_egress_bytes_count{monitored_resource="loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule"}
Wenn Sie das Label monitored_resource
nicht verwenden, wenn es benötigt wird, erhalten Sie folgende Fehlermeldung:
metric is configured to be used with more than one monitored resource type;
series selector must specify a label matcher on monitored resource name
Labelkonflikte lösen
In Cloud Monitoring können Labels entweder zum Messwert oder zur Ressource gehören.
Wenn ein Messwertlabel denselben Schlüsselnamen wie ein Ressourcenlabel hat, können Sie speziell auf das Messwertlabel verweisen, indem Sie dem Labelschlüsselnamen in Ihrer Abfrage das Präfix metric_
hinzufügen.
Angenommen, Sie haben ein Ressourcenlabel und ein Messwertlabel mit dem Namen pod_name
im Messwert example.googleapis.com/user/widget_count
.
Um nach dem Wert des Ressourcenlabels zu filtern, verwenden Sie
example_googleapis_com:user_widget_count{pod_name="RESOURCE_LABEL_VALUE"}
Um nach dem Wert des Messwertlabels zu filtern, verwenden Sie
example_googleapis_com:user_widget_count{metric_pod_name="METRIC_LABEL_VALUE"}
Cloud Monitoring-Messwertnamen dem alten PromQL zuordnen
Cloud Monitoring-Messwertnamen umfassen zwei Komponenten: eine Domain (z. B. compute.googleapis.com/
) und einen Pfad (z. B. instance/disk/max_read_ops_count
). Da Legacy-PromQL nur die Sonderzeichen :
und _
unterstützt, müssen Sie die folgenden Regeln anwenden, um Monitoring-Messwertnamen mit Legacy-PromQL kompatibel zu machen:
- Ersetzen Sie den ersten
/
durch:
. - Ersetzen Sie alle anderen Sonderzeichen (einschließlich
.
und anderer/
-Zeichen) durch_
.
In der folgenden Tabelle sind einige Messwertnamen und ihre Legacy-PromQL-Entsprechungen aufgeführt:
Cloud Monitoring-Messwertname | Legacy-PromQL-Messwertname |
---|---|
compute.googleapis.com/instance/cpu/utilization |
compute_googleapis_com:instance_cpu_utilization |
logging.googleapis.com/log_entry_count |
logging_googleapis_com:log_entry_count |
Cloud Monitoring-Verteilungsmesswerte können wie Prometheus-Histogramme abgefragt werden, wobei das Suffix _count
, _sum
oder _bucket
an den Messwertnamen angehängt wird:
Cloud Monitoring-Messwertname | Legacy-PromQL-Messwertnamen |
---|---|
networking.googleapis.com/vm_flow/rtt |
networking_googleapis_com:vm_flow_rtt_sum networking_googleapis_com:vm_flow_rtt_count networking_googleapis_com:vm_flow_rtt_bucket
|
PromQL-Kompatibilität
PromQL für Cloud Monitoring funktioniert möglicherweise etwas anders als Upstream-PromQL.
PromQL-Abfragen in Cloud Monitoring werden mithilfe einer internen Abfragesprache teilweise im Monarch-Backend ausgewertet. Es gibt einige bekannte Unterschiede bei den Abfrageergebnissen. Abgesehen von den in diesem Abschnitt aufgeführten Unterschieden entspricht die PromQL in Cloud Monitoring der PromQL, die in Prometheus-Version 2.44 verfügbar ist.PromQL-Funktionen, die nach Prometheus-Version 2.44 hinzugefügt wurden, werden möglicherweise nicht unterstützt.
UTF-8-Unterstützung
PromQL für Cloud Monitoring unterstützt UTF-8-Abfragen.
Wenn Ihr Prometheus-Messwertname nur aus alphanumerischen Zeichen sowie den Zeichen _
oder :
besteht und Ihre Labelschlüssel nur aus alphanumerischen Zeichen sowie dem Zeichen _
bestehen, können Sie die Abfrage mit der herkömmlichen PromQL-Syntax durchführen.
Eine gültige Anfrage könnte beispielsweise so aussehen: job:my_metric:sum{label_key="label_value"}
.
Wenn in Ihrem Prometheus-Messwertnamen jedoch Sonderzeichen außer _
oder :
verwendet werden oder in Ihren Labelschlüsseln Sonderzeichen außer _
, müssen Sie Ihre Abfrage gemäß der UTF-8-Spezifikation für PromQL erstellen.
UTF-8-Messwertnamen müssen in Anführungszeichen gesetzt und in die geschweiften Klammern verschoben werden. Labelnamen müssen auch in Anführungszeichen gesetzt werden, wenn sie Zeichen enthalten, die mit der alten Version nicht kompatibel sind. Die folgenden Beispiele für gültige Anfragen sind alle gleichwertig:
{"my.domain.com/metric/name_bucket", "label.key"="label.value"}
{__name__="my.domain.com/metric/name_bucket", "label.key"="label.value"}
{"__name__"="my.domain.com/metric/name_bucket", "label.key"="label.value"}
Abgleich mit Messwertnamen
Es wird nur der exakte Abgleich mit Messwertnamen unterstützt. Ihre Abfrage muss eine genaue Übereinstimmung mit dem Messwertnamen enthalten.
Wir empfehlen die folgenden Problemumgehungen für häufige Szenarien, in denen ein regulärer Ausdrucksabgleich für das Label __name__
verwendet wird:
- In Prometheus-Adapterkonfigurationen wird häufig der Operator
=~
verwendet, um mehrere Messwertnamen abzugleichen. Um dieses Problem zu beheben, erweitern Sie die Konfiguration so, dass für jeden Messwert eine separate Richtlinie verwendet wird, und geben Sie jeden Messwert explizit an. So wird auch verhindert, dass Sie versehentlich Autoscaling für unerwartete Messwerte verwenden. - Reguläre Ausdrücke werden häufig verwendet, um mehrere nicht dimensionale Messwerte im selben Diagramm darzustellen. Wenn Sie beispielsweise einen Messwert wie
cpu_servicename_usage
haben, können Sie einen Platzhalter verwenden, um alle Ihre Dienste zusammen darzustellen. Die Verwendung nicht dimensionaler Messwerte wie dieser ist in Cloud Monitoring ausdrücklich nicht empfehlenswert und führt zu einer extrem schlechten Abfrageleistung. Um dieses Problem zu beheben, müssen Sie alle Dimensionen in Messwertlabels verschieben, anstatt sie in den Messwertnamen einzubetten. - Das Abfragen mehrerer Messwerte wird häufig verwendet, um zu sehen, welche Messwerte für Abfragen verfügbar sind. Wir empfehlen stattdessen, die
/labels/__name__/values
-Funktion zu verwenden, um Messwerte zu ermitteln.
Veraltung
Veralterung wird im Monarch-Backend nicht unterstützt.
Berechnung von irate
Wenn das Lookback-Window für die Funktion irate
kleiner als die Schrittgröße ist, wird das Fenster auf die Schrittgröße erhöht.
Monarch erfordert diese Änderung, um sicherzustellen, dass keine der Eingabedaten in der Ausgabe vollständig ignoriert werden. Dieser Unterschied gilt auch für rate
-Berechnungen.
Berechnung von rate
und increase
Wenn das Lookback-Window für die Funktion rate
kleiner als die Schrittgröße ist, wird das Fenster auf die Schrittgröße erhöht.
Monarch erfordert diese Änderung, um sicherzustellen, dass keine der Eingabedaten in der Ausgabe vollständig ignoriert werden. Dieser Unterschied gilt auch für irate
-Berechnungen.
Es gibt Unterschiede bei Interpolations- und Extrapolationsberechnungen. Monarch verwendet einen anderen Interpolationsalgorithmus als Prometheus. Dieser Unterschied kann zu leicht unterschiedlichen Ergebnissen führen. Beispielsweise werden Monarch-Zählerstichproben mit einem Zeitraum gespeichert, nicht mit dem einzelnen Zeitstempel, den Prometheus verwendet. Daher können Zählerstichproben in Monarch in eine Ratenberechnung einbezogen werden, obwohl sie vom Prometheus-Zeitstempel ausgeschlossen werden würden. Das führt in der Regel zu genaueren Raten, insbesondere bei Abfragen am Anfang oder Ende der zugrunde liegenden Zeitachse.
Berechnung von histogram_quantile
Eine PromQL-histogram_quantile
-Berechnung in einem Histogramm ohne Stichproben erzeugt einen NaN-Wert. Die Berechnung der internen Abfragesprache erzeugt keinen Wert. Der Punkt am Zeitstempel wird stattdessen ignoriert.
Die Unterschiede bei der Ratenberechnung können sich auch auf die Eingabe für histogram_quantile
-Abfragen auswirken.
Typspezifische Funktionen für unterschiedlich typisierte Messwerte
Obwohl das vorgelagerte Prometheus schwach typisiert ist, ist Monarch streng typisiert. Das bedeutet, dass die Ausführung von Funktionen mit spezifischer Typisierung auf einem Messwert mit anderer Typisierung (z. B. rate()
auf einem GAUGE-Messwert oder histogram_quantile()
auf einem COUNTER- oder nicht typisierten Messwert) in Cloud Monitoring nicht funktioniert, obwohl diese Funktionen im vorgelagerten Prometheus funktionieren.