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 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; riduce la complessità il deployment, la scalabilità, lo sharding, la configurazione e la gestione dei raccoglitori. La raccolta gestita è supportata per GKE e da tutti gli altri ambienti Kubernetes.

La raccolta gestita esegue i raccoglitori basati su Prometheus come Daemonset e assicura o scalabilità tramite lo scraping dei target soltanto su nodi coallocati. Configuri raccoglitori con risorse personalizzate leggere per eseguire lo scraping dei dati degli esportatori utilizzando la funzione pull raccolta, i raccoglitori eseguono il push dei dati di altri siti il datastore centrale Monarch. Google Cloud non accede mai direttamente il tuo cluster per eseguire il pull o lo scraping dei dati delle metriche; i raccoglitori inviano i dati in Google Cloud. Per saperne di più sui dati gestiti e di cui è stato eseguito il deployment autonomo consulta la sezione Raccolta di dati con Managed Service per Prometheus e importazione e query con raccolta gestita e di cui è stato eseguito autonomamente il deployment.

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:

      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 fai clic su Crea.

      3. Vai a Fatturazione:

        Vai a Fatturazione

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

      5. Ti viene chiesto di scegliere un profilo pagamenti esistente per 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 è abilitata:

      1. Vai su API e Google Cloud:

        Vai su 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 "API abilitata" non viene visualizzato, fai clic sul pulsante Attiva.

  • Un cluster Kubernetes. Se non hai un cluster Kubernetes, segui le istruzioni nella Guida rapida per GKE.

Sono inoltre necessari i seguenti strumenti a riga di comando:

  • gcloud
  • kubectl

Gli strumenti gcloud e kubectl fanno parte Google Cloud CLI. Per informazioni sull'installazione consulta Gestione dei componenti dell'interfaccia a riga di comando di Google Cloud. Per vedere le 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, eseguire la configurazione seguente:

  • 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 nell'ambito dell'applicazione di esempio:

kubectl create ns NAMESPACE_NAME

Configura la raccolta gestita

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

Una volta abilitata la raccolta gestita, i componenti nel cluster verranno eseguiti ma non è stata ancora generata alcuna metrica. PodMonitoring o ClusterPodMonitoring sono necessarie risorse da questi componenti per eseguire correttamente lo scraping delle metriche endpoint. Devi eseguire il deployment di queste risorse con endpoint delle metriche validi o abilitare uno dei pacchetti di metriche gestite, Metriche dello stato di Kube, integrati 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 su Managed Service per Prometheus , consulta l'operatore pagina manifest.

Abilita raccolta gestita: GKE

La raccolta gestita è abilitata per impostazione predefinita per:

Se esegui in un ambiente GKE che non abilita raccolta gestita per impostazione predefinita, quindi Abilitare la raccolta gestita manualmente.

L'upgrade della raccolta gestita su GKE viene eseguito automaticamente vengono rilasciate le versioni dei componenti in-cluster.

La raccolta gestita su GKE utilizza le autorizzazioni concesse all'istanza predefinita Account di servizio Compute Engine. Se hai una norma che modifica autorizzazioni standard per l'account di servizio predefinito del nodo, potresti dover aggiungere Il ruolo Monitoring Metric Writer per continuare.

Abilita raccolta gestita manualmente

Se esegui in un ambiente GKE che non abilita 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, è necessario con 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 sul tuo cluster e se utilizzi 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:

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

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

Dashboard dei cluster GKE in Cloud Monitoring.

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

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

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

  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 Managed Service per Prometheus . Se risulta disattivata, fai clic su Modifica, e seleziona Abilita Managed Service per Prometheus.

  4. Fai clic su Salva modifiche.

Per creare un cluster con la raccolta gestita abilitata, segui questi passaggi:

  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 servizio gestito per Prometheus.

  6. 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 una delle seguenti operazioni 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 in Cluster GKE Autopilot con 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 1.25, puoi abilitarlo manualmente eseguendo il comando update gcloud CLI.

Terraform

Per istruzioni su come configurare la raccolta gestita utilizzando Terraform, consulta 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 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'attivazione automatica della raccolta gestita durante la creazione in un nuovo cluster GKE Standard con GKE versione 1.27 o successiva.

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 Servizio gestito per Prometheus. Fai clic su  Modifica. e deseleziona Abilita Managed Service per Prometheus.

  4. Fai clic su Salva modifiche.

Per eseguire l'override dell'attivazione automatica della raccolta gestita durante la creazione su un nuovo cluster GKE Standard (versione 1.27 o versioni successive), segui questi passaggi:

  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 Servizio gestito per Prometheus.

  6. 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'attivazione automatica della raccolta gestita durante la creazione in un nuovo cluster GKE Standard con 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 una delle seguenti operazioni 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'attivazione automatica della raccolta gestita durante la creazione su un nuovo cluster GKE Standard (versione 1.27 o versioni successive), esegui questo comando:

gcloud container clusters create CLUSTER_NAME --zone ZONE --no-enable-managed-prometheus

GKE Autopilot

Non puoi disattivare la raccolta gestita in Cluster GKE Autopilot con GKE versione 1.25 o successiva.

Terraform

Per disattivare la raccolta gestita, imposta l'attributo enabled nel managed_prometheus blocco di configurazione a false. Per ulteriori informazioni su questo blocco di configurazione, consulta Registro Terraform per google_container_cluster.

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

Abilita raccolta gestita: Kubernetes non GKE

Se esegui 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 nella versione in esecuzione dei deployment GKE Enterprise 1.12 o versioni successive.

Interfaccia a riga di comando kubectl

Per installare i raccoglitori gestiti quando utilizzi un ambiente non GKE per il cluster Kubernetes, esegui questi comandi per installare 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 GKE Enterprise cluster, 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 example_random_numbers metrica dell'istogramma (tra le altre) sulla porta metrics. Il file 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 for Prometheus utilizza lo scraping dei target. Lo scraping dei target e l'importazione delle metriche vengono configurati utilizzando Risorse personalizzate di Kubernetes. Il servizio gestito utilizza 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 per ogni spazio dei nomi. Puoi verificare che la risorsa PodMonitoring sia installata dello spazio dei nomi previsto eseguendo kubectl get podmonitoring -A.

Per la documentazione di riferimento su tutti i servizi Managed Service per Prometheus RP: vedi 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 nello spazio dei nomi con l'etichetta app.kubernetes.io/name con valore prom-example. Lo scraping dei pod corrispondenti viene eseguito ogni 30 secondi su una porta denominata metrics, su il 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 stato del target di scraping per l'attivazione della funzionalità di targeting per stato.

Per configurare la raccolta orizzontale che si applica a un intervallo di pod in per tutti gli spazi dei nomi, utilizza la classe ClusterPodMonitoring risorsa. La risorsa ClusterPodMonitoring fornisce la stessa interfaccia PodMonitoring, ma non limita i pod rilevati a un determinato spazio dei nomi.

Se esegui su GKE, puoi fare quanto segue:

Se esegui all'esterno di GKE, devi creare un account di servizio e autorizzarlo a scrivere i dati delle metriche, come descritto nella sezione che segue.

Fornisci le credenziali in modo esplicito

Durante l'esecuzione su GKE, il server Prometheus che raccoglie recupera automaticamente le credenziali dall'ambiente in base l'account di servizio del nodo. Nei cluster Kubernetes non GKE, le credenziali devono essere fornita tramite la risorsa OperatorConfig in dello 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 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 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 di aggiungere anche queste credenziali alla sezione rules per far funzionare la valutazione delle regole gestite.

    2. Salva il file e chiudi l'editor. Una volta applicata la modifica, vengono ricreati e avviano l'autenticazione nella 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 la versione gestita completamente gestito di Google Cloud.
    • Esegui la raccolta gestita all'esterno di GKE.

    Attivazione della funzionalità di targeting per stato

    Puoi controllare lo stato dei tuoi target in PodMonitoring Risorse ClusterPodMonitoring impostando 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 ogni una risorsa PodMonitoring o ClusterPodMonitoring valida, se configurata.

    Se hai una risorsa PodMonitoring denominata 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 conta su tutti i raccoglitori per questo la risorsa PodMonitoring. Nell'applicazione di esempio, prom-example ha tre repliche con un singolo target della 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 il valore 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 dell'ultimo aggiornamento è molto più lunga dello scraping desiderato un intervallo di tempo, la differenza potrebbe indicare problemi con il target in un cluster Kubernetes.
    • Il campo Status.Endpoint Statuses.Sample Groups mostra target di esempio raggruppati da etichette di destinazione comuni inserite dal raccoglitore. Questo valore è utile per di debug in situazioni in cui le destinazioni non vengono rilevate. Se tutti i target sono integri e in fase di raccolta, il valore previsto per Health è up, mentre il valore del campo Last Scrape Duration Seconds è la durata abituale per un target tipico.

    Per ulteriori informazioni su questi campi, consulta Documento relativo all'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 del target, consulta Problemi lato importazione nella sezione documentazione.

    Configurazione dello scraping della destinazione con Terraform

    Puoi automatizzare la creazione e la gestione di PodMonitoring Risorse ClusterPodMonitoring utilizzando Terraform kubernetes_manifest risorsa o kubectl_manifest Tipo di risorsa Terraform, uno dei quali 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 inviate a Managed Service per Prometheus per contenere i costi. Cosa puoi fare utilizzando le regole di rietichettatura di Prometheus. con un'azione keep per una lista consentita o un'azione drop per una lista bloccata. Per raccolta gestita, questa regola viene inserita nella sezione metricRelabeling del tuo PodMonitoring o ClusterPodMonitoring risorsa.

    Ad esempio, la seguente regola di rietichettatura 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 può 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, nelle varie metriche domini 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 saperne di più sulla pagina Gestione delle metriche, consulta Visualizza e gestisci l'utilizzo delle metriche.

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

    Scraping delle metriche Kubelet e cAdvisor

    Il componente Kubelet mostra sia le metriche relative a se stessa che quelle di cAdvisor di container in esecuzione sul suo nodo. Puoi configurare la raccolta gestita eseguire lo scraping delle metriche Kubelet e cAdvisor modificando la risorsa OperatorConfig. Per istruzioni, consulta la documentazione dell'esportatore per Kubelet e cAdvisor.

    Converti le risorse dell'operatore Prometheus esistenti

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

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

    monitoraggio.coreos.com/v1
    ServiceMonitor
    Compatibilità
    monitoraggio.googleapis.com/v1
    PodMonitoring
    .ServiceMonitorSpec.Selector Identiche .PodMonitoringSpec.Selector
    .ServiceMonitorSpec.Endpoints[] .TargetPort mappa su .Port
    .Path: compatible
    .Interval: compatible
    .Timeout: compatible
    .PodMonitoringSpec.Endpoints[]
    .ServiceMonitorSpec.TargetLabels PodMonitor deve specificare:
    .FromPod[].From etichetta pod
    .FromPod[].To etichetta target
    .PodMonitoringSpec.TargetLabels

    Di seguito è riportato un esempio di RP ServiceMonitor; i contenuti in grassetto sono 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 la RP PodMonitoring analoga, supponendo che il tuo servizio e i relativi pod sono etichettati con app=example-app. Se questo presupposto non è applicabile, devi utilizzare i selettori di etichette dell'elemento sottostante Risorsa di servizio.

    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 usare le risorse dell'operatore Prometheus esistenti di deployment utilizzando raccoglitori di cui è stato eseguito il deployment autonomo anziché raccoglitori gestiti. Puoi eseguire query sulle metriche inviate da entrambi i tipi di raccoglitore, in modo da potresti voler utilizzare raccoglitori di cui è stato eseguito il deployment autonomo per Prometheus esistente mentre utilizzi 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 al tuo o una metrica di valutazione.
    • location: la località fisica (regione Google Cloud) in cui vengono archiviati i dati. Solitamente, questo valore corrisponde all'area geografica cluster GKE. Se i dati vengono 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 della destinazione Prometheus, se nota; potrebbe essere vuoto per i risultati della valutazione delle regole.
    • instance: l'etichetta dell'istanza del target Prometheus, se nota; potrebbe essere vuoto per i risultati della valutazione delle regole.

    Sebbene non sia consigliato per l'esecuzione su Google Kubernetes Engine, puoi eseguire l'override Etichette project_id, location e cluster aggiungendo e li assegna come args alla risorsa Deployment all'interno operator.yaml. Se usi etichette riservate come etichette delle metriche, Managed Service per Prometheus le etichetta automaticamente aggiungendo il token prefisso exported_. Questo comportamento corrisponde al modo in cui Prometheus gestisce l'upstream conflitti con le etichette riservate.

    Smantellamento

    Per disabilitare la raccolta gestita di cui è stato eseguito il deployment utilizzando gcloud o GKE UI, puoi eseguire una delle seguenti operazioni:

    • Esegui questo comando:

      gcloud container clusters update CLUSTER_NAME --disable-managed-prometheus
      
    • Utilizza l'UI di GKE:

      1. Nella console Google Cloud, seleziona Kubernetes Engine, quindi seleziona Cluster.

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

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

    Per disabilitare la raccolta gestita di cui è stato eseguito il deployment tramite Terraform, specifica enabled = false nella sezione managed_prometheus del google_container_cluster risorsa.

    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 alcun i dati delle metriche esistenti già archiviati nel sistema.

    La disattivazione della raccolta gestita elimina anche lo spazio dei nomi gmp-public e risorse al suo interno, inclusi eventuali esportatori installato nello spazio dei nomi.

    Esegui la raccolta gestita all'esterno di GKE

    Negli ambienti GKE, puoi eseguire la raccolta gestita senza un'ulteriore configurazione. In altri ambienti Kubernetes, devi fornire esplicitamente le credenziali, un valore project-id che contenga il le metriche, un valore location (regione Google Cloud) in cui le metriche e un valore cluster per salvare il nome del cluster in cui il raccoglitore è in esecuzione.

    Poiché gcloud non funziona al di fuori degli ambienti Google Cloud, devi eseguire il deployment con kubectl. A differenza di gcloud, il deployment della raccolta gestita utilizzando kubectl non esegue automaticamente l'upgrade del tuo quando è disponibile una nuova versione. Ricordati di guardare le uscite pagina per le nuove versioni ed eseguire manualmente l'upgrade eseguendo nuovamente i comandi kubectl con la nuova versione.

    Puoi fornire una chiave dell'account di servizio modificando Risorsa OperatorConfig all'interno di operator.yaml come descritto in Fornisci in modo esplicito. Puoi fornire Valori project-id, location e cluster aggiungendoli come args alla Risorsa di deployment in operator.yaml.

    Ti consigliamo di scegliere project-id in base al modello di tenancy pianificato per legge. Scegli un progetto in cui archiviare le metriche in base a come prevedi di organizzare legge in un secondo momento con gli ambiti delle metriche. Se non ti interessa, può inserire tutto in un unico progetto.

    Per location, ti consigliamo di scegliere la regione Google Cloud più vicina al tuo e deployment continuo. Più la regione Google Cloud scelta è lontana dal tuo deployment, maggiore è la latenza di scrittura che avrai e più sarai influenzato da potenziali problemi di rete. Ti consigliamo di consultare questo elenco di regioni più cloud. Se che non ti interessa, puoi inserire tutto in un'unica regione Google Cloud. Non puoi usa global come posizione.

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

    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 a us-central1, ad esempio.

    L'esecuzione di Managed Service per Prometheus al di fuori di Google Cloud comporta tariffe per il trasferimento di dati. Sono previste delle tariffe per trasferire i dati in Google Cloud. ti potrebbero venire addebitati dei costi per trasferire i dati da un altro cloud. Nel 0.5.0 e successive, puoi ridurre al minimo questi costi abilitando gzip compressione tramite OperatorConfig. Aggiungi il testo 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 tutti i servizi Managed Service per Prometheus di risorse personalizzate, consulta riferimento prometheus-engine/doc/api.

    Passaggi successivi