Questo documento descrive come configurare Google Cloud Managed Service per Prometheus con la raccolta gestita. La configurazione è un esempio minimo di importazione funzionante, utilizzando un deployment Prometheus che monitora un'applicazione di esempio e archivia le metriche raccolte in Monarch.
Questo documento illustra come:
- Configura il tuo ambiente e gli strumenti a riga di comando.
- Configura la raccolta gestita per il tuo cluster.
- Configura una risorsa per lo scraping della destinazione e l'importazione delle metriche.
- Esegui la migrazione delle risorse personalizzate esistenti dell'operatore Prometheus.
Ti consigliamo di utilizzare la raccolta gestita, che riduce la complessità di deployment, scalabilità, sharding, configurazione e gestione dei raccoglitori. La raccolta gestita è supportata per GKE e tutti gli altri ambienti Kubernetes.
La raccolta gestita esegue raccoglitori basati su Prometheus come Daemonset e garantisce scalabilità mediante lo scraping delle destinazioni solo sui nodi coposizionati. Configuri i raccoglitori con risorse personalizzate leggere per eseguire lo scraping degli esportatori utilizzando pull collection, quindi i raccoglitori eseguono il push dei dati di scraping al datastore centrale Monarch. Google Cloud non accede mai direttamente al tuo cluster per eseguire il pull o lo scraping dei dati delle metriche; i tuoi raccoglitori eseguono il push dei dati a Google Cloud. Per saperne di più sulla raccolta dei dati gestita e di cui è stato eseguito il deployment automatico, consulta Raccolta dei dati con Managed Service per Prometheus e Importazione ed esecuzione di query con la raccolta gestita e di cui è stato eseguito il deployment autonomo.
Prima di iniziare
Questa sezione descrive la configurazione necessaria per le attività descritte in questo documento.
Configura progetti e strumenti
Per utilizzare Google Cloud Managed Service per Prometheus, sono necessarie le seguenti risorse:
Un progetto Google Cloud in cui è abilitata l'API Cloud Monitoring.
Se non hai un progetto Google Cloud, segui questi passaggi:
Nella console Google Cloud, vai a Nuovo progetto:
Nel campo Nome progetto, inserisci un nome per il progetto e fai clic su Crea.
Vai a Fatturazione:
Seleziona il progetto appena creato, se non è già selezionato nella parte superiore della pagina.
Ti viene chiesto di scegliere un profilo pagamenti esistente o di crearne uno nuovo.
L'API Monitoring è abilitata per impostazione predefinita per i nuovi progetti.
Se hai già un progetto Google Cloud, assicurati che l'API Monitoring sia abilitata:
Vai ad API e servizi:
Seleziona il progetto.
Fai clic su Abilita API e servizi.
Cerca "Monitoring".
Nei risultati di ricerca, fai clic su "API Cloud Monitoring".
Se non viene visualizzato "API abilitata", fai clic sul pulsante Abilita.
Un cluster Kubernetes. Se non disponi di un cluster Kubernetes, segui le istruzioni riportate nella Guida rapida per GKE.
Sono inoltre necessari i seguenti strumenti a riga di comando:
gcloud
kubectl
Gli strumenti gcloud
e kubectl
fanno parte
di Google Cloud CLI. Per informazioni sull'installazione, consulta Gestione dei componenti di Google Cloud CLI. Per visualizzare i componenti dell'interfaccia a riga di comando gcloud installati, esegui questo comando:
gcloud components list
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
Configura la raccolta gestita
Puoi utilizzare la raccolta gestita su cluster GKE e non GKE.
Dopo aver abilitato la raccolta gestita, i componenti nel cluster verranno eseguiti, ma non è stata ancora generata alcuna metrica. Questi componenti hanno bisogno delle risorse PodMonitoring o ClusterPodMonitoring per eseguire correttamente lo scraping degli endpoint delle metriche. Devi eseguire il deployment di queste risorse con endpoint delle metriche validi o abilitare uno dei pacchetti di metriche gestite, ad esempio le metriche dello stato Kube, integrate in GKE. Per informazioni sulla risoluzione dei problemi, consulta Problemi lato importazione.
L'abilitazione della raccolta gestita installa i seguenti componenti nel cluster:
- Il deployment
gmp-operator
, che esegue il deployment dell'operatore Kubernetes per Managed Service per Prometheus. - Il deployment
rule-evaluator
, utilizzato per configurare ed eseguire le regole di avviso e registrazione. - Il DaemonSet
collector
, che scala orizzontalmente la raccolta tramite lo scraping delle metriche solo dai pod in esecuzione sullo stesso nodo di ogni raccoglitore. - Lo StatefulSet
alertmanager
, configurato per inviare avvisi attivati ai tuoi canali di notifica preferiti.
Per la documentazione di riferimento sull'operatore Managed Service per Prometheus, consulta la pagina dei file manifest.
Abilita raccolta gestita: GKE
La raccolta gestita è abilitata per impostazione predefinita per:
Cluster GKE Autopilot che eseguono GKE versione 1.25 o successiva.
Cluster GKE Standard che eseguono GKE versione 1.27 o successiva. Puoi eseguire l'override di questa impostazione predefinita durante la creazione del cluster. Vedi Disattivare la raccolta gestita.
Se esegui in un ambiente GKE che non abilita la raccolta gestita per impostazione predefinita, consulta Abilitare la raccolta gestita manualmente.
L'upgrade della raccolta gestita su GKE viene eseguito automaticamente quando vengono rilasciate nuove versioni dei componenti in-cluster.
La raccolta gestita su GKE utilizza le autorizzazioni concesse all'account di servizio predefinito di Compute Engine. Se hai un criterio che modifica le autorizzazioni standard nell'account di servizio nodo predefinito, potresti dover aggiungere il ruolo Monitoring Metric Writer
per continuare.
Abilita raccolta gestita manualmente
Se esegui in un ambiente GKE che non abilita la raccolta gestita per impostazione predefinita, puoi abilitare la raccolta gestita utilizzando quanto segue:
- La dashboard Cluster GKE in Cloud Monitoring.
- La pagina Kubernetes Engine nella console Google Cloud.
- Google Cloud CLI. Per utilizzare gcloud CLI, devi eseguire GKE versione 1.21.4-gke.300 o successiva.
Terraform per Google Kubernetes Engine. Per utilizzare Terraform per abilitare Managed Service per Prometheus, devi eseguire GKE versione 1.21.4-gke.300 o successiva.
Dashboard dei cluster GKE
Puoi eseguire le operazioni indicate di seguito utilizzando la dashboard Cluster GKE in Cloud Monitoring.
- Determina se Managed Service per Prometheus è abilitato sui tuoi cluster e se stai utilizzando una raccolta gestita o di cui è stato eseguito il deployment autonomo.
- Abilita la raccolta gestita sui cluster nel tuo progetto.
- Visualizza altre informazioni sui cluster.
Per visualizzare la dashboard Cluster GKE, segui questi passaggi:
-
Nella console Google Cloud, vai alla pagina Dashboard
:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.
Seleziona la categoria della dashboard G C P, quindi seleziona Cluster GKE.
Per abilitare la raccolta gestita su uno o più cluster GKE utilizzando la dashboard Cluster GKE, segui questi passaggi:
Seleziona la casella di controllo per ogni cluster GKE in cui vuoi abilitare la raccolta gestita.
Seleziona Attiva selezionati.
UI di Kubernetes Engine
Con la console Google Cloud puoi effettuare le seguenti operazioni:
- Abilita la raccolta gestita su un cluster GKE esistente.
- Crea un nuovo cluster GKE con la raccolta gestita abilitata.
Per aggiornare un cluster esistente:
-
Nella console Google Cloud, vai alla pagina Cluster Kubernetes:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato il cui sottotitolo è Kubernetes Engine.
Fai clic sul nome del cluster.
Nell'elenco Funzionalità, individua l'opzione Managed Service per Prometheus. Se è elencato come disabilitato, fai clic su edit Modifica, quindi seleziona Abilita Managed Service per Prometheus.
Fai clic su Salva modifiche.
Per creare un cluster con la raccolta gestita abilitata, segui questi passaggi:
-
Nella console Google Cloud, vai alla pagina Cluster Kubernetes:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato il cui sottotitolo è Kubernetes Engine.
Fai clic su Crea.
Fai clic su Configura per l'opzione Standard.
Nel pannello di navigazione, fai clic su Funzionalità.
Nella sezione Operazioni, seleziona Abilita Managed Service per Prometheus.
Fai clic su Salva.
Interfaccia a riga di comando gcloud
Con gcloud CLI puoi effettuare le seguenti operazioni:
- Abilita la raccolta gestita su un cluster GKE esistente.
- Crea un nuovo cluster GKE con la raccolta gestita abilitata.
Il completamento di questi comandi potrebbe richiedere fino a 5 minuti.
Per prima cosa, imposta il progetto:
gcloud config set project PROJECT_ID
Per aggiornare un cluster esistente, esegui uno dei seguenti comandi update
a seconda che il cluster sia di zona o di regione:
gcloud container clusters update CLUSTER_NAME --enable-managed-prometheus --zone ZONE
gcloud container clusters update CLUSTER_NAME --enable-managed-prometheus --region REGION
Per creare un cluster con la raccolta gestita abilitata, esegui questo comando:
gcloud container clusters create CLUSTER_NAME --zone ZONE --enable-managed-prometheus
GKE Autopilot
La raccolta gestita è attiva per impostazione predefinita nei cluster GKE Autopilot che eseguono GKE versione 1.25 o successiva. Non puoi disattivare la raccolta gestita.
Se il cluster non riesce ad abilitare automaticamente la raccolta gestita durante l'upgrade alla versione 1.25, puoi abilitarla manualmente eseguendo il comando di aggiornamento nella sezione gcloud CLI.
Terraform
Per istruzioni sulla configurazione della raccolta gestita utilizzando Terraform, consulta il registro Terraform per google_container_cluster
.
Per informazioni generali sull'utilizzo di Google Cloud con Terraform, consulta Terraform with Google Cloud.
Disattiva raccolta gestita
Se vuoi disabilitare la raccolta gestita sui tuoi cluster, puoi utilizzare uno dei seguenti metodi:
UI di Kubernetes Engine
Con la console Google Cloud puoi effettuare le seguenti operazioni:
- Disabilita la raccolta gestita su un cluster GKE esistente.
- Esegui l'override dell'abilitazione automatica della raccolta gestita quando crei un nuovo cluster GKE Standard che esegue GKE versione 1.27 o successiva.
Per aggiornare un cluster esistente:
-
Nella console Google Cloud, vai alla pagina Cluster Kubernetes:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato il cui sottotitolo è Kubernetes Engine.
Fai clic sul nome del cluster.
Nella sezione Funzionalità, individua l'opzione Managed Service per Prometheus. Fai clic su edit Modifica e deseleziona Abilita Managed Service per Prometheus.
Fai clic su Salva modifiche.
Per eseguire l'override dell'abilitazione automatica della raccolta gestita durante la creazione di un nuovo cluster GKE Standard (versione 1.27 o successiva), segui questi passaggi:
-
Nella console Google Cloud, vai alla pagina Cluster Kubernetes:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato il cui sottotitolo è Kubernetes Engine.
Fai clic su Crea.
Fai clic su Configura per l'opzione Standard.
Nel pannello di navigazione, fai clic su Funzionalità.
Nella sezione Operazioni, deseleziona Abilita Managed Service per Prometheus.
Fai clic su Salva.
Interfaccia a riga di comando gcloud
Con gcloud CLI puoi effettuare le seguenti operazioni:
- Disabilita la raccolta gestita su un cluster GKE esistente.
- Esegui l'override dell'abilitazione automatica della raccolta gestita quando crei un nuovo cluster GKE Standard che esegue GKE versione 1.27 o successiva.
Il completamento di questi comandi potrebbe richiedere fino a 5 minuti.
Per prima cosa, imposta il progetto:
gcloud config set project PROJECT_ID
Per disabilitare la raccolta gestita in un cluster esistente, esegui uno dei seguenti comandi update
a seconda che il cluster sia di zona o di regione:
gcloud container clusters update CLUSTER_NAME --disable-managed-prometheus --zone ZONE
gcloud container clusters update CLUSTER_NAME --disable-managed-prometheus --region REGION
Per eseguire l'override dell'abilitazione automatica della raccolta gestita durante la creazione di un nuovo cluster GKE Standard (versione 1.27 o successiva), esegui questo comando:
gcloud container clusters create CLUSTER_NAME --zone ZONE --no-enable-managed-prometheus
GKE Autopilot
Non puoi disattivare la raccolta gestita nei cluster GKE Autopilot che eseguono GKE versione 1.25 o successiva.
Terraform
Per disabilitare la raccolta gestita, imposta l'attributo enabled
nel blocco di configurazione managed_prometheus
su false
. Per ulteriori informazioni su questo blocco di configurazione, consulta il registro Terraform per google_container_cluster
.
Per informazioni generali sull'utilizzo di Google Cloud con Terraform, consulta Terraform with Google Cloud.
Abilita raccolta gestita: Kubernetes non GKE
Se è in esecuzione in un ambiente non GKE, puoi abilitare la raccolta gestita utilizzando quanto segue:
- L'interfaccia a riga di comando
kubectl
. La soluzione in bundle inclusa nei deployment GKE Enterprise che eseguono la versione 1.12 o successive.
Interfaccia a riga di comando kubectl
Per installare i raccoglitori gestiti quando utilizzi un cluster Kubernetes non GKE, esegui questi comandi per installare la configurazione e i manifest dell'operatore:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.10.0/manifests/setup.yaml kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.10.0/manifests/operator.yaml
GKE Enterprise
Per informazioni sulla configurazione della raccolta gestita per i cluster GKE Enterprise, consulta la documentazione per la tua distribuzione:
Esegui il deployment dell'applicazione di esempio
L'applicazione di esempio emette
la metrica contatore example_requests_total
e l'istogramma
example_random_numbers
(tra le altre) sulla porta metrics
. Il manifest per l'applicazione definisce tre repliche.
Per eseguire il deployment dell'applicazione di esempio, esegui questo comando:
kubectl -n NAMESPACE_NAME apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.10.0/examples/example-app.yaml
configura una risorsa PodMonitoring
Per importare i dati delle metriche emessi dall'applicazione di esempio, Managed Service per Prometheus utilizza lo scraping dei target. Lo scraping della destinazione e l'importazione delle metriche sono configurati utilizzando le risorse personalizzate di Kubernetes. Il servizio gestito utilizza le risorse personalizzate (CR) di PodMonitoring.
Una RP PodMonitoring esegue lo scraping delle destinazioni solo nello spazio dei nomi in cui viene eseguito il deployment della RP.
Per eseguire lo scraping delle destinazioni in più spazi dei nomi, esegui il deployment della stessa RP PodMonitoring in ogni spazio dei nomi. Puoi verificare che la risorsa PodMonitoring sia installata nello spazio dei nomi previsto eseguendo kubectl get podmonitoring -A
.
Per la documentazione di riferimento su tutte le RP di Managed Service per Prometheus, consulta il riferimento di prometheus-engine/doc/api.
Il seguente manifest definisce una risorsa PodMonitoring,
prom-example
, nello spazio dei nomi NAMESPACE_NAME
. La risorsa utilizza un selettore di etichette Kubernetes per trovare tutti i pod nello spazio dei nomi che hanno l'etichetta app.kubernetes.io/name
con valore prom-example
.
I pod corrispondenti vengono copiati su una porta denominata metrics
, ogni 30 secondi, sul
percorso HTTP /metrics
.
apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: prom-example spec: selector: matchLabels: app.kubernetes.io/name: prom-example endpoints: - port: metrics interval: 30s
Per applicare questa risorsa, esegui questo comando:
kubectl -n NAMESPACE_NAME apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.10.0/examples/pod-monitoring.yaml
Il tuo raccoglitore gestito sta eseguendo lo scraping dei pod corrispondenti. Puoi visualizzare lo stato della destinazione dello scrape attivando la funzionalità dello stato della destinazione.
Per configurare la raccolta orizzontale applicabile a un intervallo di pod in tutti gli spazi dei nomi, utilizza la risorsa ClusterPodMonitoring. La risorsa ClusterPodMonitoring fornisce la stessa interfaccia della risorsa PodMonitoring, ma non limita i pod rilevati a un determinato spazio dei nomi.
Se esegui su GKE, puoi fare quanto segue:
- Per eseguire query sulle metriche importate dall'applicazione di esempio utilizzando PromQL in Cloud Monitoring, consulta Eseguire query utilizzando Cloud Monitoring.
- Per eseguire query sulle metriche importate dall'applicazione di esempio utilizzando Grafana, consulta Eseguire query utilizzando Grafana o qualsiasi consumer dell'API Prometheus.
- Per scoprire come filtrare le metriche esportate e adattare le risorse dell'operatore Prom, consulta Ulteriori argomenti per la raccolta gestita.
Se esegui all'esterno di GKE, devi creare un account di servizio e autorizzarlo a scrivere i dati delle metriche, come descritto nella sezione seguente.
Fornisci le credenziali in modo esplicito
Durante l'esecuzione su GKE, il server Prometheus raccoglie automaticamente le credenziali dall'ambiente in base all'account di servizio del nodo. Nei cluster Kubernetes non GKE, le credenziali devono essere fornite esplicitamente tramite la risorsa OperatorConfig nello spazio dei nomi gmp-public.
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
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.metricWriter
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 gmp-public create secret generic gmp-test-sa \ --from-file=key.json=gmp-test-sa-key.json
Apri la risorsa OperatorConfig per la modifica:
kubectl -n gmp-public edit operatorconfig config
Aggiungi il testo visualizzato in grassetto alla risorsa:
apiVersion: monitoring.googleapis.com/v1 kind: OperatorConfig metadata: namespace: gmp-public name: config collection: credentials: name: gmp-test-sa key: key.json
Assicurati anche di aggiungere queste credenziali alla sezionerules
in modo che la valutazione delle regole gestite funzioni.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.
Argomenti aggiuntivi per la raccolta gestita
In questa sezione viene descritto come effettuare le seguenti operazioni:
- Attiva la funzionalità relativa allo stato di destinazione per semplificare il debug.
- Configurare lo scraping della destinazione con Terraform.
- Filtra i dati esportati nel servizio gestito.
- Esegui lo scraping delle metriche di Kubelet e di cAdvisor.
- Converti le risorse dell'operatore Prom esistenti per utilizzarle con il servizio gestito.
- Esegui la raccolta gestita all'esterno di GKE.
Attivazione della funzionalità di targeting per stato
Puoi controllare lo stato delle destinazioni nelle risorse PodMonitoring o ClusterPodMonitoring impostando il valore
features.targetStatus.enabled
nella risorsa OperatorConfig sutrue
, come mostrato di seguito:apiVersion: monitoring.googleapis.com/v1 kind: OperatorConfig metadata: namespace: gmp-public name: config features: targetStatus: enabled: true
Dopo alcuni secondi, il campo
Status.Endpoint Statuses
viene visualizzato su ogni risorsa PodMonitoring o ClusterPodMonitoring valida, se configurata.Se hai una risorsa PodMonitoring con il nome
prom-example
nello spazio dei nomiNAMESPACE_NAME
, puoi verificarne lo stato eseguendo questo comando:kubectl -n NAMESPACE_NAME describe podmonitorings/prom-example
L'output è simile al seguente:
API Version: monitoring.googleapis.com/v1 Kind: PodMonitoring ... Status: Conditions: ... Status: True Type: ConfigurationCreateSuccess Endpoint Statuses: Active Targets: 3 Collectors Fraction: 1 Last Update Time: 2023-08-02T12:24:26Z Name: PodMonitoring/custom/prom-example/metrics Sample Groups: Count: 3 Sample Targets: Health: up Labels: Cluster: CLUSTER_NAME Container: prom-example Instance: prom-example-589ddf7f7f-hcnpt:metrics Job: prom-example Location: REGION Namespace: NAMESPACE_NAME Pod: prom-example-589ddf7f7f-hcnpt project_id: PROJECT_ID Last Scrape Duration Seconds: 0.020206416 Health: up Labels: ... Last Scrape Duration Seconds: 0.054189485 Health: up Labels: ... Last Scrape Duration Seconds: 0.006224887
L'output include i seguenti campi di stato:
Status.Conditions.Status
è vero quando Managed Service per Prometheus riconosce ed elabora PodMonitoring o ClusterPodMonitoring.Status.Endpoint Statuses.Active Targets
mostra il numero di destinazioni di scrape che Managed Service per Prometheus conteggia su tutti i raccoglitori per questa risorsa PodMonitoring. Nell'applicazione di esempio, il deploymentprom-example
ha tre repliche con un unico target per la metrica, quindi il valore è3
. Se sono presenti target non integri, viene visualizzato il campoStatus.Endpoint Statuses.Unhealthy Targets
.Status.Endpoint Statuses.Collectors Fraction
mostra il valore1
(che significa 100%) se tutti i raccoglitori gestiti sono raggiungibili da Managed Service per Prometheus.Status.Endpoint Statuses.Last Update Time
mostra l'ora dell'ultimo aggiornamento. Se l'ora dell'ultimo aggiornamento è molto più lunga rispetto all'intervallo di scraping desiderato, la differenza potrebbe indicare problemi relativi al target o al cluster.- Il campo
Status.Endpoint Statuses.Sample Groups
mostra i target di esempio raggruppati in base a etichette di destinazione comuni inserite dal raccoglitore. Questo valore è utile per eseguire il debug di situazioni in cui i target non vengono rilevati. Se tutti i target sono integri e in fase di raccolta, il valore previsto per il campoHealth
èup
, mentre il valore del campoLast Scrape Duration Seconds
corrisponde alla durata abituale per un target tipico.
Per ulteriori informazioni su questi campi, consulta il documento dell'API Managed Service per Prometheus.
Uno dei seguenti motivi potrebbe indicare un problema di configurazione:
- Non è presente alcun campo
Status.Endpoint Statuses
nella risorsa PodMonitoring. - Il valore del campo
Last Scrape Duration Seconds
è troppo vecchio. - Vedi un numero troppo basso di target.
- Il valore del campo
Health
indica che il target èdown
.
Per ulteriori informazioni sul debug dei problemi di rilevamento della destinazione, consulta Problemi lato importazione nella documentazione per la risoluzione dei problemi.
Configurazione dello scraping della destinazione con Terraform
Puoi automatizzare la creazione e la gestione delle risorse PodMonitoring e ClusterPodMonitoring utilizzando il tipo di risorsa Terraform
kubernetes_manifest
o il tipo di risorsa Terraformkubectl_manifest
, che consente di specificare risorse personalizzate arbitrarie.Per informazioni generali sull'utilizzo di Google Cloud con Terraform, consulta Terraform con Google Cloud.
Filtra metriche esportate
Se raccogli molti dati, potresti voler evitare che alcune serie temporali vengano inviate a Managed Service per Prometheus per contenere i costi. Puoi farlo utilizzando le regole di rietichettatura di Prometheus con un'azione
keep
per una lista consentita o un'azionedrop
per una lista bloccata. Per la raccolta gestita, questa regola deve essere inserita nella sezionemetricRelabeling
della tua risorsa PodMonitoring o ClusterPodMonitoring.Ad esempio, la seguente regola di rietichettatura delle metriche filtrerà tutte le metriche che iniziano con
foo_bar_
,foo_baz_
ofoo_qux_
:metricRelabeling: - action: drop regex: foo_(bar|baz|qux)_.+ sourceLabels: [__name__]
La pagina Gestione delle metriche di Cloud Monitoring fornisce informazioni che possono aiutarti a controllare l'importo speso per le metriche addebitabili senza influire sull'osservabilità. La pagina Gestione delle metriche riporta le seguenti informazioni:
- Volumi di importazione per la fatturazione basata sia su byte che su campioni, nei domini delle metriche e per singole metriche.
- Dati su etichette e cardinalità delle metriche.
- Utilizzo di metriche nei criteri di avviso e nelle dashboard personalizzate.
- Percentuale di errori di scrittura delle metriche.
Per ulteriori suggerimenti su come ridurre i costi, consulta Controllo dei costi e attribuzione.
Scraping delle metriche Kubelet e cAdvisor
Il componente kubelet espone le metriche relative a se stesso e quelle di cAdvisor sui container in esecuzione sul relativo nodo. Puoi configurare la raccolta gestita per eseguire lo scraping delle metriche Kubelet e cAdvisor modificando la risorsa OperatorConfig. Per le istruzioni, consulta la documentazione dell'esportatore per Kubelet e cAdvisor.
Converti le risorse dell'operatore Prometheus esistenti
In genere, è possibile convertire le risorse dell'operatore Prometheus esistenti in risorse PodMonitoring e ClusterPodMonitoring della raccolta gestita di Prometheus.
Ad esempio, la risorsa ServiceMonitor definisce il monitoraggio per un insieme di servizi. La risorsa PodMonitoring gestisce un sottoinsieme dei campi gestiti dalla risorsa ServiceMonitor. Puoi convertire una RP di ServiceMonitor in una RP di PodMonitoring mappando i campi come descritto nella seguente tabella:
Monitoring.coreos.com/v1
ServiceMonitorCompatibilità
Monitoring.googleapis.com/v1
PodMonitoring.ServiceMonitorSpec.Selector
Identiche .PodMonitoringSpec.Selector
.ServiceMonitorSpec.Endpoints[]
.TargetPort
mappa a.Port
.Path
: compatible
.Interval
: compatible
.Timeout
: compatible.PodMonitoringSpec.Endpoints[]
.ServiceMonitorSpec.TargetLabels
PodMonitor deve specificare:
.FromPod[].From
etichetta del pod
.FromPod[].To
etichetta di destinazione.PodMonitoringSpec.TargetLabels
Di seguito è riportata una RP di ServiceMonitor di esempio. Il contenuto in grassetto viene sostituito nella conversione e i contenuti in corsivo vengono mappati direttamente:
apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: example-app spec: selector: matchLabels: app: example-app endpoints: - targetPort: web path: /stats interval: 30s targetLabels: - foo
Di seguito è riportata la RP PodMonitoring analoga, supponendo che il tuo servizio e i relativi pod siano etichettati con
app=example-app
. Se questa ipotesi non è applicabile, devi utilizzare i selettori di etichette della risorsa di servizio sottostante.I contenuti in grassetto sono stati sostituiti nella conversione:
apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: example-app spec: selector: matchLabels: app: example-app endpoints: - port: web path: /stats interval: 30s targetLabels: fromPod: - from: foo # pod label from example-app Service pods. to: foo
Puoi sempre continuare a utilizzare le risorse e le configurazioni di deployment dell'operatore Prometheus esistenti utilizzando i raccoglitori con deployment autonomo anziché i raccoglitori gestiti. Puoi eseguire query sulle metriche inviate da entrambi i tipi di raccoglitore, quindi potresti voler utilizzare i raccoglitori di cui è stato eseguito il deployment autonomo per i deployment Prometheus esistenti mentre utilizzi i raccoglitori gestiti per i nuovi deployment Prometheus.
Etichette riservate
Managed Service per Prometheus aggiunge automaticamente le seguenti etichette a tutte le metriche raccolte. Queste etichette vengono usate per identificare in modo univoco una risorsa in Monarch:
project_id
: l'identificatore del progetto Google Cloud associato alla metrica.location
: la località fisica (regione Google Cloud) in cui sono archiviati i dati. Questo valore corrisponde in genere alla regione del cluster GKE. Se i dati vengono raccolti da un deployment AWS o on-premise, il valore potrebbe essere la regione Google Cloud più vicina.cluster
: il nome del cluster Kubernetes associato alla tua metrica.namespace
: il nome dello spazio dei nomi Kubernetes associato alla metrica.job
: l'etichetta del job del target Prometheus, se nota; potrebbe essere vuota per i risultati della valutazione delle regole.instance
: l'etichetta dell'istanza del target Prometheus, se nota; potrebbe essere vuota per i risultati della valutazione delle regole.
Anche se non è consigliato quando l'esecuzione avviene su Google Kubernetes Engine, puoi eseguire l'override delle etichette
project_id
,location
ecluster
aggiungendole comeargs
alla risorsa Deployment all'interno dioperator.yaml
. Se utilizzi etichette riservate come etichette delle metriche, Managed Service per Prometheus le etichetta automaticamente aggiungendo il prefissoexported_
. Questo comportamento corrisponde al modo in cui Prometheus upstream gestisce i conflitti con etichette riservate.Smantellamento
Per disabilitare la raccolta gestita di cui è stato eseguito il deployment utilizzando
gcloud
o l'interfaccia utente di GKE, puoi eseguire una delle seguenti operazioni:Esegui questo comando:
gcloud container clusters update CLUSTER_NAME --disable-managed-prometheus
Utilizza l'UI di GKE:
Nella console Google Cloud, seleziona Kubernetes Engine, quindi seleziona Cluster.
Individua il cluster per il quale vuoi disabilitare la raccolta gestita e fai clic sul suo nome.
Nella scheda Dettagli, scorri verso il basso fino a Funzionalità e modifica lo stato in Disabilitato utilizzando il pulsante di modifica.
Per disabilitare la raccolta gestita di cui è stato eseguito il deployment tramite Terraform, specifica
enabled = false
nella sezionemanaged_prometheus
della risorsagoogle_container_cluster
.Per disabilitare la raccolta gestita di cui è stato eseguito il deployment utilizzando
kubectl
, esegui questo comando:kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.10.0/manifests/operator.yaml
La disabilitazione della raccolta gestita impedisce al cluster di inviare nuovi dati a Managed Service per Prometheus. Questa azione non elimina i dati delle metriche esistenti già archiviati nel sistema.
La disabilitazione della raccolta gestita elimina anche lo spazio dei nomi
gmp-public
e tutte le risorse al suo interno, inclusi eventuali esportatori installati nello spazio dei nomi.Esegui la raccolta gestita all'esterno di GKE
Negli ambienti GKE, puoi eseguire la raccolta gestita senza ulteriore configurazione. In altri ambienti Kubernetes, devi fornire esplicitamente le credenziali, un valore
project-id
che contenga le metriche, un valorelocation
(regione Google Cloud) in cui verranno archiviate le metriche e un valorecluster
per salvare il nome del cluster in cui è in esecuzione il raccoglitore.Poiché
gcloud
non funziona al di fuori degli ambienti Google Cloud, devi eseguire il deployment utilizzando kubectl. A differenza digcloud
, il deployment di una raccolta gestita utilizzandokubectl
non esegue automaticamente l'upgrade del cluster quando è disponibile una nuova versione. Ricorda di controllare la pagina delle release per conoscere le nuove versioni ed eseguire manualmente l'upgrade eseguendo nuovamente i comandikubectl
con la nuova versione.Puoi fornire una chiave dell'account di servizio modificando la risorsa OperatorConfig all'interno di
operator.yaml
, come descritto in Fornire esplicitamente le credenziali. Puoi fornire valoriproject-id
,location
ecluster
aggiungendoli comeargs
alla risorsa Deployment all'interno dioperator.yaml
.Ti consigliamo di scegliere
project-id
in base al modello di tenancy pianificato per le letture. Scegli un progetto in cui archiviare le metriche in base a come intendi organizzare le letture in un secondo momento con gli ambiti delle metriche. Se non ti interessa, puoi inserire tutto in un unico progetto.Per
location
, consigliamo di scegliere la regione Google Cloud più vicina al tuo deployment. Più l'area geografica Google Cloud scelta è lontana dal deployment, maggiore sarà la latenza di scrittura che avrai e più sarai influenzato da potenziali problemi di rete. Ti consigliamo di consultare questo elenco di regioni in più cloud. Se non ti interessa, puoi inserire tutto in un'unica regione Google Cloud. Non puoi utilizzareglobal
come posizione.Per
cluster
, consigliamo di scegliere il nome del cluster in cui viene eseguito il deployment dell'operatore.Se configurato correttamente, OperatorConfig dovrebbe avere il seguente aspetto:
apiVersion: monitoring.googleapis.com/v1 kind: OperatorConfig metadata: namespace: gmp-public name: config collection: credentials: name: gmp-test-sa key: key.json rules: credentials: name: gmp-test-sa key: key.json
E la risorsa Deployment dovrebbe avere l'aspetto seguente:
apiVersion: apps/v1 kind: Deployment ... spec: ... template: ... spec: ... containers: - name: operator ... args: - ... - "--project-id=PROJECT_ID" - "--cluster=CLUSTER_NAME" - "--location=REGION"
Questo esempio presuppone che tu abbia impostato la variabile
REGION
su un valore simile aus-central1
, ad esempio.L'esecuzione di Managed Service per Prometheus al di fuori di Google Cloud prevede tariffe per il trasferimento di dati. Sono previste delle tariffe per trasferire i dati in Google Cloud e potrebbero essere applicati dei costi per trasferire i dati da un altro cloud. Nelle versioni 0.5.0 e successive, puoi ridurre al minimo questi costi abilitando la compressione di gzip tramite OperatorConfig. Aggiungi il testo mostrato in grassetto alla risorsa:
apiVersion: monitoring.googleapis.com/v1 kind: OperatorConfig metadata: namespace: gmp-public name: config collection: compression: gzip ...
Per approfondire le risorse personalizzate per la raccolta gestita
Per la documentazione di riferimento su tutte le risorse personalizzate di Managed Service per Prometheus, vedi il riferimento di prometheus-engine/doc/api.
Passaggi successivi