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 è possibile eseguire query, e i seguenti metodi basati su Prometheus per recuperare e utilizzare i dati raccolti:
- L'API HTTP di Prometheus
- 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. L'esecuzione di query su Monarch anziché sui dati provenienti da server Prometheus locali offre un monitoraggio globale su larga scala.
Prima di iniziare
Se non hai già eseguito il deployment del servizio gestito, configura la raccolta gestita o la raccolta con deployment autonomo. Puoi saltare questo passaggio se ti interessa eseguire query sulle metriche di Cloud Monitoring solo utilizzando PromQL.
Configura il tuo ambiente
Per evitare di inserire ripetutamente l'ID progetto o il nome del cluster, esegui questa 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 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 come parte dell'applicazione di esempio:
kubectl create ns NAMESPACE_NAME
Verificare le credenziali dell'account di servizio
Puoi saltare questa sezione se nel 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 dispone delle
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 aggiungere di nuovo le autorizzazioni mancanti prima di continuare.
Se non esegui le credenziali su GKE, consulta Fornire le credenziali in modo esplicito.
Configura un account di servizio per Workload Identity
Puoi saltare questa sezione se nel 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 all'API Monitoring l'autorizzazione del tuo account di servizio Kubernetes. In questa sezione vengono descritte le seguenti informazioni:
- 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
. - Concedere l'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 direttamente ad 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 in modo appropriato.
Autorizza l'account di servizio
I gruppi di autorizzazioni correlate vengono raccolti in ruoli e tu 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 di un'attività precedente, non sarà necessario ripeterlo.
Per autorizzare il tuo account di servizio a leggere da un ambito delle metriche multiprogetto, segui queste istruzioni e consulta Modificare 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
Debug della configurazione di Workload Identity
Se hai difficoltà a far funzionare 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 il copia-incolla parziale sono le fonti più comuni di errori 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 in ambienti di produzione
L'esempio descritto in questo documento associa l'account di servizio Google Cloud all'account di servizio Kubernetes predefinito e fornisce all'account di servizio Google Cloud tutte le autorizzazioni necessarie per utilizzare l'API Monitoring.
In un ambiente di produzione, conviene utilizzare un approccio più granulare, con un account di servizio per ogni componente e ciascuno con autorizzazioni minime. Per ulteriori informazioni sulla configurazione degli account di servizio per la 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 dall'ambito delle metriche del costrutto di Cloud Monitoring, 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, denominato 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 del progetto. Un progetto di definizione dell'ambito può avere più progetti monitorati 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 una query sulle metriche in un progetto di definizione dell'ambito e se quel progetto di ambito ospita un ambito delle metriche con più progetti, 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 sull'ambito dei progetti e delle metriche, consulta Ambiti delle metriche. Per informazioni sulla configurazione dell'ambito delle metriche per più progetti, consulta Visualizzare le metriche per più progetti.
Managed Service per i dati 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 le istruzioni, consulta Esecuzione di query con PromQL in Cloud Monitoring.
UI frontend Prometheus autonoma
Puoi utilizzare l'interfaccia utente frontend Prometheus autonoma per accedere ai dati importati e visualizzarli. Questa UI esegue query PromQL su tutti i dati del tuo progetto Google Cloud, come stabilito dall'ambito delle metriche associato al progetto.
L'interfaccia utente del 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,
tra cui Grafana o la scalabilità automatica orizzontale dei pod utilizzando la
libreria prometheus-adapter
.
Ti consigliamo vivamente di configurare Grafana in modo da visualizzare i dati di Managed Service per Prometheus utilizzando lo strumento di sincronizzazione dell'origine dati. Le istruzioni per configurare Grafana utilizzando l'interfaccia utente frontend autonoma di Prometheus sono incluse qui come riferimento per gli utenti che hanno precedentemente configurato Grafana utilizzando questo metodo.
Esegui il deployment della UI frontend
Per eseguire il deployment dell'interfaccia utente frontend Prometheus autonoma per Managed Service per Prometheus, esegui questi comandi:
Esegui il deployment del servizio
frontend
e configuralo per eseguire query sul progetto di definizione dell'ambito dell'ambito delle metriche che preferisci: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. Nell'esempio seguente il servizio viene inoltrato 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 il deployment dell'interfaccia utente frontend Prometheus autonoma nello spazio dei nomi
monitoring
.
Puoi accedere all'interfaccia utente frontend 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 del frontend di Prometheus autonoma che mostra la metrica up
:
Puoi anche configurare un'autenticazione e un'autorizzazione adeguate nel servizio frontend
utilizzando, ad esempio, Identity Aware Proxy.
Per ulteriori informazioni sull'esposizione dei servizi, consulta Esposizione delle applicazioni tramite i servizi.
Modifica il progetto su cui è stata eseguita la query per ottenere il monitoraggio multiprogetto
Il deployment frontend
utilizza il progetto Google Cloud configurato come progetto di definizione dell'ambito. Se questo progetto è il progetto di definizione dell'ambito di un ambito delle metriche con più progetti, 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, utilizzi un progetto dedicato come progetto di definizione dell'ambito e questo progetto non è lo stesso in cui viene eseguito il deployment frontend
.
Per consentire al deployment di leggere un progetto di destinazione diverso, devi seguire questi passaggi:
- Indica al deployment
frontend
il progetto di destinazione. Concedi all'account di servizio l'autorizzazione per leggere il progetto di destinazione. Se utilizzavi 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, segui questi passaggi:
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. Una volta applicata la modifica, i pod di frontend vengono riavviati ed eseguono query sul nuovo progetto di definizione dell'ambito.
Autentica la UI frontend
Il deployment di 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, vedi 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 mediante flag o 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 l'account di servizio che potresti avere 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 da modificare:
kubectl -n NAMESPACE_NAME edit deploy frontend
Aggiungi il testo visualizzato 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. Una volta applicata la modifica, i pod vengono ricreati e viene avviata 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 Grafana, il che significa che puoi continuare a utilizzare qualsiasi dashboard di Grafana personale o creata 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 origini dati Prometheus. Per utilizzare Grafana con Managed Service per Prometheus, puoi utilizzare l'interfaccia utente frontend Prometheus autonoma come proxy di autenticazione.
Devi indirizzare Grafana al proxy della UI frontend autonomo per eseguire query sui dati a livello globale. Se non segui questi passaggi, Grafana esegue solo query sui dati nel server Prometheus locale.
Se non hai già eseguito il deployment del servizio UI Prometheus
frontend
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, ad esempio i cluster Anthos, consulta anche Fornire le credenziali in modo esplicito per concedere al servizio
frontend
le autorizzazioni necessarie per eseguire query sulle metriche.Consulta Modificare il progetto su cui è stata eseguita la query per istruzioni su come configurare l'ambito delle metriche utilizzato dal servizio
frontend
per eseguire query su più progetti.Se hai un deployment Grafana preesistente, ad esempio uno installato tramite la libreria
kube-prometheus
o uno 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. In caso contrario, devi prima eseguire il deployment di Grafana.Esegui il deployment di Grafana
Se nel tuo cluster non è in esecuzione un deployment Grafana, puoi creare un deployment di test temporaneo da sperimentare.
Per creare un deployment Grafana temporaneo, applica il manifest Managed Service per Prometheus
grafana.yaml
al tuo cluster e esegui il port forwarding del serviziografana
alla tua macchina locale. Nell'esempio seguente il servizio viene inoltrato 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 tuo browser all'URL
http://localhost:3000
con nomeutente:passwordadmin:admin
.
Configurare un'origine dati
Per eseguire 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, segui questi passaggi:
Vai al tuo deployment Grafana, ad esempio, navigando all'URL
http://localhost:3000
per raggiungere la pagina di benvenuto di Grafana.Seleziona Configurazione dal menu Grafana principale, poi seleziona Origini dati.
Seleziona Aggiungi origine dati e seleziona Prometheus come database delle serie temporali.
Nel campo URL del riquadro HTTP, inserisci l'URL del servizio Managed Service per Prometheus
frontend
. Se hai configurato la UI 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, attiva 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 HTTP Method (Metodo HTTP), seleziona
GET
.Nel campo Tipo Prometheus, seleziona
Prometheus
.Nel campo Versione Prometheus, seleziona
2.40.x
o una versione successiva.Se disponi di più origini dati Prometheus, puoi assegnare a questa un nome come "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 Grafana che mostra la metrica
up
:Connessione di Managed Service per Prometheus a Thanos
Puoi federare Managed Service per Prometheus in uno stack Thanos di cui è stato eseguito il deployment autonomo utilizzando thanos-promql-connector open source. Google Cloud non fornisce assistenza per questa integrazione.
API HTTP Prometheus
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.È possibile accedere a questa API da qualsiasi strumento in grado di interagire con un server Prometheus standard. Si tratta solo di un endpoint API e non di una UI. Essendo un'API di 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, che consente di recuperare i dati da qualsiasi progetto nell'ambito delle metriche. Per ulteriori informazioni sulla definizione dell'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 come il seguente, che è stato 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 su come eseguire 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 HTTP Prometheus sono supportati 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.
Per informazioni sulla compatibilità di PromQL, consulta Assistenza di 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 trovando una corrispondenza esatta con 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 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 su metriche non pertinenti per la dashboard specificata.L'endpoint
/api/v1/series
è supportato per le richiesteGET
, ma nonPOST
. Quando utilizzi lo strumento di sincronizzazione dell'origine dati o il proxy frontend, questa restrizione viene gestita automaticamente. Puoi anche configurare le origini dati Prometheus in Grafana in modo che invii solo richiesteGET
. Il parametromatch[]
non supporta la corrispondenza delle espressioni regolari nell'etichetta__name__
.