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 su cui puoi eseguire query, e i seguenti modi basati su Prometheus per recuperare e utilizzare i dati raccolti:
- API Prometheus HTTP
- UI di Prometheus
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 server Prometheus locali, ottieni il 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 autonomo. Puoi saltare questa procedura 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 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 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 che crei nell'ambito dell'applicazione di esempio:
kubectl create ns NAMESPACE_NAME
Verifica le credenziali dell'account di servizio
Puoi saltare questa sezione se per il tuo cluster Kubernetes è abilitata Workload Identity.
Durante l'esecuzione su GKE, Managed Service per Prometheus recupera automaticamente le credenziali dall'ambiente in base all'account di servizio predefinito di Compute Engine. L'account di servizio predefinito ha le autorizzazioni necessarie, monitoring.metricWriter
e monitoring.viewer
, per impostazione predefinita. Se non utilizzi Workload Identity e in precedenza hai rimosso uno di questi ruoli dall'account di servizio del nodo predefinito, dovrai riaggiungere le autorizzazioni mancanti prima di continuare.
Se non stai eseguendo su GKE, consulta Fornire le credenziali in modo esplicito.
Configura un account di servizio per Workload Identity
Puoi saltare questa sezione se per il tuo cluster Kubernetes non è abilitata Workload Identity.
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 all'API Monitoring. Questa sezione descrive quanto segue:
- Creazione di un account di servizio Google Cloud dedicato
gmp-test-sa
. - Associazione dell'account di servizio Google Cloud all'account di servizio Kubernetes predefinito in uno spazio dei nomi di test,
NAMESPACE_NAME
. - Concessione dell'autorizzazione necessaria all'account di servizio Google Cloud.
Crea e associa l'account di servizio
Questo passaggio viene visualizzato in diverse sezioni della documentazione di Managed Service per Prometheus. Se hai già eseguito questo passaggio come parte di un'attività precedente, non è necessario ripeterlo. Vai avanti per autorizzare l'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 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 un account di servizio diverso, modifica i comandi di conseguenza.
Autorizza l'account di servizio
I gruppi di autorizzazioni correlate vengono raccolti in ruoli e concedi i ruoli a un'entità, in questo esempio l'account di servizio Google Cloud. Per ulteriori informazioni sui ruoli di Monitoring, consulta Controllo dell'accesso.
Il comando seguente concede all'account di servizio Google Cloud gmp-test-sa
i ruoli dell'API Monitoring necessari per leggere i dati delle metriche.
Se hai già concesso all'account di servizio Google Cloud un ruolo specifico nell'ambito dell'attività precedente, non è necessario ripeterlo.
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
Esegui il debug della configurazione di Workload Identity
Se hai difficoltà a utilizzare Workload Identity, consulta la 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 gli errori di copia-incolla parziali sono le fonti di errore più comuni durante la configurazione di Workload Identity, ti consigliamo vivamente di utilizzare le variabili modificabili e le icone di copia e incolla cliccabili incorporate negli esempi di codice di queste istruzioni.
Workload Identity negli ambienti di produzione
L'esempio descritto in questo documento associa l'account di servizio Google Cloud all'account di servizio Kubernetes predefinito e concede all'account di servizio Google Cloud tutte le autorizzazioni necessarie per utilizzare l'API Monitoring.
In un ambiente di produzione, è consigliabile utilizzare un approccio più granulare, con un account di servizio per ogni componente, ciascuno con autorizzazioni minime. Per maggiori informazioni sulla configurazione degli account di servizio per la gestione delle identità dei carichi di lavoro, consulta Utilizzo di Workload Identity.
Ambiti di query e metriche
I dati su cui è possibile eseguire query sono determinati dall'ambito delle metriche del costrutto di Cloud Monitoring, indipendentemente dal metodo utilizzato per eseguire le query sui dati. Ad esempio, se utilizzi Grafana per eseguire query su Managed Service per i dati di 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 su dati delle metriche appartenenti a più progetti Google Cloud. Ogni 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, che contiene le metriche e la configurazione per quel progetto. Un progetto di definizione dell'ambito può includere più di un progetto monitorato nell'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ò anche appartenere a più di un ambito delle metriche.
Quando esegui 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 i dati da più progetti. Se l'ambito delle metriche contiene tutti i progetti, le query e le regole vengono valutate a livello globale.
Per ulteriori informazioni sulla definizione dell'ambito dei progetti e delle metriche, consulta Ambiti delle metriche. Per informazioni sulla configurazione dell'ambito delle metriche multiprogetto, consulta Visualizzare metriche per più progetti.
Managed Service per dati di Prometheus in Cloud Monitoring
Il modo più semplice per verificare che i dati di Prometheus vengano esportati è utilizzare la pagina Explorer metriche di Cloud Monitoring nella console Google Cloud, che supporta PromQL. Per le istruzioni, consulta Esecuzione di query con PromQL in Cloud Monitoring.
UI frontend Prometheus autonoma
Puoi utilizzare l'interfaccia utente frontend di Prometheus autonoma per accedere ai dati importati e visualizzarli. Questa UI esegue query PromQL su tutti i dati del progetto Google Cloud, come determinato dall'ambito delle metriche associato al progetto.
L'interfaccia utente frontend funge anche da proxy di autenticazione per l'accesso ai dati importati. Questa funzionalità può essere utilizzata per gli strumenti client che non supportano OAuth2 per gli account di servizio, inclusa Grafana o la scalabilità automatica orizzontale dei pod tramite la libreria prometheus-adapter
.
Ti consigliamo vivamente di configurare Grafana per visualizzare i dati da Managed Service per Prometheus utilizzando il sincronizzatore delle origini dati. Le istruzioni per configurare Grafana utilizzando l'interfaccia utente frontend di Prometheus autonoma sono incluse qui come riferimento per gli utenti che hanno precedentemente configurato Grafana utilizzando questo metodo.
Esegui il deployment dell'interfaccia utente frontend
Per eseguire il deployment dell'interfaccia utente frontend di Prometheus autonoma per Managed Service per Prometheus, esegui questi comandi:
Esegui il deployment del servizio
frontend
e configuralo per eseguire query sul progetto di ambito dell'ambito delle metriche di tua scelta:curl https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.10.0/examples/frontend.yaml | sed 's/\$PROJECT_ID/PROJECT_ID/' | kubectl apply -n NAMESPACE_NAME -f -
Esegui il port forwarding del servizio
frontend
alla tua macchina locale. L'esempio seguente inoltra il servizio alla porta 9090:kubectl -n NAMESPACE_NAME port-forward svc/frontend 9090
Questo comando non restituisce e, mentre è in esecuzione, segnala gli accessi all'URL.
Se vuoi continuare a utilizzare un deployment Grafana installato da kube-prometheus, esegui invece il deployment dell'interfaccia utente frontend di Prometheus autonoma nello spazio dei nomi monitoring
.
Puoi accedere all'interfaccia utente frontend di Prometheus autonoma nel tuo browser all'URL http://localhost:9090
. Se utilizzi Cloud Shell per questo passaggio, puoi ottenere l'accesso utilizzando il pulsante Anteprima web.
Il seguente screenshot mostra una tabella nell'interfaccia utente frontend di Prometheus autonoma che mostra la metrica up
:
Puoi anche configurare l'autenticazione e l'autorizzazione appropriate sul servizio
frontend
utilizzando, ad esempio, Identity Aware Proxy.
Per ulteriori informazioni sull'esposizione dei servizi, consulta Esposizione delle applicazioni mediante servizi.
Modifica il progetto oggetto della query per ottenere il monitoraggio multiprogetto
Il deployment frontend
utilizza il progetto Google Cloud configurato come progetto di ambito. Se questo progetto è il progetto di definizione dell'ambito di un ambito delle metriche multiprogetto, può leggere le metriche di tutti i progetti nell'ambito delle metriche.
Puoi specificare un progetto con un ambito delle metriche multiprogetto utilizzando il flag --query.project-id
.
In genere si utilizza un progetto dedicato come progetto di definizione dell'ambito, che però non è lo stesso in cui viene eseguito il deployment frontend
.
Per consentire al deployment di leggere un progetto di destinazione diverso, devi fare quanto segue:
- Indica al deployment
frontend
quale progetto è il progetto di destinazione. Concedi all'account di servizio l'autorizzazione a leggere il progetto di destinazione. Se utilizzi l'account di servizio
default
di Compute Engine, puoi effettuare una delle seguenti operazioni:Abilita Workload Identity per il tuo cluster e segui i passaggi di configurazione.
Fornisci una chiave esplicita dell'account di servizio.
Per concedere le autorizzazioni necessarie per accedere a un altro progetto Google Cloud:
Concedi all'account di servizio l'autorizzazione a leggere dal progetto di destinazione su cui vuoi eseguire la query:
gcloud projects add-iam-policy-binding SCOPING_PROJECT_ID \ --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.viewer
Apri il deployment
frontend
creato in precedenza per la modifica:kubectl -n NAMESPACE_NAME edit deploy frontend
Specifica il progetto di destinazione utilizzando il flag
--query.project-id
:apiVersion: apps/v1 kind: Deployment metadata: namespace: NAMESPACE_NAME name: frontend spec: template containers: - name: frontend args: - --query.project-id=SCOPING_PROJECT_ID ...
Salva il file e chiudi l'editor. Dopo l'applicazione della modifica, i pod frontend vengono riavviati ed eseguono query sul nuovo progetto di definizione dell'ambito.
Autenticare l'interfaccia utente frontend
Il deployment frontend
supporta l'autenticazione dell'accesso di base per l'accesso autenticato nelle versioni 0.5.0 e successive. Per abilitare l'autenticazione, aggiungi le variabili di ambiente AUTH_USERNAME
e AUTH_PASSWORD
al deployment:
apiVersion: apps/v1 kind: Deployment metadata: namespace: NAMESPACE_NAME name: frontend spec: template containers: - name: frontend env: - name: AUTH_USERNAME value: USERNAME - name: AUTH_PASSWORD value: PASSWORD ...
Fornisci le credenziali in modo esplicito
Puoi saltare questa sezione se esegui il container frontend
in un cluster Google Kubernetes Engine. Se riscontri problemi di autenticazione su GKE, consulta Verificare le credenziali dell'account di servizio.
Durante l'esecuzione su GKE, il frontend recupera automaticamente le credenziali dall'ambiente in base all'account di servizio del nodo o alla configurazione di Workload Identity.
Nei cluster Kubernetes non GKE, le credenziali devono essere fornite esplicitamente
al frontend utilizzando i flag o la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS
.
Imposta il contesto per il 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 l'account di servizio che potresti aver già creato nelle istruzioni di Workload Identity.
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
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
Aggiungi il file della chiave come secret al cluster non GKE:
kubectl -n NAMESPACE_NAME create secret generic gmp-test-sa \ --from-file=key.json=gmp-test-sa-key.json
Apri la risorsa Deployment frontend per la modifica:
kubectl -n NAMESPACE_NAME edit deploy frontend
Aggiungi il testo mostrato in grassetto alla risorsa:
apiVersion: apps/v1 kind: Deployment metadata: namespace: NAMESPACE_NAME name: frontend spec: template containers: - name: frontend args: - --query.credentials-file=/gmp/key.json ... volumeMounts: - name: gmp-sa mountPath: /gmp readOnly: true ... volumes: - name: gmp-sa secret: secretName: gmp-test-sa ...
Salva il file e chiudi l'editor. Dopo l'applicazione della modifica, i pod vengono ricreati e iniziano l'autenticazione nel backend della metrica con l'account di servizio specificato.
GOOGLE_APPLICATION_CREDENTIALS
.Utilizzo di Grafana tramite il proxy frontend
Managed Service per Prometheus utilizza l'origine dati Prometheus integrata per Kubernetes, il che significa che puoi continuare a utilizzare le dashboard di Kubernetes personali o create dalla community senza alcuna modifica. Puoi anche importare le tue dashboard Grafana in Cloud Monitoring.
Autenticazione nelle API Google Cloud
Tutte le API Google Cloud richiedono l'autenticazione tramite OAuth2. Tuttavia, Grafana non supporta l'autenticazione OAuth2 per gli account di servizio utilizzati con le origini dati Prometheus. Per utilizzare Grafana con Managed Service per Prometheus, puoi utilizzare l'interfaccia utente frontend di Prometheus autonoma come proxy di autenticazione.
Devi puntare Grafana al proxy UI frontend autonomo per eseguire query sui dati a livello globale. Se non segui questi passaggi, Grafana esegue solo le query sui dati nel server Prometheus locale.
Se non hai ancora eseguito il deployment del servizio
frontend
della UI di Prometheus come proxy, eseguilo ora eseguendo questo comando:curl https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.10.0/examples/frontend.yaml | sed 's/\$PROJECT_ID/PROJECT_ID/' | kubectl apply -n NAMESPACE_NAME -f -
Per i cluster Kubernetes non GKE, come i cluster Anthos, vedi anche Fornire esplicitamente le credenziali per concedere al servizio
frontend
le autorizzazioni necessarie per eseguire query sulle metriche.Per istruzioni su come configurare l'ambito delle metriche utilizzato dal servizio
frontend
per eseguire query su più progetti, consulta Modifica del progetto oggetto della query.Se hai un deployment Grafana preesistente, ad esempio quello installato dalla libreria
kube-prometheus
o quello installato utilizzando un grafico Helm, puoi continuare a utilizzarlo con Managed Service per Prometheus. In questo caso, consulta Configurare un'origine dati per i passaggi successivi. Altrimenti, devi prima eseguire il deployment di Grafana.Deployment di Grafana
Se non hai un deployment Grafana in esecuzione nel tuo cluster, puoi creare un deployment di test temporaneo con cui sperimentare.
Per creare un deployment di Grafana temporaneo, applica il manifest
grafana.yaml
di Managed Service per Prometheus al cluster e esegui il port forwarding del serviziografana
alla tua macchina locale. L'esempio seguente inoltra il servizio alla porta 3000.Applica il manifest
grafana.yaml
:kubectl -n NAMESPACE_NAME apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/beb779d32f4dd531a3faad9f2916617b8d9baefd/examples/grafana.yaml
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 e, mentre è in esecuzione, segnala gli accessi all'URL.
Puoi accedere a Grafana nel browser all'URL
http://localhost:3000
con il nome utente:passwordadmin:admin
.
Configurare un'origine dati
Per eseguire una query su Managed Service per Prometheus in Grafana utilizzando l'interfaccia utente di Prometheus come proxy di autenticazione, devi aggiungere una nuova origine dati a Grafana. Per aggiungere un'origine dati per il servizio gestito:
Vai al deployment di Grafana, ad esempio visitando l'URL
http://localhost:3000
per accedere alla pagina di benvenuto di Grafana.Seleziona Configurazione dal menu principale di Grafana, quindi seleziona Origini dati.
Seleziona Aggiungi origine dati e poi Prometheus come database della serie temporale.
Nel campo URL del riquadro HTTP, inserisci l'URL del servizio Managed Service per Prometheus
frontend
. Se hai configurato l'interfaccia utente frontend di Prometheus in modo che venga eseguita sulla porta 9090, l'URL del servizio per questo campo èhttp://frontend.NAMESPACE_NAME.svc:9090
.Nel campo Timeout del riquadro HTTP, imposta il valore su
120
.Se hai configurato il proxy dell'interfaccia utente frontend con l'autenticazione di base, abilita l'opzione Autorizzazione di base nel riquadro Autorizzazione e compila il nome utente e la password.
Nel campo Timeout query, imposta il valore su
2m
.Nel campo Metodo HTTP, seleziona
GET
.Nel campo Tipo Prometheus, seleziona
Prometheus
.Nel campo Versione di Prometheus, seleziona
2.40.x
o superiore.Se disponi di più origini dati Prometheus, puoi assegnare a questa il nome "Managed Prometheus Service". Puoi lasciare invariati i valori predefiniti degli altri campi.
Fai clic su Salva e testa e cerca il messaggio "L'origine dati funziona".
Utilizzare la nuova origine dati
Ora puoi creare dashboard Grafana utilizzando la nuova origine dati. Puoi anche reindirizzare le dashboard esistenti alla nuova origine dati. Il seguente screenshot mostra un grafico di Grafana che mostra la metrica
up
:Connessione di Managed Service per Prometheus a Thanos
Puoi federare Managed Service per Prometheus in uno stack Thanos con deployment autonomo utilizzando thanos-promql-connector open source. Google Cloud non fornisce assistenza per questa integrazione.
API Prometheus HTTP
Managed Service per Prometheus supporta l'API HTTP Prometheus upstream all'URL preceduto da
https://monitoring.googleapis.com/v1/projects/PROJECT_ID/location/global/prometheus/api/v1/
. Per informazioni sugli endpoint supportati, consulta Compatibilità delle API.Questa API è accessibile da qualsiasi strumento in grado di interagire con un server Prometheus standard. Questo è solo un endpoint API e non gestisce una UI. In quanto API Google Cloud, l'API utilizza l'autenticazione OAuth2 e, come parte dell'API Cloud Monitoring, il valore
PROJECT_ID
è il progetto di ambito di un ambito delle metriche, in modo da poter recuperare i dati da qualsiasi progetto nell'ambito delle metriche. Per ulteriori informazioni sull'ambito, consulta Ambiti delle metriche.Per utilizzare questo endpoint, fornisci un'espressione PromQL. Ad esempio, la seguente query istantanea recupera tutte le serie temporali che hanno il nome della metrica
up
:curl https://monitoring.googleapis.com/v1/projects/PROJECT_ID/location/global/prometheus/api/v1/query \ -d "query=up" \ -H "Authorization: Bearer $(gcloud auth print-access-token)"
Se la richiesta ha esito positivo, la query restituisce un risultato simile al seguente, formattato per la leggibilità:
{ "status":"success", "data":{ "resultType":"vector", "result":[{ "metric": { "__name__":"up", "cluster":"gmp-test", "instance":"prom-example-84c6f547f5-g4ljn:web", "job":"prometheus", "location":"us-central1-a", "project_id":"a-gcp-project" }, "value": [1634873239.971,"1"] }] } }
Per informazioni sull'esecuzione di query sulle metriche di sistema di Google Cloud utilizzando PromQL, consulta Metriche di PromQL per Cloud Monitoring.
Compatibilità delle API
I seguenti endpoint dell'API Prometheus HTTP sono supportati da Managed Service per Prometheus nell'URL con 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.
Per informazioni sulla compatibilità con PromQL, consulta il supporto per PromQL.
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'etichetta__name__
viene fornita utilizzandola come valore<label_name>
o corrispondendo esattamente all'etichetta tramite un selettore di serie. Ad esempio, le seguenti chiamate sono pienamente supportate:/api/v1/label/__name__/values
/api/v1/label/__name__/values?match[]={__name__=~".*metricname.*"}
/api/v1/label/labelname/values?match[]={__name__="metricname"}
Questa limitazione determina l'esito negativo delle query con variabile
label_values($label)
in Grafana. Puoi invece utilizzarelabel_values($metric, $label)
. Questo tipo di query è consigliato perché evita di recuperare i valori per le etichette su metriche che non sono pertinenti per la dashboard specifica.L'endpoint
/api/v1/series
è supportato per le richiesteGET
ma non perPOST
. Quando utilizzi il sincronizzatore dell'origine dati o il proxy frontend, questa limitazione viene gestita automaticamente. Puoi anche configurare le origini dati Prometheus in Grafana per inviare solo le richiesteGET
.