Introduzione alla raccolta di dati gestita

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 di Prometheus che monitora un'applicazione di esempio e archivia le metriche raccolte in Monarch.

Questo documento spiega come effettuare le seguenti operazioni:

  • Configura il tuo ambiente e gli strumenti a riga di comando.
  • Configura la raccolta gestita per il cluster.
  • Configura una risorsa per lo scraping della destinazione e l'importazione delle metriche.
  • Esegui la migrazione delle risorse personalizzate dell'operatore Prometheus esistenti.

Ti consigliamo di utilizzare la raccolta gestita per ridurre la complessità di deployment, scalabilità, sharding, configurazione e gestione dei raccoglitori. La raccolta gestita è supportata per GKE e per tutti gli altri ambienti Kubernetes.

La raccolta gestita esegue i raccoglitori basati su Prometheus come Daemonset e garantisce la scalabilità eseguendo lo scraping dei target solo sui nodi colocation. Configuri i raccoglitori con risorse personalizzate leggere per eseguire lo scraping degli esportatori utilizzando la raccolta pull, dopodiché i raccoglitori eseguono il push dei dati di cui sono stati copiati i dati 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 in Google Cloud. Per ulteriori informazioni sulla raccolta dei dati gestita e con deployment autonomo, consulta Raccolta dei dati con Managed Service per Prometheus e Importazione ed esecuzione di query con la raccolta gestita e con 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 con l'API Cloud Monitoring abilitata.

    • Se non hai un progetto Google Cloud:

      1. Nella console Google Cloud, vai a Nuovo progetto:

        Crea un nuovo progetto

      2. Nel campo Nome progetto, inserisci un nome per il progetto e fai clic su Crea.

      3. Vai a Fatturazione:

        Vai a Fatturazione

      4. Seleziona il progetto appena creato, se non è già selezionato in alto.

      5. 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:

      1. Vai ad API e servizi:

        Vai ad API e servizi

      2. Seleziona il progetto.

      3. Fai clic su Abilita API e servizi.

      4. Cerca "Monitoring".

      5. Nei risultati di ricerca, fai clic su "API Cloud Monitoring".

      6. 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 necessari anche i seguenti strumenti a riga di comando:

  • gcloud
  • kubectl

Gli strumenti gcloud e kubectl fanno parte di Google Cloud CLI. Per informazioni su come installarli, consulta Gestione dei componenti di Google Cloud CLI. Per visualizzare i componenti gcloud CLI che hai installato, esegui questo comando:

gcloud components list

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

Configura la raccolta gestita

Puoi utilizzare la raccolta gestita su cluster Kubernetes GKE e non GKE.

Dopo aver abilitato la raccolta gestita, i componenti nel cluster saranno in esecuzione, ma non sono ancora state generate metriche. Questi componenti hanno bisogno di 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 di 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:

Per la documentazione di riferimento sull'operatore Managed Service per Prometheus, consulta la pagina dei manifest.

Abilita raccolta gestita: GKE

La raccolta gestita è abilitata per impostazione predefinita per:

Se è in esecuzione in un ambiente GKE che non abilita la raccolta gestita per impostazione predefinita, consulta Abilitare manualmente la raccolta gestita.

La raccolta gestita su GKE viene aggiornata automaticamente quando vengono rilasciate nuove versioni dei componenti nel cluster.

La raccolta gestita su GKE utilizza le autorizzazioni concesse all'account di servizio Compute Engine predefinito. Se hai un criterio che modifica le autorizzazioni standard nell'account di servizio del nodo predefinito, potrebbe essere necessario aggiungere il ruolo Monitoring Metric Writer per continuare.

Attiva la raccolta gestita manualmente

Se sei in esecuzione in un ambiente GKE che non abilita la raccolta gestita per impostazione predefinita, puoi abilitarla 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 effettuare le seguenti operazioni utilizzando la dashboard Cluster GKE in Cloud Monitoring.

  • Determina se Managed Service per Prometheus è abilitato nei tuoi cluster e se stai utilizzando la raccolta gestita o con deployment autonomo.
  • Abilita la raccolta gestita sui cluster nel tuo progetto.
  • Visualizza altre informazioni sui cluster.

Per visualizzare la dashboard Cluster GKE:

  1. Nel pannello di navigazione della console Google Cloud, seleziona Monitoring e poi  Dashboard:

    Vai a Dashboard

  2. Seleziona la categoria della dashboard G C P, quindi seleziona Cluster GKE.

La dashboard dei cluster GKE in Cloud Monitoring.

Per abilitare la raccolta gestita su uno o più cluster GKE utilizzando la dashboard dei cluster GKE, segui questi passaggi:

  1. Seleziona la casella di controllo per ogni cluster GKE su cui vuoi abilitare la raccolta gestita.

  2. Seleziona Attiva selezione.

UI di Kubernetes Engine

Utilizzando la console Google Cloud, puoi eseguire 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:

  1. Nel pannello di navigazione della console Google Cloud, seleziona Kubernetes Engine e poi Cluster:

    Vai a Cluster Kubernetes

  2. Fai clic sul nome del cluster.

  3. Nell'elenco Funzionalità, individua l'opzione Managed Service per Prometheus. Se è elencato come disabilitato, fai clic su Modifica, quindi seleziona Abilita Managed Service per Prometheus.

  4. Fai clic su Salva modifiche.

Per creare un cluster con la raccolta gestita abilitata:

  1. Nel pannello di navigazione della console Google Cloud, seleziona Kubernetes Engine e poi Cluster:

    Vai a Cluster Kubernetes

  2. Fai clic su Crea.

  3. Fai clic su Configura per l'opzione Standard.

  4. Nel pannello di navigazione, fai clic su Funzionalità.

  5. Nella sezione Operazioni, seleziona Abilita Managed Service per Prometheus.

  6. Fai clic su Salva.

Interfaccia a riga di comando gcloud

Utilizzando gcloud CLI:

  • 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 a livello 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 quando esegui 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 con Google Cloud.

Disattiva raccolta gestita

Se vuoi disabilitare la raccolta gestita nei cluster, puoi utilizzare uno dei seguenti metodi:

UI di Kubernetes Engine

Utilizzando la console Google Cloud, puoi eseguire 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:

  1. Nel pannello di navigazione della console Google Cloud, seleziona Kubernetes Engine e poi Cluster:

    Vai a Cluster Kubernetes

  2. Fai clic sul nome del cluster.

  3. Nella sezione Funzionalità, individua l'opzione Managed Service per Prometheus. Fai clic su  Modifica e deseleziona Abilita Managed Service per Prometheus.

  4. Fai clic su Salva modifiche.

Per eseguire l'override dell'abilitazione automatica della raccolta gestita quando crei un nuovo cluster GKE Standard (versione 1.27 o successive):

  1. Nel pannello di navigazione della console Google Cloud, seleziona Kubernetes Engine e poi Cluster:

    Vai a Cluster Kubernetes

  2. Fai clic su Crea.

  3. Fai clic su Configura per l'opzione Standard.

  4. Nel pannello di navigazione, fai clic su Funzionalità.

  5. Nella sezione Operazioni, deseleziona Abilita Managed Service per Prometheus.

  6. Fai clic su Salva.

Interfaccia a riga di comando gcloud

Utilizzando gcloud CLI:

  • 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 su un cluster esistente, esegui uno dei seguenti comandi update a seconda che il cluster sia a livello 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 successive), 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 con Google Cloud.

Abilita la raccolta gestita: Kubernetes non GKE

Se utilizzi 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 di 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 i manifest della configurazione e dell'operatore:

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.8.2/manifests/setup.yaml

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.8.2/manifests/operator.yaml

GKE Enterprise

Per informazioni sulla configurazione della raccolta gestita per i cluster GKE Enterprise, consulta la documentazione relativa alla tua distribuzione:

Esegui il deployment dell'applicazione di esempio

L'applicazione di esempio emette la metrica del contatore example_requests_total e la metrica dell'istogramma example_random_numbers (tra le altre) sulla sua 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.8.2/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 di destinazione. Lo scraping target e l'importazione di metriche sono configurati utilizzando le risorse personalizzate di Kubernetes. Il servizio gestito utilizza risorse personalizzate (CR) PodMonitoring.

Una RP di PodMonitoring esegue lo scraping dei target solo nello spazio dei nomi in cui è stato eseguito il deployment della RP. Per eseguire lo scraping dei target in più spazi dei nomi, esegui il deployment della stessa RP di 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 prometheus-engine/doc/api.

Il manifest seguente 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 il valore prom-example. Viene eseguito lo scraping dei pod corrispondenti su una porta denominata metrics ogni 30 secondi nel 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.8.2/examples/pod-monitoring.yaml

Il raccoglitore gestito sta ora eseguendo lo scraping dei pod corrispondenti. Puoi visualizzare lo stato della destinazione dello scraping abilitando la funzionalità di stato target.

Per configurare la raccolta orizzontale che si applichi 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 utilizzi GKE, puoi fare quanto segue:

Se esegui l'esecuzione al di fuori 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 di raccolta recupera 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.

  1. Imposta il contesto per il progetto di destinazione:

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

    gcloud iam service-accounts create gmp-test-sa
    

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

    gcloud projects add-iam-policy-binding PROJECT_ID\
      --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \
      --role=roles/monitoring.metricWriter
    

  4. Crea e scarica una chiave per l'account di servizio:

    gcloud iam service-accounts keys create gmp-test-sa-key.json \
      --iam-account=gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com
    
  5. 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
    

  6. Apri la risorsa OperatorConfig per la modifica:

    kubectl -n gmp-public edit operatorconfig config
    
    1. Aggiungi il testo mostrato 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 sezione rules in modo che la valutazione delle regole gestite funzioni.

    2. 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.

    Argomenti aggiuntivi per la raccolta gestita

    In questa sezione viene descritto come:

    • Attiva la funzionalità Stato target per semplificare il debug.
    • Configurare lo scraping del target utilizzando Terraform.
    • Filtra i dati che esporti nel servizio gestito.
    • Esegui lo scraping delle metriche di Kubelet e cAdvisor.
    • Converti le risorse dell'operatore prom esistenti per utilizzarle con il servizio gestito.
    • Esegui la raccolta gestita al di fuori di GKE.

    Attivazione della funzionalità di stato target

    Puoi controllare lo stato dei tuoi target nelle risorse PodMonitoring o ClusterPodMonitoring impostando il valore features.targetStatus.enabled all'interno della risorsa OperatorConfig su true, 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 nomi NAMESPACE_NAME, puoi controllare lo stato eseguendo il seguente comando:

    kubectl -n NAMESPACE_NAME describe podmonitorings/prom-example
    

    L'output sarà 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 è true 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 deployment di prom-example ha tre repliche con un singolo target della metrica, quindi il valore è 3. Se sono presenti target in stato non integro, viene visualizzato il campo Status.Endpoint Statuses.Unhealthy Targets.
    • Status.Endpoint Statuses.Collectors Fraction mostra un valore di 1 (ovvero 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. Quando la data e l'ora dell'ultimo aggiornamento sono molto più lunghe dell'intervallo di scraping desiderato, la differenza potrebbe indicare problemi con il target o cluster.
    • Il campo Status.Endpoint Statuses.Sample Groups mostra i target di esempio raggruppati in base alle etichette di destinazione comuni inserite dal raccoglitore. Questo valore è utile per il debug di situazioni in cui i target non vengono rilevati. Se tutti i target sono in stato integro e vengono raccolti, il valore previsto per il campo Health è up e il valore per il campo Last Scrape Duration Seconds è la durata consueta per un target tipico.

    Per ulteriori informazioni su questi campi, consulta il documento relativo all'API Managed Service per Prometheus.

    Uno dei seguenti potrebbe indicare un problema di configurazione:

    • Non c'è alcun campo Status.Endpoint Statuses nella risorsa PodMonitoring.
    • Il valore del campo Last Scrape Duration Seconds è troppo vecchio.
    • Visualizzi un numero insufficiente 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 del target mediante Terraform

    Puoi automatizzare la creazione e la gestione delle risorse PodMonitoring e ClusterPodMonitoring utilizzando il tipo di risorsa Terraform kubernetes_manifest o il kubectl_manifest tipo di risorsa Terraform, che ti consente di specificare risorse personalizzate arbitrarie.

    Per informazioni generali sull'utilizzo di Google Cloud con Terraform, consulta Terraform con Google Cloud.

    Filtra le 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'azione drop per una lista bloccata. Per la raccolta gestita, questa regola si trova nella sezione metricRelabeling della risorsa PodMonitoring o ClusterPodMonitoring.

    Ad esempio, la seguente regola di rietichettatura delle metriche filtrerà tutte le metriche che iniziano con foo_bar_, foo_baz_ o foo_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 su byte e campioni, nei domini delle metriche e per le singole metriche.
    • Dati su etichette e cardinalità delle metriche.
    • Utilizzo delle metriche nei criteri di avviso e nelle dashboard personalizzate.
    • Percentuale di errori di scrittura delle metriche.
    Per saperne di più sulla pagina Gestione delle metriche, consulta Visualizzare e gestire l'utilizzo delle metriche.

    Per ulteriori suggerimenti su come ridurre i costi, consulta Controllo dei costi e attribuzione.

    Estrazione di metriche di Kubelet e cAdvisor

    Il kubelet espone le metriche su se stesso e le metriche di cAdvisor sui container in esecuzione sul suo nodo. Puoi configurare la raccolta gestita per eseguire lo scraping delle metriche di Kubelet e cAdvisor modificando la risorsa OperatorConfig. Per le istruzioni, consulta la documentazione dell'esportatore per Kubelet e cAdvisor.

    Converti le risorse operatori Prometheus esistenti

    In genere, puoi convertire le risorse dell'operatore Prometheus esistenti in risorse PodMonitoring e ClusterPodMonitoring di Managed Service per la raccolta gestita Prometheus.

    Ad esempio, la risorsa ServiceMonitor definisce il monitoraggio per un insieme di servizi. La risorsa PodMonitoring gestisce un sottoinsieme dei campi serviti 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
    ServiceMonitor
    Compatibilità
    Monitoring.googleapis.com/v1
    PodMonitoring
    .ServiceMonitorSpec.Selector Identico .PodMonitoringSpec.Selector
    .ServiceMonitorSpec.Endpoints[] .TargetPort corrisponde a .Port
    .Path: compatible
    .Interval: compatible
    .Timeout: compatible
    .PodMonitoringSpec.Endpoints[]
    .ServiceMonitorSpec.TargetLabels PodMonitor deve specificare:
    .FromPod[].From etichetta pod
    .FromPod[].To etichetta di destinazione
    .PodMonitoringSpec.TargetLabels

    Di seguito è riportato un esempio di RP di ServiceMonitor; i contenuti in grassetto vengono sostituiti 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 l'analoga RP PodMonitoring, 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 Service 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 Prometheus-operator esistenti e le configurazioni di deployment utilizzando raccoglitori con deployment autonomo anziché raccoglitori gestiti. Puoi eseguire query sulle metriche inviate da entrambi i tipi di raccoglitori, quindi potresti utilizzare raccoglitori con deployment autonomo per i deployment di Prometheus esistenti utilizzando i raccoglitori gestiti per i nuovi deployment di Prometheus.

    Etichette riservate

    Managed Service per Prometheus aggiunge automaticamente le seguenti etichette a tutte le metriche raccolte:

    • project_id: l'identificatore del progetto Google Cloud associato alla metrica.
    • location: la località fisica (regione di Google Cloud) in cui sono archiviati i dati. Questo valore in genere corrisponde 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 metrica.
    • namespace: il nome dello spazio dei nomi Kubernetes associato alla metrica.
    • job: l'etichetta del job della destinazione Prometheus, se nota; potrebbe essere vuota per i risultati della valutazione delle regole.
    • instance: l'etichetta dell'istanza della destinazione Prometheus, se nota; potrebbe essere vuota per i risultati della valutazione delle regole.

    Sebbene non sia consigliabile durante l'esecuzione su Google Kubernetes Engine, puoi eseguire l'override delle etichette project_id, location e cluster aggiungendole come args alla risorsa Deployment all'interno di operator.yaml. Se utilizzi etichette riservate come etichette di metrica, Managed Service per Prometheus le rietichetta automaticamente aggiungendo il prefisso exported_. Questo comportamento corrisponde a come Prometheus gestisce i conflitti con etichette riservate a monte.

    Smaltimento

    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 la UI di GKE:

      1. Seleziona Kubernetes Engine nella console Google Cloud, quindi seleziona Cluster.

      2. Individua il cluster per il quale vuoi disabilitare la raccolta gestita e fai clic sul nome.

      3. Nella scheda Dettagli, scorri verso il basso fino a Funzionalità e imposta lo stato su Disattivata utilizzando il pulsante di modifica.

    Per disabilitare la raccolta gestita di cui è stato eseguito il deployment utilizzando Terraform, specifica enabled = false nella sezione managed_prometheus della risorsa google_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.8.2/manifests/operator.yaml
    

    La disabilitazione della raccolta gestita causa l'interruzione dell'invio di nuovi dati da parte del cluster 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 ulteriori configurazioni. In altri ambienti Kubernetes, devi fornire esplicitamente le credenziali, un valore project-id per contenere le metriche, un valore location (regione di Google Cloud) in cui verranno archiviate le metriche e un valore cluster 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 di gcloud, il deployment della raccolta gestita utilizzando kubectl non esegue automaticamente l'upgrade del cluster quando è disponibile una nuova versione. Ricordati di guardare la pagina delle release per scoprire le nuove versioni ed eseguire manualmente l'upgrade eseguendo di nuovo i comandi kubectl 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 le credenziali in modo esplicito. Puoi fornire i valori project-id, location e cluster aggiungendoli come args alla risorsa Deployment all'interno di operator.yaml.

    Ti consigliamo di scegliere project-id in base al tuo modello di tenancy pianificato per le letture. Scegli un progetto in cui archiviare le metriche in base a come prevedi di 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, ti consigliamo di scegliere la regione Google Cloud più vicina al tuo deployment. Più si trova la regione Google Cloud scelta dal deployment, maggiore sarà la latenza di scrittura che avrai e più riguarderanno potenziali problemi di rete. Potresti consultare questo elenco di regioni in più cloud. Se non ti interessa, puoi inserire tutto in un'unica regione Google Cloud. Non puoi usare global come località.

    Per cluster, ti consigliamo di scegliere il nome del cluster in cui viene eseguito il deployment dell'operatore.

    Se configurato correttamente, OperatorConfig dovrebbe essere simile al seguente:

        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
    

    La risorsa di deployment dovrebbe avere il seguente aspetto:

    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 come us-central1.

    L'esecuzione di Managed Service per Prometheus al di fuori di Google Cloud comporta tariffe per il trasferimento di dati. Il trasferimento dei dati in Google Cloud è a pagamento, così come per il trasferimento dei dati al di fuori di un altro cloud. Nella versione 0.5.0 e successive, puoi ridurre al minimo questi costi abilitando la compressione gzip tramite OperatorConfig. Aggiungi alla risorsa il testo mostrato in grassetto:

        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, consulta il riferimento prometheus-engine/doc/api.

    Passaggi successivi