Eseguire query e visualizzare le metriche

Dopo aver raccolto le metriche dai workload di cui è stato eseguito il deployment nell'appliance Google Distributed Cloud (GDC) con air gap, puoi iniziare ad analizzarle. Per analizzare le metriche, puoi visualizzarle e filtrarle in dashboard Grafana informative oppure accedervi direttamente da Cortex utilizzando lo strumento curl per script e automazione flessibili.

Puoi accedere alle metriche in uno dei due modi seguenti:

  • Dashboard Grafana: esplora le tendenze e identifica le anomalie con visualizzazioni intuitive di metriche chiave come l'utilizzo della CPU, il consumo di spazio di archiviazione e l'attività di rete. Grafana fornisce un'interfaccia facile da usare per filtrare e analizzare i dati dei workload nelle dashboard.
  • Endpoint Cortex: per casi d'uso più avanzati, esegui query direttamente sull'istanza Cortex del tuo progetto utilizzando lo strumento curl su una riga di comando. Cortex archivia le metriche Prometheus del tuo progetto e fornisce un endpoint HTTP per l'accesso programmatico. Questo accesso ti consente di esportare i dati, automatizzare le attività e creare integrazioni personalizzate.

Prima di iniziare

Per ottenere le autorizzazioni necessarie per eseguire query e visualizzare le metriche nelle dashboard Grafana, chiedi all'amministratore IAM dell'organizzazione o all'amministratore IAM del progetto di concederti uno dei ruoli predefiniti Grafana Viewer o Project Grafana Viewer. A seconda del livello di accesso e delle autorizzazioni di cui hai bisogno, potresti ottenere ruoli Grafana in un'organizzazione o un progetto.

In alternativa, per ottenere le autorizzazioni necessarie per eseguire query sulle metriche dall'endpoint Cortex, chiedi all'amministratore IAM del progetto di concederti il ruolo Project Cortex Prometheus Viewer nello spazio dei nomi del progetto.

Per saperne di più su questi ruoli, consulta Prepara le autorizzazioni IAM.

La seguente tabella riepiloga i requisiti di Role per PA and AO persona.

Utente tipo Oggetto Cluster Ruolo Spazio dei nomi Gruppo/utente Configurazione
PA grafana org-admin project-grafana-viewer platform-obs Gruppo 1
PA cortex org-admin project-cortex-prometheus-viewer platform-obs Gruppo 2
PA grafana org-admin project-grafana-viewer platform-obs Utente 3
PA cortex org-admin project-cortex-prometheus-viewer platform-obs Utente 4
AO grafana org-admin project-grafana-viewer PROJECT_NAMESPACE Gruppo 1
AO cortex org-admin project-cortex-prometheus-viewer PROJECT_NAMESPACE Gruppo 2
AO grafana org-admin project-grafana-viewer PROJECT_NAMESPACE Utente 3
AO cortex org-admin project-cortex-prometheus-viewer PROJECT_NAMESPACE Utente 4

Sostituisci le seguenti variabili in modo appropriato:

Variabile Descrizione
KUBECONFIG Avrai bisogno del kubeconfig per il cluster specifico che contiene NAMESPACE in cui verrà applicato questo RoleBinding.
RULE_NAME Il nome univoco di questa risorsa RoleBinding all'interno dello spazio dei nomi. Ad esempio, io-root-cortex-prometheus-viewer.
NAMESPACE Lo spazio dei nomi Kubernetes in cui verrà creato e applicato questo RoleBinding. Cerca la colonna Namespace nella tabella precedente.
EMAIL_ADDRESS L'identificatore dell'utente a cui viene concesso il ruolo. Spesso si tratta di un indirizzo email. Ad esempio, platform-administrator@example.com.
ROLE Il nome del Role che contiene le autorizzazioni che vuoi concedere all'utente. Cerca i ruoli disponibili nella tabella precedente
GROUP_NAME Il nome del Group a cui appartiene l'utente PA/AO. Ad esempio, pa-group.
ZONE Nome della zona

Configurazione 1

Questa configurazione concede le autorizzazioni a un gruppo di utenti per accedere a PA/AO Grafana nel cluster org. Dopo aver configurato questa impostazione, consulta la sezione Dashboard Grafana di questo documento per visualizzare le metriche su Grafana.

  • Comando kubectl

    Questo è il formato generico del comando:

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

    Esempio:

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

    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
    

Configurazione 2

Questa configurazione concede le autorizzazioni a un gruppo di utenti per accedere in modo programmatico alle metriche PA/AO nel cluster org. Dopo aver configurato questa impostazione, consulta la sezione Endpoint Cortex di questo documento per eseguire query sulle metriche in modo programmatico.

  • Comando kubectl

    Questo è il formato generico del comando:

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

    Esempio:

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

    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
    

Configurazione 3

Questa configurazione concede a un utente le autorizzazioni per accedere a PA/AO Grafana nel cluster org. Dopo aver configurato questa impostazione, consulta la sezione Dashboard Grafana di questo documento per visualizzare le metriche su Grafana.

  • Comando kubectl

    Questo è il formato generico del comando:

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

    Esempio:

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

    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
    

Configurazione 4

Questa configurazione concede a un utente le autorizzazioni per accedere in modo programmatico alle metriche PA/AO nel cluster org. Dopo aver configurato questa impostazione, consulta la sezione Endpoint Cortex di questo documento per eseguire query sulle metriche in modo programmatico.

  • Comando kubectl

    Questo è il formato generico del comando:

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

    Esempio:

    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
    
  • File YAML

    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
    

Per saperne di più su questi ruoli, consulta Prepara le autorizzazioni IAM.

Ottieni e filtra le metriche

Seleziona uno dei seguenti metodi per creare query, visualizzare le tendenze e filtrare le metriche dai workload del progetto:

Dashboard Grafana

Questa sezione descrive come accedere alle metriche utilizzando le dashboard Grafana.

Identifica l'endpoint Grafana

Il seguente URL è l'endpoint dell'istanza Grafana del tuo progetto:

  https://GDC_URL/PROJECT_NAMESPACE/grafana

Sostituisci quanto segue:

  • GDC_URL: l'URL della tua organizzazione in GDC.
  • PROJECT_NAMESPACE: lo spazio dei nomi del progetto.

    Ad esempio, l'endpoint Grafana per il progetto platform-obs nell'organizzazione org-1 è https://org-1/platform-obs/grafana.

Visualizza le metriche nell'interfaccia utente di Grafana

Recupera le metriche nell'interfaccia utente di Grafana:

  1. Nella console GDC, seleziona il progetto.
  2. Nel menu di navigazione, seleziona Operazioni > Monitoring.
  3. Fai clic su Visualizza tutto in Grafana.

    Si apre una nuova pagina con l'endpoint Grafana e viene visualizzata l'interfaccia utente.

  4. Nell'interfaccia utente,fai clic su Esplora Esplora dal menu di navigazione per aprire la pagina Esplora.

  5. Dal menu della barra Esplora, seleziona un'origine dati per recuperare le metriche, in base al tipo di universo:

    • Universi a zona singola: seleziona prometheus per visualizzare le metriche della zona singola del tuo universo.
  6. Inserisci una query per cercare le metriche utilizzando le espressioni PromQL (Prometheus Query Language). Puoi completare questo passaggio in uno dei seguenti modi:

    • Seleziona una metrica e un'etichetta per la query dai menu Filtri metriche e Filtri etichette. Fai clic su Aggiungi Aggiungi per aggiungere altre etichette alla query. Quindi, fai clic su Esegui query.
    • Inserisci la query direttamente nel campo di testo Metriche e premi Maiusc+Invio per eseguirla.

    La pagina mostra le metriche corrispondenti alla tua query.

    L&#39;opzione Prometheus è selezionata nella pagina Esplora per ottenere le metriche.

    Figura 1. Opzione di menu per eseguire query sulle metriche dall'interfaccia utente di Grafana.

    Nella figura 1, l'opzione prometheus mostra l'interfaccia che consente di creare query da Grafana per recuperare le metriche.

    Per esempi di valori delle etichette che puoi utilizzare per eseguire query sulle metriche, vedi Query ed etichette di esempio.

Endpoint Cortex

Questa sezione descrive come accedere alle metriche utilizzando Cortex.

Identifica l'endpoint Cortex

Il seguente URL è l'endpoint dell'istanza Cortex del tuo progetto:

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

Sostituisci quanto segue:

  • GDC_URL: l'URL della tua organizzazione in GDC.
  • PROJECT_NAMESPACE: lo spazio dei nomi del progetto.

    Ad esempio, l'endpoint Cortex per il progetto platform-obs nell'organizzazione org-1 è https://org-1/platform-obs/cortex/prometheus/.

Autentica la richiesta curl

  1. Scarica e installa l'interfaccia a riga di comando gcloud.
  2. Imposta la proprietà gdcloud core/organization_console_url:

    gdcloud config set core/organization_console_url
    https://GDC_URL
    
  3. Accedi con il provider di identità configurato:

    gdcloud auth login
    
  4. Utilizza il tuo nome utente e la tua password per autenticarti e accedere.

    Se l'accesso va a buon fine, puoi utilizzare l'intestazione di autorizzazione nella richiesta cURL tramite il comando gdcloud auth print-identity-token. Per maggiori informazioni, consulta gdcloud auth.

Chiama l'endpoint Cortex

Completa i seguenti passaggi per raggiungere l'endpoint Cortex utilizzando lo strumento curl:

  1. Autentica la richiesta curl.
  2. Utilizza curl per chiamare l'endpoint Cortex ed estendi l'URL utilizzando l'API HTTP standard di Prometheus (https://prometheus.io/docs/prometheus/latest/querying/api/) per eseguire query sulle metriche.

    Di seguito è riportato un esempio di richiesta curl:

    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)"
    

    Ottieni l'output seguente al comando. La risposta dell'API è in formato JSON.

Query ed etichette di esempio

Puoi eseguire query sulle metriche utilizzando il nome della metrica e le coppie chiave-valore per le etichette. Una query PromQL ha la seguente sintassi:

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

Le etichette ti consentono di distinguere le caratteristiche di una metrica. In questo modo, gli autori dei container fanno in modo che i loro workload generino metriche e aggiungano tag per filtrare queste metriche.

Ad esempio, puoi avere una metrica api_http_requests_total per conteggiare il numero di richieste HTTP ricevute. Poi, puoi aggiungere un'etichetta request_method a questa metrica, che accetta un valore POST, GET o PUT. Di conseguenza, devi creare tre flussi di metriche per ogni tipo di richiesta che potresti ricevere. In questo caso, per trovare il numero di richieste HTTP GET, esegui la seguente query:

api_http_requests_total{request_method="GET"}

Per saperne di più su metriche ed etichette, consulta la pagina https://prometheus.io/docs/practices/naming/.

Di seguito sono riportate alcune delle etichette predefinite aggiunte dalla risorsa personalizzata MonitoringTarget. Puoi utilizzare queste etichette predefinite per eseguire query sulle metriche:

  • _gdch_service: il nome breve del servizio.
  • cluster: il nome del cluster.
  • container_name: il nome del container all'interno di un pod.
  • namespace_name: lo spazio dei nomi del progetto.
  • pod_name: il prefisso del nome del pod.

La seguente tabella descrive le etichette che Prometheus aggiunge automaticamente:

Etichette predefinite
Etichetta metrica Descrizione
job Il nome interno del job di scraping utilizzato per raccogliere la metrica. I job creati dalla risorsa personalizzata MonitoringTarget hanno un nome con il seguente pattern:

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

I e J sono numeri univoci determinati internamente per evitare conflitti di nomi.
instance Il $IP:$PORT del servizio sottoposto a scraping. Se una risorsa del workload ha più repliche, utilizza questo campo per distinguerle.

I seguenti esempi di codice mostrano l'utilizzo di coppie chiave-valore per le etichette per eseguire query su metriche diverse:

  • Visualizza tutti i flussi di metriche delle operazioni elaborate nel tuo progetto:

    processed_ops_total
    
  • Visualizza le operazioni elaborate raccolte in un cluster Kubernetes:

    processed_ops_total{cluster="CLUSTER_NAME"}
    
  • Visualizza l'utilizzo della CPU raccolto in un cluster Kubernetes:

    cpu_usage{cluster="CLUSTER_NAME"}
    

Utilizza lo strumento di rietichettatura delle metriche per aggiungere etichette non esposte inizialmente dai container sottoposti a scraping e rinominare le metriche prodotte. Devi configurare la risorsa personalizzata MonitoringTarget per aggiungere etichette alle metriche che raccoglie. Specifica queste etichette nel campo metricsRelabelings della risorsa personalizzata. Per saperne di più, consulta Metriche delle etichette.

Eseguire query sulle metriche dall'API Cortex

Cortex è l'archiviazione a lungo termine per le metriche Prometheus in GDC. La piattaforma Observability espone un endpoint API HTTP Cortex per l'esecuzione di query e la lettura di metriche, avvisi e altri dati delle serie temporali di Prometheus dal tuo progetto.

Esegui query sulle metriche direttamente dall'API HTTP per leggere ed esportare le metriche e altri dati delle serie temporali in strumenti esterni, configurare attività automatizzate, adattare le risposte e creare integrazioni in base al tuo caso d'uso di monitoraggio del sistema. Ad esempio, inserisci l'output in un altro comando, esporta i dettagli in formati di file di testo o configura un cron job Linux. Puoi chiamare l'API dall'interfaccia a riga di comando (CLI) o da un browser web e utilizzare le espressioni del linguaggio di query come parametri dell'endpoint per ottenere il risultato in formato JSON.

Questa sezione spiega come chiamare l'endpoint API Cortex dalla CLI utilizzando la specifica dell'API Prometheus per eseguire query sulle metriche per l'osservabilità dei dati.

Prima di iniziare

Devi ottenere l'autorizzazione per eseguire query sulle metriche dalla CLI. Per ottenere le autorizzazioni necessarie per accedere all'endpoint API Cortex, chiedi all'amministratore IAM del progetto di concederti il ruolo Project Cortex Prometheus Viewer (project-cortex-prometheus-viewer).

Crea i seguenti binding dei ruoli utilizzando i comandi kubectl per Cortex Prometheus per ogni persona:

  1. Amministratore root operatore dell'infrastruttura (IO) - 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. Amministratore della piattaforma (PA) - Amministratore principale - 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. Amministratore principale operatore dell'applicazione (AO) - 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
    

    Sostituisci quanto segue:

    • PROJECT_NAME: il nome del progetto
    • USER_NAME: il nome account dell'utente che richiede il binding del ruolo.

Una volta creato il binding del ruolo, puoi accedere all'API Prometheus con il tuo nome utente di accesso.

Endpoint API HTTP

Il seguente URL è l'endpoint API HTTP per accedere alle metriche nel progetto platform-obs:

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

Sostituisci quanto segue:

  • GDC_URL: l'URL della tua organizzazione in GDC.
  • PROJECT_NAME: il nome del progetto

Chiama l'endpoint API

Segui questi passaggi per raggiungere l'endpoint dell'API Cortex dalla CLI ed eseguire query sulle metriche:

  1. Assicurati di soddisfare i prerequisiti.
  2. Apri la CLI.
  3. Utilizza lo strumento curl per chiamare l'endpoint Cortex ed estendere l'URL utilizzando lo standard https://prometheus.io/docs/prometheus/latest/querying/api/ per eseguire query sulle metriche. Ad esempio:

    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
    

Ottieni l'output nella CLI dopo il comando. Il formato della risposta dell'API è JSON.