Query con Grafana

Dopo aver eseguito il deployment di Google Cloud Managed Service per Prometheus, puoi eseguire query sui dati inviati al servizio gestito per visualizzare i risultati in grafici e dashboard.

Questo documento descrive gli ambiti delle metriche, che determinano gli query su cui è possibile eseguire query e come utilizzare Grafana per recuperare e utilizzare dati che hai raccolto.

Tutte le interfacce di query per Managed Service per Prometheus sono configurate su recuperare i dati da Monarch utilizzando l'API Cloud Monitoring. Di l'esecuzione di query su Monarch anziché sui dati provenienti da server Prometheus locali, ottieni un monitoraggio globale su larga scala.

Prima di iniziare

Se non hai già eseguito il deployment del servizio gestito, quindi configura una raccolta gestita o di cui è stato eseguito il deployment autonomo personalizzata. Puoi saltare questo passaggio se ti interessano solo eseguire query sulle metriche di Cloud Monitoring utilizzando PromQL.

Configura il tuo ambiente

Per evitare di inserire ripetutamente l'ID progetto o il nome del cluster, eseguire la configurazione seguente:

  • Configura gli strumenti a riga di comando come segue:

    • Configura gcloud CLI per fare riferimento all'ID del tuo Progetto Google Cloud:

      gcloud config set project PROJECT_ID
      
    • Configura l'interfaccia a riga di comando kubectl per utilizzare il tuo cluster:

      kubectl config set-cluster CLUSTER_NAME
      

    Per ulteriori informazioni su questi strumenti, consulta le seguenti risorse:

Configura uno spazio dei nomi

Crea lo spazio dei nomi Kubernetes NAMESPACE_NAME per le risorse create nell'ambito dell'applicazione di esempio:

kubectl create ns NAMESPACE_NAME

Verificare le credenziali dell'account di servizio

Puoi saltare questa sezione se il tuo cluster Kubernetes Identità carico di lavoro abilitata.

In esecuzione su GKE, Managed Service per Prometheus recupera automaticamente le credenziali dall'ambiente in base Account di servizio predefinito Compute Engine. L'account di servizio predefinito ha le autorizzazioni necessarie, monitoring.metricWriter e monitoring.viewer, predefinito. Se non utilizzi Workload Identity e in precedenza hai già rimosso uno di questi ruoli dall'account di servizio del nodo predefinito, Devi aggiungere di nuovo le autorizzazioni mancanti prima di continuare.

Se non esegui su GKE, consulta Fornisci le credenziali in modo esplicito.

Configura un account di servizio per Workload Identity

Puoi saltare questa sezione se il tuo cluster Kubernetes non dispone Identità carico di lavoro abilitata.

Managed Service per Prometheus acquisisce i dati delle metriche utilizzando l'API Cloud Monitoring. Se il cluster utilizza Workload Identity, devi concedere al tuo account di servizio Kubernetes l'autorizzazione l'API Monitoring. In questa sezione vengono descritte le seguenti informazioni:

Crea e associa l'account di servizio

Questo passaggio viene visualizzato in diverse posizioni all'interno di Managed Service per Prometheus documentazione. Se hai già eseguito questo passaggio come parte di una dell'attività, così non dovrai ripeterla. Vai avanti e vai alla sezione Autorizzare dell'account di servizio.

La seguente sequenza di comandi crea l'account di servizio gmp-test-sa e lo associa all'account di servizio Kubernetes predefinito Spazio dei nomi NAMESPACE_NAME:

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

Se usi uno spazio dei nomi GKE o un account di servizio diverso, e regolare i comandi in modo appropriato.

Autorizza l'account di servizio

I gruppi di autorizzazioni correlate vengono raccolti in ruoli e si assegnano i ruoli a un'entità. In questo esempio, il cluster Google Cloud l'account di servizio. Per ulteriori informazioni sui ruoli di Monitoring, consulta Controllo dell'accesso.

Il comando seguente concede l'account di servizio Google Cloud, gmp-test-sa, i ruoli dell'API Monitoring necessari lettura i dati delle metriche.

Se hai già concesso l'account di servizio Google Cloud un ruolo specifico nell'ambito dell'attività precedente, non dovrai ripeterlo.

Per autorizzare il tuo account di servizio a leggere da un dell'ambito delle metriche multiprogetto, segui queste istruzioni e controlla Cambia il progetto su cui è stata eseguita la query.

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

Debug della configurazione di Workload Identity

Se hai difficoltà a far funzionare Workload Identity, consulta documentazione per la verifica della configurazione di Workload Identity e la guida alla risoluzione dei problemi di Workload Identity.

Poiché gli errori di battitura e i testi incollati parziali sono le fonti più comuni di errori quando durante la configurazione di Workload Identity, consigliamo vivamente l'utilizzo del variabili e icone di copia e incolla cliccabili incorporate negli esempi di codice in questi instructions.

Workload Identity in ambienti di produzione

L'esempio descritto in questo documento associa il servizio Google Cloud di servizio all'account di servizio Kubernetes predefinito e fornisce a Google Cloud all'account di servizio di tutte le autorizzazioni necessarie per utilizzare l'API Monitoring.

In un ambiente di produzione, conviene usare un approccio più granulare, con un account di servizio per ogni componente, ognuno con autorizzazioni minime. Per ulteriori informazioni sulla configurazione degli account di servizio per gestione dei carichi di lavoro e delle identità, consulta Utilizzo di Workload Identity.

Ambiti di query e metriche

I dati su cui è possibile eseguire query sono determinati dalla struttura di Cloud Monitoring ambito delle metriche, indipendentemente dal metodo utilizzato per eseguire query sui dati. Ad esempio, se utilizzi Grafana per eseguire query su Managed Service per Prometheus devi configurare ogni ambito delle metriche come origine dati separata.

Un ambito delle metriche di Monitoring è un costrutto di sola lettura che consente di eseguire query sui dati delle metriche appartenenti a più progetti Google Cloud. Ogni evento l'ambito delle metriche è ospitato da un progetto Google Cloud designato, chiamato progetto di ambito.

Per impostazione predefinita, un progetto è il progetto di definizione dell'ambito per il proprio ambito delle metriche, e l'ambito delle metriche contiene le metriche e la configurazione necessarie progetto. Un progetto di definizione dell'ambito può avere più di un progetto monitorato l'ambito delle metriche, nonché le metriche e le configurazioni di tutti i progetti nell'ambito delle metriche sono visibili al progetto di definizione dell'ambito. R progetto monitorato può anche appartenere a più di un ambito delle metriche.

Quando esegui una query sulle metriche in un progetto di definizione dell'ambito e se il progetto di definizione dell'ambito ospita un ambito delle metriche multiprogetto, puoi recuperare da più progetti. Se l'ambito delle metriche contiene tutti i tuoi progetti, le query e le regole verranno valutate a livello globale.

Per saperne di più sulla definizione dell'ambito dei progetti e dell'ambito delle metriche, consulta Ambiti delle metriche. Per informazioni sulla configurazione nell'ambito delle metriche multiprogetto, consulta Visualizzare le metriche per più Google Cloud.

Managed Service per i dati Prometheus in Cloud Monitoring

Il modo più semplice per verificare che i dati Prometheus siano in fase di esportazione è utilizzare la pagina Esplora metriche di Cloud Monitoring nella console Google Cloud, che supporta PromQL. Per istruzioni, vedi Esecuzione di query utilizzando PromQL in Cloud Monitoring.

Puoi anche importare i tuoi Dashboard di Grafana in Cloud Monitoring. Questo ti consente di continuare a usare le dashboard di Grafana personali o create dalla community senza dover configurare o eseguire il deployment di un'istanza Grafana.

Grafana

Managed Service per Prometheus utilizza l'origine dati Prometheus integrata per Grafana, il che significa che puoi continuare a usare qualsiasi tipo di account, creato dalla community, Dashboard di Grafana senza alcuna modifica.

Esegui il deployment di Grafana, se necessario.

Se nel tuo cluster non è in esecuzione un deployment Grafana, puoi e creare un deployment di test temporaneo su cui eseguire esperimenti.

Per creare un deployment Grafana temporaneo, applica Manifest di Managed Service per Prometheus grafana.yaml al tuo cluster ed eseguire il port forwarding del servizio grafana alla macchina locale. Nell'esempio seguente il servizio viene inoltrato alla porta 3000.

  1. Applica il manifest grafana.yaml:

    kubectl -n NAMESPACE_NAME apply -f  https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/6ebc1afa8e609febe8d687bb7fa6bd2375e46db1/examples/grafana.yaml
    
  2. Esegui il port forwarding del servizio grafana alla tua macchina locale. Questo esempio inoltra il servizio alla porta 3000:

    kubectl -n NAMESPACE_NAME port-forward svc/grafana 3000
    

    Questo comando non restituisce alcun risultato e, mentre è in esecuzione, segnala accede all'URL.

    Puoi accedere a Grafana nel tuo browser all'URL http://localhost:3000 con nomeutente:password admin:admin.

Quindi, aggiungi una nuova origine dati Prometheus a Grafana seguendo questi passaggi:

  1. Vai al deployment Grafana, ad esempio navigando nella URL http://localhost:3000 per accedere alla pagina di benvenuto di Grafana.

  2. Seleziona Connections (Connessioni) dal menu principale di Grafana e poi seleziona Origini dati.

    Aggiungere un'origine dati in Grafana.

  3. Seleziona Aggiungi origine dati e seleziona Prometheus come serie temporale. per configurare un database.

    Aggiunta di un'origine dati Prometheus.

  4. Assegna un nome all'origine dati e imposta il campo URL su http://localhost:9090, quindi seleziona Salva e Test. Puoi ignorare Eventuali errori che indicano che l'origine dati non è configurata correttamente.

  5. Copia l'URL del servizio locale per il tuo deployment, che sarà simile a seguenti:

    http://grafana.NAMESPACE_NAME.svc:3000
    

Configura e autentica l'origine dati Grafana

Tutte le API Google Cloud richiedono l'autenticazione tramite OAuth2; mentre Grafana non supporta l'autenticazione OAuth2 per gli account di servizio utilizzati con Prometheus diverse origini dati. Per utilizzare Grafana con Managed Service per Prometheus, Utilizzare lo strumento di sincronizzazione delle origini dati per generare OAuth2. le credenziali dell'account di servizio e sincronizzale con Grafana tramite API Grafana data source.

Devi utilizzare lo strumento di sincronizzazione dell'origine dati per configurare e autorizzare Grafana a query sui dati a livello globale. Se non segui questi passaggi, allora solo Grafana Esegue query sui dati nel server Prometheus locale.

Lo strumento di sincronizzazione dell'origine dati è uno strumento di interfaccia a riga di comando che utilizza una Kubernetes CronJob per la sincronizzazione remota dei valori di configurazione con un determinato Grafana Origine dati Prometheus. Ciò garantisce che l'origine dati Grafana abbia configurato correttamente:

  • Autenticazione, eseguita aggiornando periodicamente un token di accesso OAuth2
  • L'API Cloud Monitoring impostata come URL del server Prometheus
  • Il metodo HTTP impostato su GET
  • Tipo e versione di Prometheus impostati su un minimo di 2.40.x
  • I valori di timeout delle query e HTTP impostati su 2 minuti

Lo strumento di sincronizzazione dell'origine dati utilizza l'account di servizio locale del cluster per eseguire periodicamente generare un token di accesso all'API Google Cloud con i dati IAM necessari autorizzazioni per l'esecuzione di query sui dati di Cloud Monitoring. Poiché i token di accesso alle API Google Cloud hanno un durata di un'ora, i dati source Syncer viene eseguito ogni 30 minuti per garantire un' connessione autenticata tra Grafana e l'API Cloud Monitoring.

Per eseguire il deployment dello strumento di sincronizzazione dell'origine dati, segui questi passaggi:

  1. Scegli un progetto, un cluster e uno spazio dei nomi in cui eseguire il deployment dello strumento di sincronizzazione dell'origine dati. Consigliamo di eseguire il deployment dello strumento di sincronizzazione dell'origine dati in un cluster appartenente al progetto di ambito di un ambito delle metriche multiprogetto. Lo strumento di sincronizzazione dell'origine dati utilizza il progetto Google Cloud configurato come progetto di definizione dell'ambito.

    A questo punto, assicurati di configurare e autorizzare correttamente lo strumento di sincronizzazione dell'origine dati:

    Quindi, determina se è necessario autorizzare ulteriormente lo strumento di sincronizzazione dell'origine dati per l'esecuzione di query su più progetti:

  2. Determina l'URL della tua istanza Grafana, ad esempio https://yourcompanyname.grafana.net per un deployment Grafana Cloud oppure http://grafana.NAMESPACE_NAME.svc:3000 per un'istanza locale configurata usando il file YAML del deployment di test.

    Se esegui il deployment di Grafana in locale e il tuo cluster è configurato per proteggere tutti nel cluster utilizzando TLS, devi utilizzare https:// nell'URL e utilizzare una delle autenticazione TLS supportate opzioni.

  3. Scegli l'origine dati Grafana Prometheus a cui vorresti per Managed Service per Prometheus, che può essere un nuovo un'origine dati preesistente, poi trova e annota l'UID dell'origine dati. Puoi trovare l'UID dell'origine dati nell'ultimo parte dell'URL durante l'esplorazione o la configurazione di un'origine dati, ad esempio https://yourcompanyname.grafana.net/connections/datasources/edit/GRAFANA_DATASOURCE_UID. Non copiare l'intero URL dell'origine dati. Copia solo l'identificatore univoco l'URL.

    Individuare un UID origine dati in Grafana.

  4. Configura un account di servizio Grafana creando il account di servizio e generare un token per l'account da utilizzare:

    1. Nella barra laterale di navigazione Grafana, fai clic su Amministrazione > Utenti e accesso > Account di servizio.
    2. Crea l'account di servizio facendo clic su Aggiungi account di servizio, assegnando un nome e l'assegnazione del ruolo "Amministratore" in Grafana.

    3. Fai clic su Aggiungi token dell'account di servizio.

    4. Imposta la scadenza del token su "Nessuna scadenza" e fai clic su Genera il token, quindi copia il token generato negli appunti per utilizzarlo come GRAFANA_SERVICE_ACCOUNT_TOKEN nel passaggio successivo:

      Genera e salva un token dell'account di servizio in Grafana.

  5. Configura il seguente ambiente utilizzando i risultati dei passaggi precedenti:

    # 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.
    
  6. Esegui questo comando per creare un CronJob che aggiorni dell'origine dati all'inizializzazione e poi ogni 30 minuti. Se utilizzi Workload Identity, il valore di NAMESPACE_NAME dovrebbe essere lo stesso associato in precedenza all'account di servizio.

    curl https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/main/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. Vai all'origine dati Grafana appena configurata e verifica lo stato di Prometheus Il valore URL del server inizia con https://monitoring.googleapis.com. Potresti aggiornare la pagina. Dopo la verifica, vai in fondo alla pagina e seleziona Salva e test. Devi selezionare questo pulsante almeno una volta per assicura che il completamento automatico delle etichette in Grafana funzioni.

Eseguire query utilizzando Grafana

Ora puoi creare dashboard Grafana ed eseguire query utilizzando i dati configurati sorgente. Il seguente screenshot mostra un grafico Grafana che mostra up metrica:

Grafico di Grafana per la metrica Managed Service per Prometheus in alto.

Per informazioni sulle query Metriche di sistema Google Cloud che utilizzano PromQL, consulta PromQL per Metriche di Cloud Monitoring.

Esecuzione dello strumento di sincronizzazione dell'origine dati all'esterno di GKE

Puoi saltare questa sezione se esegui lo strumento di sincronizzazione dell'origine dati in un cluster Google Kubernetes Engine. Se hai problemi di autenticazione GKE, consulta Verificare le credenziali dell'account di servizio.

Durante l'esecuzione su GKE, lo strumento di sincronizzazione dell'origine dati recupera automaticamente le credenziali dall'ambiente in base l'account di servizio del nodo o la configurazione di Workload Identity. Nei cluster Kubernetes non GKE, le credenziali devono essere forniti allo strumento di sincronizzazione dell'origine dati GOOGLE_APPLICATION_CREDENTIALS variabile di ambiente.

  1. Imposta il contesto sul progetto di destinazione:

    gcloud config set project PROJECT_ID
    
  2. Crea un account di servizio:

    gcloud iam service-accounts create gmp-test-sa
    

    Questo passaggio crea l'account di servizio che potresti avere già creati nel Istruzioni per Workload Identity.

  3. Concedi le autorizzazioni richieste all'account di servizio:

    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. Crea e scarica una chiave per l'account di servizio:

    gcloud iam service-accounts keys create gmp-test-sa-key.json \
      --iam-account=gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com
    
  5. Imposta il percorso del file chiave utilizzando GOOGLE_APPLICATION_CREDENTIALS variabile di ambiente.

Autorizza lo strumento di sincronizzazione dell'origine dati al monitoraggio di più progetti

Managed Service per Prometheus supporta il monitoraggio multiprogetto utilizzando ambiti delle metriche. Se l'ambito è il progetto locale, e hai seguito le istruzioni per verificare o configurare un servizio per il progetto locale, quindi l'esecuzione di query su più progetti. dovrebbe funzionare senza ulteriori configurazioni.

Se il progetto locale non è il tuo progetto di definizione dell'ambito, devi autorizzare sull'account di servizio Compute predefinito del progetto locale oppure il tuo account di servizio Workload Identity per Accesso di monitoring.viewer al progetto di definizione dell'ambito. Quindi passa la definizione dell'ambito ID progetto come valore dell'ambiente PROJECT_ID .

Se utilizzi l'account di servizio default di Compute Engine, puoi effettuare una delle seguenti operazioni:

Per concedere a un account di servizio le autorizzazioni necessarie per accedere a un in un progetto Google Cloud diverso, segui questi passaggi:

  1. Concedi all'account di servizio l'autorizzazione a leggere dal progetto di destinazione su cui vuoi eseguire una query:

    gcloud projects add-iam-policy-binding SCOPING_PROJECT_ID \
      --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \
      --role=roles/monitoring.viewer
    
  2. Quando configuri lo strumento di sincronizzazione dell'origine dati, passa l'ID del progetto di definizione dell'ambito come il valore della variabile di ambiente PROJECT_ID.

Ispezionare il CronJob

Per esaminare il CronJob e assicurarti che tutte le variabili siano impostate correttamente, esegui questo comando:

kubectl describe cronjob datasource-syncer

Per visualizzare i log per il job che configura inizialmente Grafana, esegui questo subito dopo aver applicato il file datasource-syncer.yaml:

kubectl logs job.batch/datasource-syncer-init

Smantellamento

Per disabilitare il Cronjob di sincronizzazione dell'origine dati, esegui questo comando:

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

Se disattivi lo strumento di sincronizzazione dell'origine dati, l'aggiornamento dell'account Grafana collegato a nuove credenziali di autenticazione e, di conseguenza, l'esecuzione di query Managed Service per Prometheus non funziona più.

Compatibilità delle API

I seguenti endpoint dell'API HTTP Prometheus sono supportato da Managed Service per Prometheus con l'URL preceduto da https://monitoring.googleapis.com/v1/projects/PROJECT_ID/location/global/prometheus/api/v1/.

Per la documentazione completa, consulta la documentazione di riferimento dell'API Cloud Monitoring documentazione.

Per informazioni sulla compatibilità di PromQL, consulta PromQL. assistenza.

  • I seguenti endpoint sono completamente supportati:

    • /api/v1/query
    • /api/v1/query_range
    • /api/v1/metadata
    • /api/v1/labels
    • /api/v1/query_exemplars
  • L'endpoint /api/v1/label/<label_name>/values funziona solo se l'endpoint __name__ l'etichetta viene fornita utilizzandola come valore <label_name> o esattamente usando un selettore di serie. Ad esempio, completamente supportate:

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

    Questo limite fa sì che le query variabili label_values($label) in Grafana non riuscito. In alternativa, puoi utilizzare label_values($metric, $label). Questo tipo di query è consigliato perché evita di recuperare i valori per le etichette sulle metriche che non sono pertinenti per la dashboard specificata.

  • L'endpoint /api/v1/series è supportato per le richieste GET, ma non POST. Quando utilizzi lo strumento di sincronizzazione dell'origine dati o il frontend proxy, questa limitazione è gestita automaticamente. Puoi anche configura le origini dati Prometheus in Grafana in modo che emettano solo GET richieste. Il parametro match[] non supporta la corrispondenza delle espressioni regolari sull'etichetta __name__.

Passaggi successivi