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

Questo documento mostra come:

  • Configura l'ambiente e gli strumenti a riga di comando.
  • Configura la raccolta gestita per il tuo cluster.
  • Configura una risorsa per lo scraping dei target e l'importazione delle metriche.
  • Esegui la migrazione delle risorse personalizzate prometheus-operator esistenti.

Ti consigliamo di utilizzare la raccolta gestita, che riduce la complessità di deployment, scalabilità, sharding, configurazione e manutenzione 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 la scalabilità estraendo solo i target sui nodi collocati insieme. Configuri i raccoglitori con risorse personalizzate leggere per eseguire lo scraping degli esportatori utilizzando la raccolta pull, quindi i raccoglitori inviano i dati sottoposti a scraping all'archivio dati centrale Monarch. Google Cloud non accede mai direttamente al cluster per estrarre o eseguire lo scraping dei dati delle metriche; i raccoglitori inviano i dati aGoogle Cloud. Per saperne di più sulla raccolta di dati gestita e con deployment automatico, consulta Raccolta di dati con Managed Service per Prometheus e Inserimento ed esecuzione di query con la raccolta gestita e con deployment automatico.

Prima di iniziare

Questa sezione descrive la configurazione necessaria per le attività descritte in questo documento.

Configurare progetti e strumenti

Per utilizzare Google Cloud Managed Service per Prometheus, devi disporre delle seguenti risorse:

  • Un progetto Google Cloud con l'API Cloud Monitoring abilitata.

    • Se non hai un Google Cloud progetto, procedi nel seguente modo:

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

        Creare un nuovo progetto

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

      3. Vai a Fatturazione:

        Vai a Fatturazione

      4. Seleziona il progetto appena creato se non è già selezionato nella parte superiore della pagina.

      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 su API e servizi

      2. Seleziona il progetto.

      3. Fai clic su Abilita API e servizi.

      4. Cerca "Monitoraggio".

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

      6. Se non viene visualizzato il messaggio "API abilitata", fai clic sul pulsante Abilita.

  • Un cluster Kubernetes. Se non hai 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 sulla loro installazione, vedi Gestione dei componenti di Google Cloud CLI. Per visualizzare i componenti di gcloud CLI 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 la seguente configurazione:

  • Configura gli strumenti a riga di comando come segue:

    • Configura gcloud CLI in modo che faccia riferimento all'ID del tuo progettoGoogle Cloud :

      gcloud config set project PROJECT_ID
      
    • Configura la CLI kubectl per utilizzare il cluster:

      kubectl config set-cluster CLUSTER_NAME
      

    Per ulteriori informazioni su questi strumenti, consulta quanto segue:

Configurare uno spazio dei nomi

Crea lo spazio dei nomi Kubernetes NAMESPACE_NAME per le risorse che crei nell'ambito dell'applicazione di esempio:

kubectl create ns NAMESPACE_NAME

Configurare la raccolta gestita

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

Una volta abilitata la raccolta gestita, i componenti nel cluster saranno in esecuzione, ma non sono ancora state generate metriche. Questi componenti richiedono risorse PodMonitoring o ClusterPodMonitoring per eseguire lo scraping corretto 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 Kube State Metrics, integrato in GKE. Per informazioni sulla risoluzione dei problemi, vedi 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 la raccolta gestita: GKE

La raccolta gestita è abilitata per impostazione predefinita per quanto segue:

Se esegui l'applicazione 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 in-cluster.

La raccolta gestita su GKE utilizza le autorizzazioni concesse al account di servizio Compute Engine predefinito. Se hai un criterio che modifica le autorizzazioni standard per l'account di servizio del nodo predefinito, potresti dover aggiungere il ruolo Monitoring Metric Writer per continuare.

Abilitare manualmente la raccolta gestita

Se esegui l'applicazione in un ambiente GKE che non abilita la raccolta gestita per impostazione predefinita, puoi abilitarla utilizzando quanto segue:

  • La dashboard Abilitazione dei cluster in blocco di Prometheus gestiti 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 successive.
  • Terraform per Google Kubernetes Engine. Per utilizzare Terraform per abilitare Managed Service per Prometheus, devi eseguire GKE versione 1.21.4-gke.300 o successive.

Dashboard Abilitazione dei cluster in blocco di Managed Prometheus

Puoi eseguire le seguenti operazioni utilizzando la dashboard Abilitazione dei cluster in blocco di Prometheus gestiti in Cloud Monitoring.

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

Per visualizzare la dashboard Abilitazione dei cluster in blocco di Prometheus gestiti:

  1. Nella console Google Cloud , vai alla pagina  Dashboard:

    Vai a Dashboard

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.

  2. Utilizza la barra dei filtri per cercare la voce Abilitazione dei cluster in blocco di Prometheus gestiti e selezionala.

La dashboard Abilitazione dei cluster in blocco di Prometheus gestiti in Cloud Monitoring.

Per abilitare la raccolta gestita su uno o più cluster GKE utilizzando la dashboard Abilitazione dei cluster in blocco di Prometheus gestiti:

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

  2. Seleziona Attiva selezionati.

UI di Kubernetes Engine

Puoi eseguire le seguenti operazioni utilizzando la console Google Cloud :

  • 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. Nella console Google Cloud , vai alla pagina Cluster Kubernetes:

    Vai a Cluster Kubernetes

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Kubernetes Engine.

  2. Fai clic sul nome del cluster.

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

  4. Fai clic su Salva modifiche.

Per creare un cluster con la raccolta gestita abilitata:

  1. Nella console Google Cloud , vai alla pagina Cluster Kubernetes:

    Vai a Cluster Kubernetes

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Kubernetes Engine.

  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, puoi:

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

Innanzitutto, 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 zonale o regionale:

  • 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 successive. Non puoi disattivare la raccolta gestita.

Se il cluster non riesce ad attivare automaticamente la raccolta gestita durante l'upgrade alla versione 1.25, puoi attivarla 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.

Disabilita raccolta gestita

Se vuoi disattivare la raccolta gestita sui tuoi cluster, puoi utilizzare uno dei seguenti metodi:

UI di Kubernetes Engine

Puoi eseguire le seguenti operazioni utilizzando la console Google Cloud :

  • Disabilita la raccolta gestita su un cluster GKE esistente.
  • Esegui l'override dell'attivazione automatica della raccolta gestita durante la creazione di un nuovo cluster GKE Standard che esegue GKE versione 1.27 o successive.

Per aggiornare un cluster esistente:

  1. Nella console Google Cloud , vai alla pagina Cluster Kubernetes:

    Vai a Cluster Kubernetes

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Kubernetes Engine.

  2. Fai clic sul nome del cluster.

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

  4. Fai clic su Salva modifiche.

Per ignorare l'attivazione automatica della raccolta gestita durante la creazione di un nuovo cluster GKE Standard (versione 1.27 o successiva), procedi nel seguente modo:

  1. Nella console Google Cloud , vai alla pagina Cluster Kubernetes:

    Vai a Cluster Kubernetes

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Kubernetes Engine.

  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, puoi:

  • Disabilita la raccolta gestita su un cluster GKE esistente.
  • Esegui l'override dell'attivazione automatica della raccolta gestita durante la creazione di un nuovo cluster GKE Standard che esegue GKE versione 1.27 o successive.

Il completamento di questi comandi potrebbe richiedere fino a 5 minuti.

Innanzitutto, 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 zonale o regionale:

  • gcloud container clusters update CLUSTER_NAME --disable-managed-prometheus --zone ZONE
    
  • gcloud container clusters update CLUSTER_NAME --disable-managed-prometheus --region REGION
    

Per ignorare l'attivazione 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 successive.

Terraform

Per disattivare la raccolta gestita, imposta l'attributo enabled nel blocco di configurazione managed_prometheus su false. Per saperne di più 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 esegui l'operazione 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 nelle implementazioni di GKE Enterprise che eseguono la versione 1.12 o successive.

kubectl CLI

Per installare i raccoglitori gestiti quando utilizzi un cluster Kubernetes non GKE, esegui i seguenti comandi per installare i manifest di configurazione e dell'operatore:

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

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

GKE Enterprise

Per informazioni sulla configurazione della raccolta gestita per i cluster GKE Enterprise, consulta la documentazione della 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 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.15.3/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 dei target e l'importazione delle metriche sono configurati utilizzando le risorse personalizzate di Kubernetes. Il servizio gestito utilizza le risorse personalizzate (CR) PodMonitoring.

Una CR PodMonitoring esegue lo scraping dei target solo nello spazio dei nomi in cui viene eseguito il deployment della CR. Per eseguire lo scraping dei target in più spazi dei nomi, esegui il deployment dello stesso CR 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 CR di Managed Service for Prometheus, consulta prometheus-engine/doc/api reference.

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 il valore prom-example. I pod corrispondenti vengono sottoposti a scraping 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.15.3/examples/pod-monitoring.yaml

Il raccoglitore gestito ora esegue lo scraping dei pod corrispondenti. Puoi visualizzare lo stato del target di scraping attivando la funzionalità di stato del target.

Per configurare la raccolta orizzontale che si applica a una serie 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 procedere nel seguente modo:

Se l'applicazione non è in esecuzione su 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

Quando viene eseguito 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 sul 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 al account di servizio:

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

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

    gcloud iam service-accounts keys create gmp-test-sa-key.json \
      --iam-account=gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com
    
  5. Aggiungi il file della chiave come secret al tuo 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 di aggiungere queste credenziali alla sezione rules in modo che la valutazione delle regole gestite funzioni.

    2. Salva il file e chiudi l'editor. Una volta applicata la modifica, i pod vengono ricreati e iniziano l'autenticazione al backend delle metriche con iaccount di serviziont specificato.

    Argomenti aggiuntivi per la raccolta gestita

    Questa sezione descrive come:

    • Attiva la funzionalità di stato della destinazione per semplificare il debug.
    • Configura lo scraping dei target utilizzando Terraform.
    • Filtra i dati che esporti nel servizio gestito.
    • Estrai le metriche Kubelet e cAdvisor.
    • Converti le risorse prom-operator esistenti per l'utilizzo con il servizio gestito.
    • Esegui la raccolta gestita al di fuori di GKE.

    Attivare la funzionalità Stato target

    Managed Service per Prometheus offre un modo per verificare se i target vengono rilevati e sottoposti a scraping correttamente dai raccoglitori. Questo report sullo stato della destinazione è pensato per essere uno strumento per il debug di problemi gravi. Ti consigliamo vivamente di attivare questa funzionalità solo per esaminare problemi immediati. Se lasci attiva la generazione di report sullo stato di destinazione in cluster di grandi dimensioni, l'operatore potrebbe esaurire la memoria e causare un loop di arresti anomali.

    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 in 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 è 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 target di scraping che Managed Service per Prometheus conteggia su tutti i raccoglitori per questa risorsa PodMonitoring. Nell'applicazione di esempio, il deployment prom-example ha tre repliche con un singolo target di metrica, quindi il valore è 3. Se sono presenti target non integri, 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 l'ultimo aggiornamento è molto più lungo dell'intervallo di scraping desiderato, la differenza potrebbe indicare problemi con il target o il cluster.
    • Il campo Status.Endpoint Statuses.Sample Groups mostra i target di esempio raggruppati in base alle etichette di target comuni inserite dal raccoglitore. Questo valore è utile per il debug delle situazioni in cui i target non vengono rilevati. Se tutti i target sono integri e vengono raccolti, il valore previsto per il campo Health è up e il valore per il campo Last Scrape Duration Seconds è la durata abituale per un target tipico.

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

    Uno dei seguenti elementi potrebbe indicare un problema con la configurazione:

    • Non è presente alcun campo Status.Endpoint Statuses nella risorsa PodMonitoring.
    • Il valore del campo Last Scrape Duration Seconds è troppo vecchio.
    • Vedi troppo pochi target.
    • Il valore del campo Health indica che la destinazione è down.

    Per saperne di più sul debug dei problemi di rilevamento dei target, consulta la sezione Problemi lato importazione nella documentazione sulla risoluzione dei problemi.

    Configurazione di un endpoint di scraping autorizzato

    Se la destinazione di scraping richiede l'autorizzazione, puoi configurare il raccoglitore in modo che utilizzi il tipo di autorizzazione corretto e fornisca eventuali segreti pertinenti.

    Google Cloud Managed Service per Prometheus supporta i seguenti tipi di autorizzazione:

    mTLS

    mTLS viene comunemente configurato all'interno di ambienti zero trust, come la mesh di servizi Istio o Cloud Service Mesh.

    Per attivare gli endpoint di scraping protetti tramite mTLS, imposta il campo Spec.Endpoints[].Scheme nella risorsa PodMonitoring su https. Anche se non è consigliato, puoi impostare il campo Spec.Endpoints[].tls.insecureSkipVerify nella risorsa PodMonitoring su true per saltare la verifica dell'autorità di certificazione. In alternativa, puoi configurare Managed Service for Prometheus per caricare certificati e chiavi dalle risorse secret.

    Ad esempio, la seguente risorsa Secret contiene chiavi per il client (cert), la chiave privata (key) e i certificati dell'autorità di certificazione (ca):

    kind: Secret
    metadata:
      name: secret-example
    stringData:
      cert: ********
      key: ********
      ca: ********
    

    Concedi al raccoglitore di Managed Service per Prometheus l'autorizzazione per accedere alla risorsa Secret:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: secret-example-read
    rules:
    - resources:
      - secrets
      apiGroups: [""]
      verbs: ["get", "list", "watch"]
      resourceNames: ["secret-example"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: gmp-system:collector:secret-example-read
      namespace: default
    roleRef:
      name: secret-example-read
      kind: Role
      apiGroup: rbac.authorization.k8s.io
    subjects:
    - name: collector
      namespace: gmp-system
      kind: ServiceAccount
    

    Nei cluster GKE Autopilot, questo aspetto è il seguente:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: secret-example-read
    rules:
    - resources:
      - secrets
      apiGroups: [""]
      verbs: ["get", "list", "watch"]
      resourceNames: ["secret-example"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: gmp-system:collector:secret-example-read
      namespace: default
    roleRef:
      name: secret-example-read
      kind: Role
      apiGroup: rbac.authorization.k8s.io
    subjects:
    - name: collector
      namespace: gke-gmp-system
      kind: ServiceAccount
    

    Per configurare una risorsa PodMonitoring che utilizza la risorsa Secret precedente, modifica la risorsa per aggiungere una sezione scheme e tls:

    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
        scheme: https
        tls:
          ca:
            secret:
              name: secret-example
              key: ca
          cert:
            secret:
              name: secret-example
              key: cert
          key:
            secret:
              name: secret-example
              key: key
    

    Per la documentazione di riferimento su tutte le opzioni mTLS di Managed Service for Prometheus, consulta la documentazione di riferimento dell'API.

    BasicAuth

    Per abilitare gli endpoint di scraping protetti tramite BasicAuth, imposta il campo Spec.Endpoints[].BasicAuth nella risorsa PodMonitoring con il tuo nome utente e la tua password. Per altri tipi di intestazione di autorizzazione HTTP, vedi Intestazione di autorizzazione HTTP.

    Ad esempio, la seguente risorsa Secret contiene una chiave per archiviare la password:

    kind: Secret
    metadata:
      name: secret-example
    stringData:
      password: ********
    

    Concedi al raccoglitore di Managed Service per Prometheus l'autorizzazione per accedere alla risorsa Secret:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: secret-example-read
    rules:
    - resources:
      - secrets
      apiGroups: [""]
      verbs: ["get", "list", "watch"]
      resourceNames: ["secret-example"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: gmp-system:collector:secret-example-read
      namespace: default
    roleRef:
      name: secret-example-read
      kind: Role
      apiGroup: rbac.authorization.k8s.io
    subjects:
    - name: collector
      namespace: gmp-system
      kind: ServiceAccount
    

    Nei cluster GKE Autopilot, questo aspetto è il seguente:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: secret-example-read
    rules:
    - resources:
      - secrets
      apiGroups: [""]
      verbs: ["get", "list", "watch"]
      resourceNames: ["secret-example"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: gmp-system:collector:secret-example-read
      namespace: default
    roleRef:
      name: secret-example-read
      kind: Role
      apiGroup: rbac.authorization.k8s.io
    subjects:
    - name: collector
      namespace: gke-gmp-system
      kind: ServiceAccount
    

    Per configurare una risorsa PodMonitoring che utilizza la risorsa Secret precedente e un nome utente foo, modifica la risorsa per aggiungere una sezione basicAuth:

    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
        basicAuth:
          username: foo
          password:
            secret:
              name: secret-example
              key: password
    

    Per la documentazione di riferimento su tutte le opzioni BasicAuth di Managed Service per Prometheus, consulta la documentazione di riferimento dell'API.

    Intestazione di autorizzazione HTTP

    Per attivare gli endpoint di scraping protetti utilizzando le intestazioni di autorizzazione HTTP, imposta il campo Spec.Endpoints[].Authorization nella risorsa PodMonitoring con il tipo e le credenziali. Per gli endpoint BasicAuth, utilizza invece la configurazione BasicAuth.

    Ad esempio, la seguente risorsa Secret contiene una chiave per archiviare le credenziali:

    kind: Secret
    metadata:
      name: secret-example
    stringData:
      credentials: ********
    

    Concedi al raccoglitore di Managed Service per Prometheus l'autorizzazione per accedere alla risorsa Secret:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: secret-example-read
    rules:
    - resources:
      - secrets
      apiGroups: [""]
      verbs: ["get", "list", "watch"]
      resourceNames: ["secret-example"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: gmp-system:collector:secret-example-read
      namespace: default
    roleRef:
      name: secret-example-read
      kind: Role
      apiGroup: rbac.authorization.k8s.io
    subjects:
    - name: collector
      namespace: gmp-system
      kind: ServiceAccount
    

    Nei cluster GKE Autopilot, questo aspetto è il seguente:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: secret-example-read
    rules:
    - resources:
      - secrets
      apiGroups: [""]
      verbs: ["get", "list", "watch"]
      resourceNames: ["secret-example"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: gmp-system:collector:secret-example-read
      namespace: default
    roleRef:
      name: secret-example-read
      kind: Role
      apiGroup: rbac.authorization.k8s.io
    subjects:
    - name: collector
      namespace: gke-gmp-system
      kind: ServiceAccount
    

    Per configurare una risorsa PodMonitoring che utilizza la risorsa Secret precedente e un tipo di Bearer, modifica la risorsa per aggiungere una sezione authorization:

    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
        authorization:
          type: Bearer
          credentials:
            secret:
              name: secret-example
              key: credentials
    

    Per la documentazione di riferimento su tutte le opzioni dell'intestazione di autorizzazione HTTP di Managed Service per Prometheus, consulta la documentazione di riferimento dell'API.

    OAuth 2

    Per abilitare gli endpoint di scraping protetti tramite OAuth 2, devi impostare il campo Spec.Endpoints[].OAuth2 nella risorsa PodMonitoring.

    Ad esempio, la seguente risorsa Secret contiene una chiave per archiviare il client secret:

    kind: Secret
    metadata:
      name: secret-example
    stringData:
      clientSecret: ********
    

    Concedi al raccoglitore di Managed Service per Prometheus l'autorizzazione per accedere alla risorsa Secret:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: secret-example-read
    rules:
    - resources:
      - secrets
      apiGroups: [""]
      verbs: ["get", "list", "watch"]
      resourceNames: ["secret-example"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: gmp-system:collector:secret-example-read
      namespace: default
    roleRef:
      name: secret-example-read
      kind: Role
      apiGroup: rbac.authorization.k8s.io
    subjects:
    - name: collector
      namespace: gmp-system
      kind: ServiceAccount
    

    Nei cluster GKE Autopilot, questo aspetto è il seguente:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: secret-example-read
    rules:
    - resources:
      - secrets
      apiGroups: [""]
      verbs: ["get", "list", "watch"]
      resourceNames: ["secret-example"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: gmp-system:collector:secret-example-read
      namespace: default
    roleRef:
      name: secret-example-read
      kind: Role
      apiGroup: rbac.authorization.k8s.io
    subjects:
    - name: collector
      namespace: gke-gmp-system
      kind: ServiceAccount
    

    Per configurare una risorsa PodMonitoring che utilizza la risorsa Secret precedente con un ID client foo e un URL token example.com/token, modifica la risorsa per aggiungere una sezione oauth2:

    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
        oauth2:
          clientID: foo
          clientSecret:
            secret:
              name: secret-example
              key: password
          tokenURL: example.com/token
    

    Per la documentazione di riferimento su tutte le opzioni OAuth 2 di Managed Service for Prometheus, consulta la documentazione di riferimento dell'API.

    Configurazione dello scraping dei target utilizzando 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 Terraform kubectl_manifest, che ti consente di specificare risorse personalizzate arbitrarie.

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

    Filtrare le metriche esportate

    Se raccogli molti dati, potresti voler impedire l'invio di alcune serie temporali a Managed Service for 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 va inserita nella sezione metricRelabeling della risorsa PodMonitoring o ClusterPodMonitoring.

    Ad esempio, la seguente regola di riassegnazione delle etichette delle metriche filtrerà qualsiasi metrica che inizia 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 che spendi per le metriche fatturabili senza influire sull'osservabilità. La pagina Gestione delle metriche riporta le seguenti informazioni:

    • Volumi di importazione per la fatturazione basata su byte e campioni, in tutti i domini delle metriche e per le singole metriche.
    • Dati su etichette e cardinalità delle metriche.
    • Numero di letture per ogni metrica.
    • Utilizzo delle metriche nelle policy di avviso e nelle dashboard personalizzate.
    • Tasso di errori di scrittura delle metriche.

    Puoi anche utilizzare la pagina Gestione metriche per escludere le metriche non necessarie, eliminando il costo della loro importazione. Per saperne di più sulla pagina Gestione metriche, consulta Visualizzare e gestire l'utilizzo delle metriche.

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

    Scraping delle metriche Kubelet e cAdvisor

    Kubelet espone metriche su se stesso, nonché metriche cAdvisor sui container in esecuzione sul suo nodo. Puoi configurare la raccolta gestita per recuperare le metriche di Kubelet e cAdvisor modificando la risorsa OperatorConfig. Per le istruzioni, consulta la documentazione dell'esportatore per Kubelet e cAdvisor.

    Converti le risorse prometheus-operator esistenti

    In genere puoi convertire le risorse prometheus-operator esistenti in risorse PodMonitoring e ClusterPodMonitoring di raccolta gestita di Managed Service per Prometheus.

    Ad esempio, la risorsa ServiceMonitor definisce il monitoraggio di un insieme di servizi. La risorsa PodMonitoring gestisce un sottoinsieme dei campi gestiti dalla risorsa ServiceMonitor. Puoi convertire un CR ServiceMonitor in un CR PodMonitoring mappando i campi come descritto nella tabella seguente:

    monitoring.coreos.com/v1
    ServiceMonitor
    Compatibilità
     
    monitoring.googleapis.com/v1
    PodMonitoring
    .ServiceMonitorSpec.Selector Identico .PodMonitoringSpec.Selector
    .ServiceMonitorSpec.Endpoints[] .TargetPort corrisponde a .Port
    .Path: compatibile
    .Interval: compatibile
    .Timeout: compatibile
    .PodMonitoringSpec.Endpoints[]
    .ServiceMonitorSpec.TargetLabels PodMonitor deve specificare:
    .FromPod[].From etichetta pod
    .FromPod[].To etichetta di destinazione
    .PodMonitoringSpec.TargetLabels

    Di seguito è riportato un esempio di CR ServiceMonitor; i contenuti in grassetto vengono sostituiti nella conversione, mentre 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 CR PodMonitoring analoga, supponendo che il tuo servizio e i relativi pod siano etichettati con app=example-app. Se questo presupposto non si applica, devi utilizzare i selettori di etichette della risorsa Service sottostante.

    Il contenuto in grassetto è stato sostituito 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 di prometheus-operator esistenti utilizzando i raccoglitori autodeployati anziché i raccoglitori gestiti. Puoi eseguire query sulle metriche inviate da entrambi i tipi di raccoglitore, quindi potresti voler utilizzare raccoglitori con deployment automatico per i deployment Prometheus esistenti e 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 utilizzate per identificare in modo univoco una risorsa in Monarch:

    • project_id: L'identificatore del progetto Google Cloud associato alla metrica.
    • location: la posizione fisica (Google Cloud regione) in cui vengono archiviati i dati. Questo valore in genere corrisponde alla regione del tuo 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 consigliato durante l'esecuzione su Google Kubernetes Engine, puoi sostituire le etichette project_id, location e cluster aggiungendole come args alla risorsa Deployment all'interno di operator.yaml. Se utilizzi etichette riservate come etichette delle metriche, Managed Service per Prometheus le rietichetta automaticamente aggiungendo il prefisso exported_. Questo comportamento corrisponde al modo in cui Prometheus upstream gestisce i conflitti con le etichette riservate.

    Comprimi configurazioni

    Se hai molte risorse PodMonitoring, potresti esaurire lo spazio ConfigMap. Per risolvere il problema, attiva la compressione gzip nella risorsa OperatorConfig:

      apiVersion: monitoring.googleapis.com/v1
      kind: OperatorConfig
      metadata:
        namespace: gmp-public
        name: config
      features:
        config:
          compression: gzip
    

    Abilita la scalabilità automatica pod verticale (VPA) per la raccolta gestita

    Se riscontri errori di memoria insufficiente (OOM) per i pod del raccoglitore nel tuo cluster o se le richieste e i limiti di risorse predefiniti per i raccoglitori non soddisfano altrimenti le tue esigenze, puoi utilizzare la scalabilità automatica pod verticale per allocare dinamicamente le risorse.

    Quando imposti il campo scaling.vpa.enabled: true nella risorsa OperatorConfig, l'operatore esegue il deployment di un manifest VerticalPodAutoscaler nel cluster che consente di impostare automaticamente le richieste e i limiti delle risorse dei pod del raccoglitore in base all'utilizzo.

    Per abilitare VPA per i pod del raccoglitore in Managed Service per Prometheus, esegui il seguente comando:

    kubectl -n gmp-public patch operatorconfig/config -p '{"scaling":{"vpa":{"enabled":true}}}' --type=merge
    

    Se il comando viene completato correttamente, l'operatore configura la scalabilità automatica pod verticale per i pod del raccoglitore. Gli errori di memoria insufficiente comportano un aumento immediato dei limiti delle risorse. Se non sono presenti errori di tipo OOM, il primo aggiustamento delle richieste e dei limiti delle risorse dei pod del raccoglitore in genere si verifica entro 24 ore.

    Potresti ricevere questo errore quando provi ad attivare VPA:

    vertical pod autoscaling is not available - install vpa support and restart the operator

    Per risolvere questo errore, devi prima abilitare la scalabilità automatica pod verticale a livello di cluster:

    1. Vai alla pagina Kubernetes Engine - Cluster nella consoleGoogle Cloud .

      Nella console Google Cloud , vai alla pagina Cluster Kubernetes:

      Vai a Cluster Kubernetes

      Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Kubernetes Engine.

    2. Seleziona il cluster da modificare.

    3. Nella sezione Automazione, modifica il valore dell'opzione Scalabilità automatica verticale dei pod.

    4. Seleziona la casella di controllo Abilita scalabilità automatica verticale dei pod, quindi fai clic su Salva modifiche. Questa modifica riavvia il cluster. L'operatore viene riavviato nell'ambito di questa procedura.

    5. Riprova il seguente comando: kubectl -n gmp-public patch operatorconfig/config -p '{"scaling":{"vpa":{"enabled":true}}}' --type=merge per abilitare VPA per Managed Service per Prometheus.

    Per verificare che la risorsa OperatorConfig sia stata modificata correttamente, aprila utilizzando il comando kubectl -n gmp-public edit operatorconfig config. Se l'operazione ha esito positivo, il tuo OperatorConfig include la seguente sezione in grassetto:

    apiVersion: monitoring.googleapis.com/v1
    kind: OperatorConfig
    metadata:
      namespace: gmp-public
      name: config
    scaling:
      vpa:
        enabled: true
    

    Se hai già abilitato la scalabilità automatica verticale dei pod a livello di cluster e continui a visualizzare l'errore vertical pod autoscaling is not available - install vpa support and restart the operator, il pod gmp-operator potrebbe dover rivalutare la configurazione del cluster. Se esegui un cluster Standard, esegui il seguente comando per ricreare il pod:

    kubectl -n gmp-system rollout restart deployment/gmp-operator
    

    Dopo il riavvio del pod gmp-operator, segui i passaggi precedenti per applicare nuovamente la patch a OperatorConfig.

    Se esegui un cluster Autopilot, contatta l'assistenza per ricevere aiuto per il riavvio del cluster.

    La scalabilità automatica verticale dei pod funziona meglio quando vengono inseriti numeri costanti di campioni, divisi equamente tra i nodi. Se il caricamento delle metriche è irregolare o a picchi oppure se varia notevolmente tra i nodi, VPA potrebbe non essere una soluzione efficiente.

    Per maggiori informazioni, consulta Scalabilità automatica verticale dei pod in GKE.

    Configura statsd_exporter e altri esportatori che segnalano le metriche centralmente

    Se utilizzi statsd_exporter per Prometheus, Envoy per Istio, SNMP exporter, Prometheus Pushgateway, kube-state-metrics o hai un altro exporter simile che intermedia e segnala le metriche per conto di altre risorse in esecuzione nel tuo ambiente, devi apportare alcune piccole modifiche affinché l'exporter funzioni con Managed Service per Prometheus.

    Per istruzioni sulla configurazione di questi esportatori, consulta questa nota nella sezione Risoluzione dei problemi.

    Smontaggio

    Per disabilitare la raccolta gestita di cui è stato eseguito il deployment utilizzando gcloud o la GUI di GKE, puoi procedere in uno dei seguenti modi:

    • Esegui questo comando:

      gcloud container clusters update CLUSTER_NAME --disable-managed-prometheus
      
    • Utilizza l'interfaccia utente GKE:

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

      2. Individua il cluster per cui vuoi disattivare la raccolta gestita e fai clic sul relativo nome.

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

    Per disattivare la raccolta gestita di cui è stato eseguito il deployment utilizzando Terraform, specifica enabled = false nella sezione managed_prometheus della risorsa google_container_cluster.

    Per disattivare 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.15.3/manifests/operator.yaml
    

    La disattivazione della raccolta gestita fa sì che il cluster smetta di inviare nuovi dati a Managed Service per Prometheus. Questa azione non elimina i dati delle metriche esistenti già memorizzati nel sistema.

    La disattivazione della raccolta gestita elimina anche lo spazio dei nomi gmp-public e qualsiasi risorsa al suo interno, inclusi eventuali esportatori installati in questo spazio dei nomi.

    Esegui la raccolta gestita al di fuori 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 per contenere le metriche, un valore location (regioneGoogle 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, l'implementazione della raccolta gestita utilizzando kubectl non esegue automaticamente l'upgrade del cluster quando è disponibile una nuova versione. Ricordati di consultare la pagina delle release per le nuove versioni ed esegui l'upgrade manualmente eseguendo di nuovo i comandi kubectl con la nuova versione.

    Puoi fornire una chiave del 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 modello di tenancy pianificato per le letture. Scegli un progetto in cui archiviare le metriche in base a come prevedi di organizzare le letture successive 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ù la Google Cloud regione scelta è lontana dal tuo deployment, maggiore sarà la latenza di scrittura e maggiore sarà l'impatto di potenziali problemi di rete. Ti consigliamo di consultare questo elenco di regioni in più cloud. Se non ti interessa, puoi inserire tutto in una Google Cloud regione. Non puoi utilizzare global come posizione.

    Per cluster, ti consigliamo di scegliere il nome del cluster in cui è stato deployato l'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
    

    La risorsa 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, ad esempio.

    L'esecuzione di Managed Service per Prometheus al di fuori di Google Cloud comporta costi per il trasferimento dei dati. Sono previste tariffe per il trasferimento dei dati in Google Cloude potresti incorrere in tariffe per il trasferimento dei dati da un altro cloud. Puoi ridurre al minimo questi costi abilitando la compressione 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
          ...
    

    Ulteriori informazioni sulle risorse personalizzate della raccolta gestita

    Per la documentazione di riferimento su tutte le risorse personalizzate di Managed Service per Prometheus, consulta la guida di riferimento dell'API prometheus-engine/doc/api.

    Passaggi successivi