Messwerte abfragen und aufrufen

Nachdem Sie Messwerte aus Ihren bereitgestellten Arbeitslasten in der Air-Gap-Appliance von Google Distributed Cloud (GDC) erfasst haben, können Sie mit der Analyse beginnen. Um Messwerte zu analysieren, können Sie sie in informativen Grafana-Dashboards visualisieren und filtern oder mit dem curl-Tool für flexibles Scripting und Automatisierung direkt über Cortex darauf zugreifen.

Sie haben zwei Möglichkeiten, auf Ihre Messwerte zuzugreifen:

  • Grafana-Dashboards: Mit intuitiven Visualisierungen von wichtigen Messwerten wie CPU-Auslastung, Speicherverbrauch und Netzwerkaktivität können Sie Trends analysieren und Anomalien erkennen. Grafana bietet eine benutzerfreundliche Oberfläche zum Filtern und Analysieren Ihrer Arbeitslastdaten in Dashboards.
  • Cortex-Endpunkt: Für komplexere Anwendungsfälle können Sie die Cortex-Instanz Ihres Projekts direkt über das curl-Tool in einer Befehlszeile abfragen. Cortex speichert die Prometheus-Messwerte Ihres Projekts und bietet einen HTTP-Endpunkt für den programmatischen Zugriff. Mit diesem Zugriff können Sie Daten exportieren, Aufgaben automatisieren und benutzerdefinierte Integrationen erstellen.

Hinweis

Bitten Sie den IAM-Administrator Ihrer Organisation oder Ihres Projekts, Ihnen eine der vordefinierten Rollen „Organization Grafana Viewer“ oder „Project Grafana Viewer“ zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Abfragen und Visualisieren von Messwerten in Grafana-Dashboards benötigen. Je nach erforderlichem Zugriff und den erforderlichen Berechtigungen können Sie Grafana-Rollen in einer Organisation oder einem Projekt erhalten.

Alternativ können Sie Ihren Projekt-IAM-Administrator bitten, Ihnen die Rolle „Project Cortex Prometheus Viewer“ in Ihrem Projektnamespace zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Abfragen von Messwerten über den Cortex-Endpunkt benötigen.

Weitere Informationen zu diesen Rollen finden Sie unter IAM-Berechtigungen vorbereiten.

In der folgenden Tabelle sind die Role-Anforderungen für PA and AO persona zusammengefasst.

Persona Objekt Cluster Rolle Namespace Gruppe/Nutzer Konfiguration
PA grafana org-admin project-grafana-viewer platform-obs Gruppe 1
PA Cortex org-admin project-cortex-prometheus-viewer platform-obs Gruppe 2
PA grafana org-admin project-grafana-viewer platform-obs Nutzer 3
PA Cortex org-admin project-cortex-prometheus-viewer platform-obs Nutzer 4
AO grafana org-admin project-grafana-viewer PROJECT_NAMESPACE Gruppe 1
AO Cortex org-admin project-cortex-prometheus-viewer PROJECT_NAMESPACE Gruppe 2
AO grafana org-admin project-grafana-viewer PROJECT_NAMESPACE Nutzer 3
AO Cortex org-admin project-cortex-prometheus-viewer PROJECT_NAMESPACE Nutzer 4

Ersetzen Sie die folgenden Variablen entsprechend:

Variable Beschreibung
KUBECONFIG Sie benötigen die kubeconfig für den jeweiligen Cluster, der den NAMESPACE enthält, auf den dieses RoleBinding angewendet wird.
RULE_NAME Der eindeutige Name für diese RoleBinding-Ressource im Namespace. Beispiel: io-root-cortex-prometheus-viewer.
NAMESPACE Der Kubernetes-Namespace, in dem dieses RoleBinding erstellt und angewendet wird. Suchen Sie in der vorherigen Tabelle nach der Spalte Namespace.
EMAIL_ADDRESS Die Kennung des Nutzers, dem die Rolle zugewiesen wird. Das ist oft eine E‑Mail-Adresse. Beispiel: platform-administrator@example.com.
ROLE Der Name der Role, die die Berechtigungen enthält, die Sie dem Nutzer gewähren möchten. Nach den in der vorherigen Tabelle verfügbaren Rollen suchen
GROUP_NAME Der Name der Group, zu der der Nutzer mit PA/AO-Rolle gehört. Beispiel: pa-group.
ZONE Name der Zone

Konfiguration 1

Mit dieser Konfiguration wird einer Nutzergruppe die Berechtigung erteilt, auf PA/AO Grafana im org-Cluster zuzugreifen. Nachdem Sie diese Konfiguration eingerichtet haben, können Sie im Abschnitt Grafana-Dashboards dieses Dokuments nachlesen, wie Sie Messwerte in Grafana aufrufen.

  • Kubectl-Befehl

    So sieht das generische Befehlsformat aus:

    kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --group=`GROUP_NAME` --role=project-grafana-viewer
    

    Beispiel:

    kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-grafana-viewers-binding --role=project-grafana-viewer --group=my-team --namespace=platform-obs
    
  • YAML-Datei

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: RULE_NAME
      namespace: NAMESPACE
    subjects:
    - kind: Group
      name: GROUP_NAME
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: project-grafana-viewer
      apiGroup: rbac.authorization.k8s.io
    

Konfiguration 2

Mit dieser Konfiguration werden einer Nutzergruppe Berechtigungen erteilt, um programmatisch auf PA/AO-Messwerte im org-Cluster zuzugreifen. Nachdem Sie diese Konfiguration eingerichtet haben, können Sie die Messwerte programmatisch abfragen. Weitere Informationen finden Sie im Abschnitt Cortex-Endpunkt in diesem Dokument.

  • Kubectl-Befehl

    So sieht das generische Befehlsformat aus:

    kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --group=`GROUP_NAME` --role=project-cortex-prometheus-viewer
    

    Beispiel:

    kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-cortex-prometheus-viewer-binding --role=project-cortex-prometheus-viewer --group=my-team --namespace=platform-obs
    
  • YAML-Datei

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: RULE_NAME
      namespace: NAMESPACE
    subjects:
    - kind: Group
      name: GROUP_NAME
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: project-cortex-prometheus-viewer
      apiGroup: rbac.authorization.k8s.io
    

Konfiguration 3

Mit dieser Konfiguration werden einem Nutzer Berechtigungen für den Zugriff auf PA/AO Grafana im org-Cluster gewährt. Nachdem Sie diese Konfiguration eingerichtet haben, können Sie im Abschnitt Grafana-Dashboards dieses Dokuments nachlesen, wie Sie Messwerte in Grafana aufrufen.

  • Kubectl-Befehl

    So sieht das generische Befehlsformat aus:

    kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --user=`EMAIL_ADDRESS` --role=project-grafana-viewer
    

    Beispiel:

    kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-grafana-viewers-binding --role=project-grafana-viewer --user=my-email@example.com --namespace=platform-obs
    
  • YAML-Datei

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: RULE_NAME
      namespace: NAMESPACE
    subjects:
    - kind: User
      name: EMAIL_ADDRESS
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: project-grafana-viewer
      apiGroup: rbac.authorization.k8s.io
    

Konfiguration 4

Mit dieser Konfiguration werden einem Nutzer Berechtigungen erteilt, um programmatisch auf PA/AO-Messwerte im org-Cluster zuzugreifen. Nachdem Sie diese Konfiguration eingerichtet haben, können Sie die Messwerte programmatisch abfragen. Weitere Informationen finden Sie im Abschnitt Cortex-Endpunkt in diesem Dokument.

  • Kubectl-Befehl

    So sieht das generische Befehlsformat aus:

    kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --user=`EMAIL_ADDRESS` --role=project-cortex-prometheus-viewer
    

    Beispiel:

    kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-cortex-prometheus-viewer-binding --role=project-cortex-prometheus-viewer --user=my-email@example.com --namespace=platform-obs
    
  • YAML-Datei

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: RULE_NAME
      namespace: NAMESPACE
    subjects:
    - kind: User
      name: EMAIL_ADDRESS
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: project-cortex-prometheus-viewer
      apiGroup: rbac.authorization.k8s.io
    

Weitere Informationen zu diesen Rollen finden Sie unter IAM-Berechtigungen vorbereiten.

Messwerte abrufen und filtern

Wählen Sie eine der folgenden Methoden aus, um Abfragen zu erstellen, Trends zu visualisieren und Messwerte aus den Arbeitslasten Ihres Projekts zu filtern:

Grafana-Dashboards

In diesem Abschnitt wird beschrieben, wie Sie mit Grafana-Dashboards auf Ihre Messwerte zugreifen.

Grafana-Endpunkt ermitteln

Die folgende URL ist der Endpunkt der Grafana-Instanz Ihres Projekts:

  https://GDC_URL/PROJECT_NAMESPACE/grafana

Ersetzen Sie Folgendes:

  • GDC_URL: die URL Ihrer Organisation in GDC.
  • PROJECT_NAMESPACE: Ihr Projekt-Namespace.

    Der Grafana-Endpunkt für das Projekt platform-obs in der Organisation org-1 ist beispielsweise https://org-1/platform-obs/grafana.

Messwerte in der Grafana-Benutzeroberfläche ansehen

Messwerte über die Grafana-Benutzeroberfläche abrufen:

  1. Wählen Sie in der GDC Console Ihr Projekt aus.
  2. Wählen Sie im Navigationsmenü Vorgänge > Monitoring aus.
  3. Klicken Sie auf Alle in Grafana ansehen.

    Eine neue Seite mit Ihrem Grafana-Endpunkt wird geöffnet und die Benutzeroberfläche wird angezeigt.

  4. Klicken Sie in der Benutzeroberfläche im Navigationsmenü auf Explore Explore,um die Seite Explore zu öffnen.

  5. Wählen Sie im Menü in der Leiste Explore eine Datenquelle aus, um Messwerte abzurufen. Das hängt von Ihrem Universumstyp ab:

    • Universen mit einer Zone: Wählen Sie prometheus aus, um Messwerte aus der einzelnen Zone Ihres Universums aufzurufen.
  6. Geben Sie eine Abfrage ein, um mit PromQL-Ausdrücken (Prometheus Query Language) nach Messwerten zu suchen. Sie können diesen Schritt auf eine der beiden folgenden Arten ausführen:

    • Wählen Sie im Menü Messwert einen Messwert und im Menü Label-Filter ein Label für Ihre Abfrage aus. Klicken Sie auf add Hinzufügen, um weitere Labels zu Ihrer Anfrage hinzuzufügen. Klicken Sie dann auf Abfrage ausführen.
    • Geben Sie Ihre Anfrage direkt in das Textfeld Messwerte ein und drücken Sie Umschalttaste + Eingabetaste, um die Abfrage auszuführen.

    Auf der Seite werden die Messwerte angezeigt, die Ihrer Anfrage entsprechen.

    Die Option „Prometheus“ ist auf der Seite „Explore“ ausgewählt, um Messwerte abzurufen.

    Abbildung 1. Menüoption zum Abfragen von Messwerten über die Grafana-Benutzeroberfläche.

    In Abbildung 1 wird mit der Option prometheus die Benutzeroberfläche angezeigt, mit der Sie Abfragen in Grafana erstellen können, um Messwerte abzurufen.

    Beispiele für Werte von Labels, mit denen Sie Messwerte abfragen können, finden Sie unter Beispielabfragen und ‑labels.

Cortex-Endpunkt

In diesem Abschnitt wird beschrieben, wie Sie mit Cortex auf Ihre Messwerte zugreifen.

Cortex-Endpunkt ermitteln

Die folgende URL ist der Endpunkt der Cortex-Instanz Ihres Projekts:

  https://GDC_URL/PROJECT_NAMESPACE/cortex/prometheus/

Ersetzen Sie Folgendes:

  • GDC_URL: die URL Ihrer Organisation in GDC.
  • PROJECT_NAMESPACE: Ihr Projekt-Namespace.

    Der Cortex-Endpunkt für das Projekt platform-obs in der Organisation org-1 ist beispielsweise https://org-1/platform-obs/cortex/prometheus/.

curl-Anfrage authentifizieren

  1. Laden Sie die gcloud CLI herunter und installieren Sie sie.
  2. Legen Sie das gdcloud-Attribut core/organization_console_url fest:

    gdcloud config set core/organization_console_url
    https://GDC_URL
    
  3. Mit dem konfigurierten Identitätsanbieter anmelden:

    gdcloud auth login
    
  4. Verwenden Sie Ihren Nutzernamen und Ihr Passwort, um sich zu authentifizieren und anzumelden.

    Wenn die Anmeldung erfolgreich ist, können Sie den Autorisierungsheader in Ihrer cURL-Anfrage über den Befehl gdcloud auth print-identity-token verwenden. Weitere Informationen finden Sie unter gdcloud auth.

Cortex-Endpunkt aufrufen

Führen Sie die folgenden Schritte aus, um den Cortex-Endpunkt mit dem Tool curl zu erreichen:

  1. Authentifizieren Sie die curl-Anfrage.
  2. Verwenden Sie curl, um den Cortex-Endpunkt aufzurufen, und erweitern Sie die URL mit der Standard-Prometheus HTTP API (https://prometheus.io/docs/prometheus/latest/querying/api/), um Messwerte abzufragen.

    Das folgende Beispiel zeigt eine curl-Anfrage:

    curl https://GDC_URL/PROJECT_NAME/cortex/prometheus/api/v1/query?query=my_metric{cluster="my-cluster"}&time=2015-07-01T20:10:51.781Z \
    -H "Authorization: Bearer $(gdcloud auth print-identity-token \
    --audiences=https://GDC_URL)"
    

    Sie erhalten die Ausgabe nach dem Befehl. Die API-Antwort hat das JSON-Format.

Beispielabfragen und ‑labels

Sie können Messwerte anhand des Messwertnamens und von Schlüssel/Wert-Paaren für Labels abfragen. Eine PromQL-Abfrage hat die folgende Syntax:

metric_name{label_one="value", label_two="value"}

Mit Labels können Sie die Merkmale eines Messwerts unterscheiden. So können Containerautoren dafür sorgen, dass für ihre Arbeitslasten Messwerte generiert und Tags zum Filtern dieser Messwerte hinzugefügt werden.

Sie können beispielsweise einen api_http_requests_total-Messwert verwenden, um die Anzahl der empfangenen HTTP-Anfragen zu zählen. Anschließend können Sie diesem Messwert das Label request_method hinzufügen, das den Wert POST, GET oder PUT annehmen kann. Daher erstellen Sie drei Messwertstreams für jeden Anfragetyp, den Sie möglicherweise erhalten. In diesem Fall führen Sie die folgende Abfrage aus, um die Anzahl der HTTP-Anfragen GET zu ermitteln:

api_http_requests_total{request_method="GET"}

Weitere Informationen zu Messwerten und Labels finden Sie unter https://prometheus.io/docs/practices/naming/.

Im Folgenden sind einige der Standardlabels aufgeführt, die durch die benutzerdefinierte Ressource MonitoringTarget hinzugefügt werden. Sie können diese Standardlabels verwenden, um Messwerte abzufragen:

  • _gdch_service: der Kurzname des Dienstes.
  • cluster ist der Name des Clusters.
  • container_name: der Name des Containers in einem Pod.
  • namespace_name: Ihr Projekt-Namespace.
  • pod_name: das Präfix des Pod-Namens.

In der folgenden Tabelle werden die Labels beschrieben, die Prometheus automatisch hinzufügt:

Standardlabels
Messwertlabel Beschreibung
job Der interne Name des Scraping-Jobs, der zum Erfassen des Messwerts verwendet wird. Jobs, die von der benutzerdefinierten Ressource MonitoringTarget erstellt werden, haben einen Namen mit dem folgenden Muster:

obs-system/OBS_SHADOW_PROJECT_NAME/MONITORINGTARGET_NAME.MONITORINGTARGET_NAMESPACE/I/J

I und J sind eindeutige Zahlen, die intern festgelegt werden, um Namenskonflikte zu vermeiden.
instance Die $IP:$PORT des eingestellten Dienstes. Wenn eine Arbeitslastressource mehrere Replikate hat, können Sie sie mit diesem Feld unterscheiden.

In den folgenden Codebeispielen sehen Sie, wie Sie Schlüssel/Wert-Paare für Labels verwenden, um verschiedene Messwerte abzufragen:

  • Alle Messwertstreams der verarbeiteten Vorgänge in Ihrem Projekt ansehen:

    processed_ops_total
    
  • So sehen Sie die verarbeiteten Vorgänge, die in einem Kubernetes-Cluster erfasst wurden:

    processed_ops_total{cluster="CLUSTER_NAME"}
    
  • So sehen Sie die in einem Kubernetes-Cluster erfasste CPU-Auslastung:

    cpu_usage{cluster="CLUSTER_NAME"}
    

Mit dem Tool zum Neulabeln von Messwerten können Sie Labels hinzufügen, die anfangs nicht von den erfassten Containern bereitgestellt wurden, und erstellte Messwerte umbenennen. Sie müssen die benutzerdefinierte MonitoringTarget-Ressource konfigurieren, um den von ihr erfassten Messwerten Labels hinzuzufügen. Geben Sie diese Labels im Feld metricsRelabelings der benutzerdefinierten Ressource an. Weitere Informationen finden Sie unter Label-Messwerte.

Messwerte über die Cortex API abfragen

Cortex ist der langfristige Speicher für Prometheus-Messwerte in GDC. Die Observability-Plattform stellt einen Cortex-HTTP-API-Endpunkt zum Abfragen und Lesen von Messwerten, Benachrichtigungen und anderen Prometheus-Zeitreihendaten aus Ihrem Projekt bereit.

Sie können Messwerte direkt über die HTTP API abfragen, um Messwerte und andere Zeitachsendaten in externe Tools zu exportieren, automatisierte Aufgaben einzurichten, Antworten anzupassen und Integrationen entsprechend Ihrem Anwendungsfall für die Systemüberwachung zu erstellen. Sie können die Ausgabe beispielsweise in einen anderen Befehl einfügen, Details in Textdateiformate exportieren oder einen Linux-Cronjob konfigurieren. Sie können die API über die Befehlszeile oder einen Webbrowser aufrufen und Abfragesprachausdrücke als Endpunktparameter verwenden, um das Ergebnis im JSON-Format zu erhalten.

In diesem Abschnitt wird beschrieben, wie Sie den Cortex API-Endpunkt über die CLI aufrufen und die Prometheus API-Spezifikation verwenden, um Messwerte für die Datenbeobachtbarkeit abzufragen.

Hinweis

Sie müssen die Autorisierung zum Abfragen von Messwerten über die Befehlszeile einholen. Bitten Sie den IAM-Administrator Ihres Projekts, Ihnen die Rolle „Project Cortex Prometheus Viewer“ (project-cortex-prometheus-viewer) zuzuweisen, um die Berechtigungen zu erhalten, die Sie für den Zugriff auf den Cortex API-Endpunkt benötigen.

Erstellen Sie die folgenden Rollenbindungen mit den kubectl-Befehlen für Cortex Prometheus für jede Persona:

  1. Infrastruktur-Operator (IO) Root-Administrator – Project Cortex Prometheus Viewer:

    kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding 
    io-cortex-prometheus-viewer-binding -n infra-obs 
    --user=fop-infrastructure-operator@example.com 
    --role=project-cortex-prometheus-viewer
    
  2. Plattformadministrator (PA) – Root-Administrator – Project Cortex Prometheus Viewer:

    kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding 
    pa-cortex-prometheus-viewer-binding -n platform-obs 
    --user=fop-platform-admin@example.com --role=project-cortex-prometheus-viewer
    
  3. Application Operator (AO) Root-Admin – Project Cortex Prometheus Viewer :

    kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding 
    project-cortex-prometheus-viewer-binding -n PROJECT_NAME 
    --user=USER_NAME --role=project-cortex-prometheus-viewer
    

    Ersetzen Sie Folgendes:

    • PROJECT_NAME ist der Name Ihres Projekts.
    • USER_NAME: Der Kontoname des Nutzers, für den die Rollenbindung erforderlich ist.

Nachdem die Rollenbindung erstellt wurde, können Sie mit Ihrem Anmeldenamen auf die Prometheus API zugreifen.

HTTP-API-Endpunkt

Die folgende URL ist der HTTP API-Endpunkt für den Zugriff auf Messwerte im Projekt platform-obs:

https://GDC_URL/PROJECT_NAME/cortex/prometheus/

Ersetzen Sie Folgendes:

  • GDC_URL: Die URL Ihrer Organisation in GDC.
  • PROJECT_NAME ist der Name Ihres Projekts.

API-Endpunkt aufrufen

Führen Sie die folgenden Schritte aus, um über die Befehlszeile auf den Cortex API-Endpunkt zuzugreifen und Messwerte abzufragen:

  1. Prüfen Sie, ob Sie die Voraussetzungen erfüllen.
  2. Öffnen Sie die Befehlszeilenschnittstelle.
  3. Verwenden Sie das curl-Tool, um den Cortex-Endpunkt aufzurufen und die URL mit dem Standard https://prometheus.io/docs/prometheus/latest/querying/api/ zu erweitern, um Messwerte abzufragen. Beispiel:

    curl https://console.org-1.zone1.google.gdch.test/alice/cortex/prometheus/api/v1/query?query=my_metric{cluster="org-1-system"}&time=2015-07-01T20:10:51.781Z
    

Die Ausgabe wird in der CLI nach dem Befehl angezeigt. Das API-Antwortformat ist JSON.