Dopo aver eseguito il deployment di Google Cloud Managed Service per Prometheus, puoi eseguire query sui dati inviati al servizio gestito e visualizzare i risultati in grafici e dashboard.
Questo documento descrive gli ambiti delle metriche, che determinano i dati che puoi interrogare, e come utilizzare Grafana per recuperare e utilizzare i dati che hai raccolto.
Tutte le interfacce di query per Managed Service per Prometheus sono configurate per recuperare i dati da Monarch utilizzando l'API Cloud Monitoring. Eseguendo query su Monarch anziché sui dati dei server Prometheus locali, ottieni un monitoraggio globale su larga scala.
Prima di iniziare
Se non hai ancora eseguito il deployment del servizio gestito, configura la raccolta gestita o la raccolta con deployment automatico. Puoi saltare questo passaggio se ti interessa 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, esegui la seguente configurazione:
Configura gli strumenti a riga di comando come segue:
Configura gcloud CLI in modo che faccia riferimento all'ID del tuo progettoGoogle Cloud :
gcloud config set project PROJECT_ID
Configura la CLI
kubectl
per utilizzare il cluster:kubectl config set-cluster CLUSTER_NAME
Per ulteriori informazioni su questi strumenti, consulta quanto segue:
Configurare uno spazio dei nomi
Crea lo spazio dei nomi Kubernetes NAMESPACE_NAME
per le risorse che crei
nell'ambito dell'applicazione di esempio:
kubectl create ns NAMESPACE_NAME
Verificare le credenziali del account di servizio
Se nel tuo cluster Kubernetes è abilitata la federazione delle identità per i carichi di lavoro per GKE, puoi saltare questa sezione.
Quando viene eseguito su GKE, Managed Service per Prometheus
recupera automaticamente le credenziali dall'ambiente in base al
account di servizio predefinito di Compute Engine. Per impostazione predefinita, il account di servizio predefinito dispone delle autorizzazioni necessarie, monitoring.metricWriter
e monitoring.viewer
. Se non utilizzi la federazione delle identità dei carichi di lavoro per GKE e hai rimosso in precedenza uno di questi ruoli dall'account di servizio del nodo predefinito, dovrai aggiungere nuovamente le autorizzazioni mancanti prima di continuare.
Configura un account di servizio per Workload Identity Federation for GKE
Se il tuo cluster Kubernetes non ha abilitata la federazione delle identità per i carichi di lavoro per GKE, puoi saltare questa sezione.
Managed Service per Prometheus acquisisce i dati delle metriche utilizzando l'API Cloud Monitoring. Se il tuo cluster utilizza Workload Identity Federation for GKE, devi concedere al tuo account di servizio Kubernetes l'autorizzazione per l'API Monitoring. Questa sezione descrive quanto segue:
- Creazione di un service accountGoogle Cloud dedicato,
gmp-test-sa
. - Associazione del service account Google Cloud al service account Kubernetes predefinito in uno spazio dei nomi di test,
NAMESPACE_NAME
. - Concessione dell'autorizzazione necessaria al service account Google Cloud .
Crea e associa il account di servizio
Questo passaggio viene visualizzato in diversi punti della documentazione di Managed Service per Prometheus. Se hai già eseguito questo passaggio nell'ambito di un'attività precedente, non è necessario ripeterlo. Vai direttamente alla sezione Autorizzare il service account.
La seguente sequenza di comandi crea il account di servizio gmp-test-sa
e lo associa alaccount di serviziot Kubernetes predefinito nello 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 utilizzi uno spazio dei nomi GKE o account di servizio diverso, modifica i comandi di conseguenza.
Autorizzare il account di servizio
I gruppi di autorizzazioni correlate vengono raccolti in ruoli e concedi i ruoli a un'entità, in questo esempio, il account di servizio account Google Cloud. Per ulteriori informazioni sui ruoli di monitoraggio, consulta Controllo dell'accesso.
Il seguente comando concede al service account Google Cloud ,
gmp-test-sa
, i ruoli API Monitoring necessari per
leggere
i dati delle metriche.
Se hai già concesso un ruolo specifico al service account Google Cloud nell'ambito di un'attività precedente, non devi farlo di nuovo.
Per autorizzare il tuo account di servizio a leggere da un ambito delle metriche multiprogetto, segui queste istruzioni e poi consulta Modificare il progetto sottoposto a 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
Esegui il debug della configurazione di Workload Identity Federation for GKE
Se hai difficoltà a far funzionare Workload Identity Federation for GKE, consulta la documentazione per verificare la configurazione di Workload Identity Federation for GKE e la guida alla risoluzione dei problemi di Workload Identity Federation for GKE.
Poiché gli errori di battitura e i copia-incolla parziali sono le fonti più comuni di errori durante la configurazione di Workload Identity Federation for GKE, ti consigliamo vivamente di utilizzare le variabili modificabili e le icone di copia-incolla selezionabili incorporate negli esempi di codice in queste istruzioni.
Workload Identity Federation for GKE negli ambienti di produzione
L'esempio descritto in questo documento associa il service account Google Cloud al account di servizio Kubernetes predefinito e concede al account di servizio Google Cloudtutte le autorizzazioni necessarie per utilizzare l'API Monitoring.
In un ambiente di produzione, potresti voler utilizzare un approccio più granulare, con unaccount di serviziot per ogni componente, ciascuno con autorizzazioni minime. Per saperne di più sulla configurazione dei service account per la gestione delle identità dei workload, consulta Utilizzare la federazione delle identità dei workload per GKE.
Ambiti di query e metriche
I dati su cui puoi eseguire query sono determinati dal costrutto di Cloud Monitoring ambito delle metriche, indipendentemente dal metodo utilizzato per eseguire query sui dati. Ad esempio, se utilizzi Grafana per eseguire query sui dati di Managed Service per Prometheus, ogni ambito delle metriche deve essere configurato 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 ambito delle metriche è ospitato da un progetto Google Cloud designato, chiamato progetto di scoping.
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 per quel progetto. Un progetto di definizione dell'ambito può avere più di un progetto monitorato nel suo ambito delle metriche e le metriche e le configurazioni di tutti i progetti monitorati nell'ambito delle metriche sono visibili al progetto di definizione dell'ambito. Un progetto monitorato può appartenere anche a più di un ambito delle metriche.
Quando esegui una query sulle metriche in un progetto di definizione dell'ambito e se questo progetto ospita un ambito delle metriche multiprogetto, puoi recuperare i dati da più progetti. Se l'ambito delle metriche contiene tutti i tuoi progetti, le query e le regole vengono valutate a livello globale.
Per ulteriori informazioni sull'ambito dei progetti e delle metriche, consulta Ambiti delle metriche. Per informazioni sulla configurazione dell'ambito delle metriche per più progetti, vedi Visualizzazione delle metriche per più progetti.
Dati di Managed Service per Prometheus in Cloud Monitoring
Il modo più semplice per verificare che i dati Prometheus vengano esportati è utilizzare la pagina Esplora metriche di Cloud Monitoring nella console Google Cloud , che supporta PromQL. Per istruzioni, consulta Eseguire query utilizzando PromQL in Cloud Monitoring.
Puoi anche importare le dashboard Grafana in Cloud Monitoring. In questo modo, puoi continuare a utilizzare le dashboard Grafana personali o create dalla community senza dover configurare o implementare un'istanza Grafana.
Grafana
Managed Service per Prometheus utilizza l'origine dati Prometheus integrata per Grafana, il che significa che puoi continuare a utilizzare qualsiasi dashboard Grafana personale o creata dalla community senza apportare modifiche.
Esegui il deployment di Grafana, se necessario
Se nel cluster non è in esecuzione un deployment di Grafana, puoi creare un deployment di test temporaneo con cui sperimentare.
Per creare un deployment di Grafana temporaneo, applica il manifest di
Managed Service for Prometheus grafana.yaml
al tuo
cluster e inoltra la porta del servizio grafana
alla tua macchina locale. A causa delle limitazioni CORS, non puoi accedere a un deployment di Grafana utilizzando Cloud Shell.
Applica il manifest
grafana.yaml
:kubectl -n NAMESPACE_NAME apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.15.3/examples/grafana.yaml
Inoltra la porta 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 nulla e, durante l'esecuzione, segnala gli accessi all'URL.
Puoi accedere a Grafana nel browser all'URL
http://localhost:3000
con il nome utente:passwordadmin:admin
.
Poi aggiungi una nuova origine dati Prometheus a Grafana nel seguente modo:
Vai al deployment di Grafana, ad esempio navigando all'URL
http://localhost:3000
per raggiungere la pagina di benvenuto di Grafana.Seleziona Connessioni dal menu principale di Grafana, poi seleziona Origini dati.
Seleziona Aggiungi origine dati e seleziona Prometheus come database delle serie temporali.
Assegna un nome all'origine dati, imposta il campo
URL
suhttp://localhost:9090
, poi seleziona Salva e testa. Puoi ignorare gli errori che indicano che l'origine dati non è configurata correttamente.Copia l'URL del servizio locale per la tua implementazione, che avrà questo aspetto:
http://grafana.NAMESPACE_NAME.svc:3000
Configurare e autenticare l'origine dati Grafana
Google Cloud Tutte le API richiedono l'autenticazione tramite OAuth2; tuttavia, Grafana non supporta l'autenticazione OAuth2 per i service account utilizzati con le origini dati Prometheus. Per utilizzare Grafana con Managed Service per Prometheus, utilizzi lo strumento di sincronizzazione delle origini dati per generare credenziali OAuth2 per il tuo account di servizio e sincronizzarle con Grafana tramite l'API dell'origine dati Grafana.
Devi utilizzare lo strumento di sincronizzazione dell'origine dati per configurare e autorizzare Grafana a interrogare i dati a livello globale. Se non segui questi passaggi, Grafana esegue query solo sui dati nel server Prometheus locale.
Lo strumento di sincronizzazione dell'origine dati è un'interfaccia a riga di comando che invia da remoto i valori di configurazione a una determinata origine dati Grafana Prometheus. In questo modo l'origine dati Grafana è configurata correttamente:
- Autenticazione, eseguita aggiornando periodicamente un token di accesso OAuth2
- Il set di API Cloud Monitoring impostato come URL del server Prometheus
- Il metodo HTTP impostato su GET
- Il tipo e la versione di Prometheus impostati su un minimo di 2.40.x
- I valori di timeout HTTP e query impostati su 2 minuti
Il sincronizzatore dell'origine dati deve essere eseguito ripetutamente. Poiché i token di accesso del service account hanno una durata predefinita di un'ora, l'esecuzione del sincronizzatore delle origini dati ogni 10 minuti garantisce una connessione autenticata ininterrotta tra Grafana e l&#API Cloud Monitoringring.
Puoi scegliere di eseguire il sincronizzatore dell'origine dati utilizzando un CronJob di Kubernetes o Cloud Run e Cloud Scheduler per un'esperienza completamente serverless. Se esegui il deployment di Grafana localmente, ad esempio con Grafana open source o Grafana Enterprise, ti consigliamo di eseguire il sincronizzatore dell'origine dati nello stesso cluster in cui è in esecuzione Grafana. Se utilizzi Grafana Cloud, ti consigliamo di scegliere l'opzione completamente serverless.
Utilizzare Serverless
Per eseguire il deployment e l'esecuzione di un sincronizzatore di origini dati serverless utilizzando Cloud Run e Cloud Scheduler, segui questi passaggi:
Scegli un progetto in cui eseguire il deployment del sincronizzatore dell'origine dati. Ti consigliamo di scegliere il progetto di definizione dell'ambito di un ambito delle metriche multiprogetto. Il sincronizzatore dell'origine dati utilizza il progetto Google Cloud configurato come progetto di ambito.
Successivamente, configura e autorizza un account di servizio per il sincronizzatore delle origini dati. La seguente sequenza di comandi crea un account di servizio e gli concede diversi ruoli IAM. I primi due ruoli consentono all'account di servizio di leggere dall'API Cloud Monitoring e generare token dell'account di servizio. Gli ultimi due ruoli consentono alaccount di serviziot di leggere il token delaccount di serviziot Grafana da Secret Manager e di richiamare Cloud Run:
gcloud config set project PROJECT_ID \ && gcloud iam service-accounts create gmp-ds-syncer-sa \ && gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:gmp-ds-syncer-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.viewer \ && \ gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:gmp-ds-syncer-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator \ && \ gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:gmp-ds-syncer-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/secretmanager.secretAccessor && \ gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:gmp-ds-syncer-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invoker
Determina l'URL della tua istanza Grafana, ad esempio
https://yourcompanyname.grafana.net
per un deployment di Grafana Cloud. La tua istanza Grafana deve essere accessibile da Cloud Run, il che significa che deve essere accessibile da internet.Se la tua istanza Grafana non è accessibile da internet, ti consigliamo di eseguire il deployment del sincronizzatore dell'origine dati su Kubernetes.
Scegli l'origine dati Grafana Prometheus da utilizzare per Managed Service per Prometheus, che può essere una nuova origine dati Prometheus o una preesistente, quindi trova e annota l'UID dell'origine dati. L'UID dell'origine dati si trova nell'ultima 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 nell'URL.Configura un service account Grafana creando il account di servizio e generando un token da utilizzare per l'account:
Nella barra laterale di navigazione di Grafana, fai clic su Amministrazione > Utenti e accesso > Service account.
Crea il account di servizio in Grafana facendo clic su Aggiungi service account, assegnandogli un nome e concedendogli il ruolo "Origini dati > Writer". Assicurati di fare clic sul pulsante Applica per assegnare il ruolo. Nelle versioni precedenti di Grafana, puoi utilizzare il ruolo "Amministratore".
Fai clic su Aggiungi token dell'account di servizio.
Imposta la scadenza del token su "Nessuna scadenza" e fai clic su Genera token, quindi copia il token generato negli appunti per utilizzarlo come GRAFANA_SERVICE_ACCOUNT_TOKEN nel passaggio successivo:
Imposta le seguenti variabili della documentazione utilizzando i risultati dei passaggi precedenti. Non devi incollare questo comando in un terminale:
# These values are required. REGION # The Google Cloud region where you want to run your Cloud Run job, such as us-central1. PROJECT_ID # The Project ID from Step 1. GRAFANA_INSTANCE_URL # The Grafana instance URL from step 2. This is a URL. Include "http://" or "https://". GRAFANA_DATASOURCE_UID # The Grafana data source UID from step 3. This is not a URL. GRAFANA_SERVICE_ACCOUNT_TOKEN # The Grafana service account token from step 4.
Crea un secret in Secret Manager:
gcloud secrets create datasource-syncer --replication-policy="automatic" && \ echo -n GRAFANA_SERVICE_ACCOUNT_TOKEN | gcloud secrets versions add datasource-syncer --data-file=-
Crea il seguente file YAML e chiamalo
cloud-run-datasource-syncer.yaml
:apiVersion: run.googleapis.com/v1 kind: Job metadata: name: datasource-syncer-job spec: template: spec: taskCount: 1 template: spec: containers: - name: datasource-syncer image: gke.gcr.io/prometheus-engine/datasource-syncer:v0.15.3-gke.0 args: - "--datasource-uids=GRAFANA_DATASOURCE_UID" - "--grafana-api-endpoint=GRAFANA_INSTANCE_URL" - "--project-id=PROJECT_ID" env: - name: GRAFANA_SERVICE_ACCOUNT_TOKEN valueFrom: secretKeyRef: key: latest name: datasource-syncer serviceAccountName: gmp-ds-syncer-sa@PROJECT_ID.iam.gserviceaccount.com
Quindi, esegui questo comando per creare un job Cloud Run utilizzando il file YAML:
gcloud run jobs replace cloud-run-datasource-syncer.yaml --region REGION
Crea una pianificazione in Cloud Scheduler per eseguire il job Cloud Run ogni 10 minuti:
gcloud scheduler jobs create http datasource-syncer \ --location REGION \ --schedule="*/10 * * * *" \ --uri="https://REGION-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/PROJECT_ID/jobs/datasource-syncer-job:run" \ --http-method POST \ --oauth-service-account-email=gmp-ds-syncer-sa@PROJECT_ID.iam.gserviceaccount.com
Quindi, forza l'esecuzione dello scheduler appena creato:
gcloud scheduler jobs run datasource-syncer --location REGION
L'aggiornamento dell'origine dati può richiedere fino a 15 secondi.
Vai all'origine dati Grafana appena configurata e verifica che il valore URL server Prometheus inizi con
https://monitoring.googleapis.com
. Potresti dover aggiornare la pagina. Una volta verificato, vai in fondo alla pagina, seleziona Salva e testa e assicurati di vedere un segno di spunta verde che indica che l'origine dati è configurata correttamente. Devi selezionare Salva e testa almeno una volta per assicurarti che il completamento automatico delle etichette in Grafana funzioni.
Utilizzare Kubernetes
Per eseguire il deployment e l'esecuzione del sincronizzatore dell'origine dati in un cluster Kubernetes:
Scegli un progetto, un cluster e uno spazio dei nomi in cui eseguire il deployment di Data Source Syncer. Ti consigliamo di eseguire il deployment del sincronizzatore dell'origine dati in un cluster appartenente al progetto di definizione dell'ambito di un ambito delle metriche multiprogetto. Il sincronizzatore dell'origine dati utilizza il progetto Google Cloud configurato come progetto di ambito.
Successivamente, assicurati di configurare e autorizzare correttamente il sincronizzatore dell'origine dati:
- Se utilizzi Workload Identity Federation for GKE, segui le istruzioni per creare e autorizzare un service account. Assicurati di associarlo allo spazio dei nomi Kubernetes in cui vuoi eseguire il sincronizzatore dell'origine dati.
- Se non utilizzi Workload Identity Federation for GKE, verifica di non aver modificato il service account Compute Engine predefinito.
- Se non esegui su GKE, consulta Esecuzione di Data Source Syncer al di fuori di GKE.
Poi, determina se devi autorizzare ulteriormente il sincronizzatore dell'origine dati per l'esecuzione di query su più progetti:
- Se il tuo progetto locale è il progetto di definizione dell'ambito e hai seguito le istruzioni per verificare o configurare un account di servizio per il progetto locale, l'esecuzione di query multiprogetto dovrebbe funzionare senza ulteriori configurazioni.
- Se il progetto locale non è il progetto di definizione dell'ambito, devi autorizzare il sincronizzatore dell'origine dati a eseguire query sul progetto di definizione dell'ambito. Per istruzioni, consulta Autorizzare il sincronizzatore dell'origine dati per ottenere il monitoraggio di più progetti.
Determina l'URL dell'istanza Grafana, ad esempio
https://yourcompanyname.grafana.net
per un deployment Grafana Cloud ohttp://grafana.NAMESPACE_NAME.svc:3000
per un'istanza locale configurata utilizzando il file YAML di deployment di test.Se esegui il deployment di Grafana in locale e il cluster è configurato per proteggere tutto il traffico in-cluster utilizzando TLS, devi utilizzare
https://
nell'URL ed eseguire l'autenticazione utilizzando una delle opzioni di autenticazione TLS supportate.Scegli l'origine dati Grafana Prometheus che vuoi utilizzare per Managed Service per Prometheus, che può essere una nuova origine dati o una preesistente, quindi trova e annota l'UID dell'origine dati. L'UID dell'origine dati si trova nell'ultima parte dell'URL quando esplori o configuri 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 nell'URL.Configura un service account Grafana creando il account di servizio e generando un token da utilizzare per l'account:
- Nella barra laterale di navigazione di Grafana, fai clic su Amministrazione > Utenti e accesso > Service account.
Crea il account di servizio facendo clic su Aggiungi service account, assegnandogli un nome e concedendogli il ruolo "Amministratore" in Grafana. Se la tua versione di Grafana consente autorizzazioni più granulari, puoi utilizzare il ruolo Origini dati > Scrittore.
Fai clic su Aggiungi token dell'account di servizio.
Imposta la scadenza del token su "Nessuna scadenza" e fai clic su Genera token, quindi copia il token generato negli appunti per utilizzarlo come GRAFANA_SERVICE_ACCOUNT_TOKEN nel passaggio successivo.
Configura le seguenti variabili di 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.
Esegui il comando seguente per creare un CronJob che aggiorni l'origine dati all'inizializzazione e poi ogni 10 minuti. Se utilizzi la federazione delle identità dei carichi di lavoro per GKE, il valore di NAMESPACE_NAME deve essere lo stesso spazio dei nomi che hai associato in precedenza all'account di servizio.
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"'|;' \ | kubectl -n NAMESPACE_NAME apply -f -
Vai all'origine dati Grafana appena configurata e verifica che il valore URL server Prometheus inizi con
https://monitoring.googleapis.com
. Potresti dover aggiornare la pagina. Una volta verificato, vai in fondo alla pagina e seleziona Salva e testa. Devi selezionare questo pulsante almeno una volta per assicurarti che il completamento automatico delle etichette in Grafana funzioni.
Eseguire query utilizzando Grafana
Ora puoi creare dashboard Grafana ed eseguire query utilizzando l'origine dati configurata. Lo screenshot seguente mostra un grafico Grafana che visualizza la metrica up
:
Per informazioni sull'esecuzione di query sulle metriche di sistema utilizzando PromQL, consulta PromQL per le metriche di Cloud Monitoring.Google Cloud
Esecuzione di Data Source Syncer al di fuori di GKE
Se esegui il sincronizzatore dell'origine dati in un cluster Google Kubernetes Engine o se utilizzi l'opzione serverless, puoi saltare questa sezione. Se riscontri problemi di autenticazione su GKE, consulta Verificare le account di servizio account.
Quando viene eseguito su GKE, il sincronizzatore dell'origine dati
recupera automaticamente le credenziali dall'ambiente in base
all'account di servizio del nodo o alla configurazione della federazione delle identità per i carichi di lavoro per GKE.
Nei cluster Kubernetes non GKE, le credenziali devono essere fornite
esplicitamente al sincronizzatore dell'origine dati utilizzando la
variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS
.
Imposta il contesto sul progetto di destinazione:
gcloud config set project PROJECT_ID
Crea un account di servizio:
gcloud iam service-accounts create gmp-test-sa
Questo passaggio crea il account di servizio che potresti aver già creato nelle istruzioni per Workload Identity Federation for GKE.
Concedi le autorizzazioni richieste al 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
Crea e scarica una chiave per il account di servizio:
gcloud iam service-accounts keys create gmp-test-sa-key.json \ --iam-account=gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com
Imposta il percorso del file della chiave utilizzando la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
.
Autorizza il sincronizzatore delle origini dati a ottenere il monitoraggio multiprogetto
Managed Service per Prometheus supporta il monitoraggio di più progetti utilizzando gli ambiti delle metriche.
Per chi utilizza l'opzione serverless, puoi eseguire query su più progetti se il progetto scelto è il progetto di definizione dell'ambito di un ambito delle metriche multiprogetto.
Per chi esegue il deployment del sincronizzatore dell'origine dati su Kubernetes, se il progetto locale è il progetto di definizione dell'ambito e hai seguito le istruzioni per verificare o configurare un service account per il progetto locale, la query multiprogetto dovrebbe funzionare senza ulteriori configurazioni.
Se il tuo progetto locale non è il progetto di scoping, devi autorizzare
il service account di Compute predefinito del progetto locale o
il tuo service account Workload Identity Federation per GKE ad avere
l'accesso monitoring.viewer
al progetto di scoping. Quindi, inserisci l'ID del progetto
di ambito come valore della variabile di ambiente
PROJECT_ID.
Se utilizzi il account di servizio default
di Compute Engine,
puoi eseguire una delle seguenti operazioni:
Esegui il deployment del sincronizzatore dell'origine dati in un cluster appartenente al tuo progetto di ambito.
Abilita la federazione delle identità per i carichi di lavoro per GKE per il tuo cluster e segui i passaggi di configurazione.
Fornisci una chiave del service account esplicita.
Per concedere a un account di servizio le autorizzazioni necessarie per accedere a un progetto Google Cloud diverso:
Concedi all'account di servizio l'autorizzazione di lettura dal progetto di destinazione che vuoi interrogare:
gcloud projects add-iam-policy-binding SCOPING_PROJECT_ID \ --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.viewer
Quando configuri il sincronizzatore dell'origine dati, trasmetti l'ID del progetto di ambito come valore della variabile di ambiente
PROJECT_ID
.
Ispeziona il cron job Kubernetes
Se esegui il deployment del sincronizzatore dell'origine dati su Kubernetes, puoi controllare il CronJob e assicurarti che tutte le variabili siano impostate correttamente eseguendo il seguente comando:
kubectl describe cronjob datasource-syncer
Per visualizzare i log del Job che configura inizialmente Grafana, esegui questo comando subito dopo aver applicato il file datasource-syncer.yaml
:
kubectl logs job.batch/datasource-syncer-init
Smontaggio
Per disattivare il job Cron di sincronizzazione dell'origine dati su Kubernetes, esegui questo comando:
kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.15.3/cmd/datasource-syncer/datasource-syncer.yaml
La disattivazione del sincronizzatore dell'origine dati interrompe l'aggiornamento di Grafana collegato con credenziali di autenticazione aggiornate e, di conseguenza, l'interrogazione di Managed Service per Prometheus non funziona più.
Compatibilità API
I seguenti endpoint dell'API Prometheus HTTP sono supportati da Managed Service per Prometheus nell'URL con il prefisso 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. Gli endpoint HTTP di Prometheus non sono disponibili nelle librerie client specifiche per i vari linguaggi di Cloud Monitoring.
Per informazioni sulla compatibilità di PromQL, consulta Supporto di PromQL.
Sono supportati completamente i seguenti endpoint:
/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'etichetta__name__
viene fornita utilizzandola come valore<label_name>
o tramite una corrispondenza esatta utilizzando un selettore di serie. Ad esempio, le seguenti chiamate sono completamente supportate:/api/v1/label/__name__/values
/api/v1/label/__name__/values?match[]={__name__=~".*metricname.*"}
/api/v1/label/labelname/values?match[]={__name__="metricname"}
Questa limitazione causa l'errore delle query di variabili
label_values($label)
in Grafana. In alternativa, puoi utilizzarelabel_values($metric, $label)
. Questo tipo di query è consigliato perché evita di recuperare valori per le etichette nelle metriche che non sono pertinenti per la dashboard specificata.L'endpoint
/api/v1/series
è supportato per le richiesteGET
, ma non per quellePOST
. Quando utilizzi lo strumento di sincronizzazione delle origini dati o il proxy frontend, questa limitazione viene gestita per te. Puoi anche configurare le origini dati Prometheus in Grafana in modo che emettano solo richiesteGET
. Il parametromatch[]
non supporta la corrispondenza delle espressioni regolari nell'etichetta__name__
.
Passaggi successivi
- Utilizza gli avvisi PromQL in Cloud Monitoring.
- Configura la valutazione delle regole gestite.
- Configura gli esportatori di uso comune.