Configurazione di logging e monitoraggio

Cluster Anthos on bare metal include più opzioni per il logging e il monitoraggio dei cluster, inclusi servizi gestiti basati su cloud, strumenti open source e compatibilità convalidata con soluzioni commerciali di terze parti. Questa pagina spiega queste opzioni e fornisce alcune indicazioni di base sulla scelta della soluzione appropriata per il tuo ambiente.

Opzioni per Cluster Anthos on bare metal

Hai diverse opzioni di logging e monitoraggio per i tuoi cluster Anthos su Bare Metal:

  • Cloud Logging e Cloud Monitoring, abilitati per impostazione predefinita sui componenti di sistema Bare Metal.
  • Prometheus e Grafana sono disponibili in Cloud Marketplace.
  • Configurazioni convalidate con soluzioni di terze parti.

Cloud Logging e Cloud Monitoring

La suite operativa di Google Cloud è la soluzione di osservabilità integrata per Google Cloud. Offre una soluzione di logging completamente gestita, raccolta di metriche, monitoraggio, dashboard e avvisi. Cloud Monitoring monitora i cluster Anthos su cluster Bare Metal in modo simile ai cluster GKE basati su cloud.

Gli agenti possono essere configurati per modificare l'ambito di logging e monitoraggio, nonché il livello di metriche raccolte:

  • L'ambito di logging e monitoraggio può essere impostato solo sui componenti di sistema (impostazione predefinita) o su applicazioni e componenti di sistema.
  • Il livello delle metriche raccolte può essere configurato per un insieme ottimizzato di metriche (impostazione predefinita) o per le metriche complete.

Per ulteriori informazioni, consulta Configurazione degli agenti Stackdriver per Cluster Anthos on bare metal in questo documento.

Logging e Monitoring forniscono un'unica soluzione di osservabilità basata su cloud, potente e facile da configurare. Consigliamo vivamente di utilizzare Logging e Monitoring quando si eseguono carichi di lavoro solo su cluster Anthos su Bare Metal o carichi di lavoro su GKE e Anthos clusters on Bare Metal. Per le applicazioni con componenti in esecuzione su cluster Anthos su Bare Metal e l'infrastruttura tradizionale on-premise, potresti prendere in considerazione altre soluzioni per una visione end-to-end di tali applicazioni.

  • Per maggiori dettagli sull'architettura, sulla configurazione e sui dati replicati per impostazione predefinita nel progetto Google Cloud, consulta la pagina relativa a come funzionano Logging e Monitoring per Cluster Anthos on bare metal.

  • Per ulteriori informazioni su Logging, consulta la documentazione di Cloud Logging.

  • Per ulteriori informazioni su Monitoring, consulta la documentazione di Cloud Monitoring.

  • Per scoprire come visualizzare e utilizzare le metriche di utilizzo delle risorse di Cloud Monitoring da Cluster Anthos su Bare Metal a livello di parco risorse, consulta la panoramica di Anthos.

Prometheus e Grafana

Prometheus e Grafana sono due prodotti di monitoraggio open source molto diffusi disponibili in Cloud Marketplace:

  • Prometheus raccoglie le metriche di applicazione e sistema.

  • Alertmanager gestisce l'invio di avvisi con diversi meccanismi di avviso.

  • Grafana è uno strumento per la gestione di dashboard.

Prometheus e Grafana possono essere attivati su ogni cluster di amministrazione e cluster utente. Prometheus e Grafana sono consigliati per i team di applicazioni che hanno già esperienza con questi prodotti. Questi prodotti sono consigliati anche ai team operativi che preferiscono conservare le metriche delle applicazioni all'interno del cluster e per la risoluzione dei problemi in caso di perdita della connettività di rete.

Soluzioni di terze parti

Google ha collaborato con diversi provider di soluzioni di logging e monitoraggio di terze parti per aiutarli a funzionare correttamente con i cluster Anthos su Bare Metal. tra cui Datadog, Elastic e Splunk. In futuro saranno aggiunte altre terze parti convalidate.

Sono disponibili le seguenti guide alle soluzioni per l'utilizzo di soluzioni di terze parti con Cluster Anthos su Bare Metal:

Come funziona Logging e Monitoring per Cluster Anthos on bare metal

Cloud Logging e Cloud Monitoring vengono installati e attivati in ogni cluster quando crei un nuovo cluster amministratore o utente.

Gli agenti Stackdriver includono diversi componenti su ciascun cluster:

  • Operatore Stackdriver (stackdriver-operator-*). Gestisce il ciclo di vita di tutti gli altri agenti Stackdriver di cui è stato eseguito il deployment nel cluster.

  • Risorsa personalizzata di Stackdriver. Una risorsa che viene creata automaticamente come parte del processo di installazione dei cluster Anthos su Bare Metal.

  • Agente delle metriche GKE (gke-metrics-agent-*). Un DaemonSet basato sul raccoglitore OpenTelemetry che estrae le metriche da ogni nodo in Cloud Monitoring. Sono inclusi anche un deployment node-exporter DaemonSet e un kube-state-metrics per fornire più metriche sul cluster.

  • Stackdriver Log Forwarder (stackdriver-log-forwarder-*). Un DaemonSet di bit fluente che inoltra i log da ogni macchina a Cloud Logging. Il log Forwarder buffer le voci di log sul nodo in locale e le invia nuovamente per un massimo di 4 ore. Se il buffer si riempie o se lo strumento di forwarding dei log non riesce a raggiungere l'API Cloud Logging per più di quattro ore, i log vengono ignorati.

  • Anthos Metadata Agent (stackdriver-metadata-agent-). Un deployment che invia metadati per risorse Kubernetes come pod, deployment o nodi all'API Config Monitoring for Ops; questi dati vengono utilizzati per arricchire le query delle metriche consentendoti di eseguire query in base al nome del deployment, al nome del nodo o anche al nome del servizio Kubernetes.

Per vedere gli agenti installati da Stackdriver, esegui il comando seguente:

  kubectl -n kube-system get pods -l "managed-by=stackdriver"

L'output di questo comando è simile al seguente:

kube-system   gke-metrics-agent-4th8r                                     1/1     Running   1 (40h ago)   40h
kube-system   gke-metrics-agent-8lt4s                                     1/1     Running   1 (40h ago)   40h
kube-system   gke-metrics-agent-dhxld                                     1/1     Running   1 (40h ago)   40h
kube-system   gke-metrics-agent-lbkl2                                     1/1     Running   1 (40h ago)   40h
kube-system   gke-metrics-agent-pblfk                                     1/1     Running   1 (40h ago)   40h
kube-system   gke-metrics-agent-qfwft                                     1/1     Running   1 (40h ago)   40h
kube-system   kube-state-metrics-9948b86dd-6chhh                          1/1     Running   1 (40h ago)   40h
kube-system   node-exporter-5s4pg                                         1/1     Running   1 (40h ago)   40h
kube-system   node-exporter-d9gwv                                         1/1     Running   2 (40h ago)   40h
kube-system   node-exporter-fhbql                                         1/1     Running   1 (40h ago)   40h
kube-system   node-exporter-gzf8t                                         1/1     Running   1 (40h ago)   40h
kube-system   node-exporter-tsrpp                                         1/1     Running   1 (40h ago)   40h
kube-system   node-exporter-xzww7                                         1/1     Running   1 (40h ago)   40h
kube-system   stackdriver-log-forwarder-8lwxh                             1/1     Running   1 (40h ago)   40h
kube-system   stackdriver-log-forwarder-f7cgf                             1/1     Running   2 (40h ago)   40h
kube-system   stackdriver-log-forwarder-fl5gf                             1/1     Running   1 (40h ago)   40h
kube-system   stackdriver-log-forwarder-q5lq8                             1/1     Running   2 (40h ago)   40h
kube-system   stackdriver-log-forwarder-www4b                             1/1     Running   1 (40h ago)   40h
kube-system   stackdriver-log-forwarder-xqgjc                             1/1     Running   1 (40h ago)   40h
kube-system   stackdriver-metadata-agent-cluster-level-5bb5b6d6bc-z9rx7   1/1     Running   1 (40h ago)   40h

Metriche di Cloud Monitoring

Per un elenco delle metriche raccolte da Cloud Monitoring, consulta Visualizzare Cluster Anthos on bare metal.

Configurazione degli agenti Stackdriver per Cluster Anthos on bare metal

Gli agenti Stackdriver installati con Cluster Anthos on bare metal raccolgono dati sui componenti di sistema allo scopo di gestire e risolvere i problemi relativi ai tuoi cluster. Le seguenti sezioni descrivono le modalità di configurazione e di funzionamento di Stackdriver.

Solo componenti di sistema (modalità predefinita)

Al momento dell'installazione, gli agenti di Stackdriver sono configurati per impostazione predefinita in modo da raccogliere log e metriche, tra cui dettagli sulle prestazioni (come l'utilizzo di CPU e memoria) e metadati simili, per i componenti di sistema forniti da Google. Questi includono tutti i carichi di lavoro nel cluster di amministrazione e per i cluster utente, i carichi di lavoro negli spazi dei nomi di kube-system, gke-system, gke-connect, istio-system e config-management-system.

Componenti e applicazioni del sistema

Per abilitare il logging e il monitoraggio delle applicazioni, oltre alla modalità predefinita, segui i passaggi descritti in Abilita il logging e il monitoraggio delle applicazioni.

Metriche ottimizzate (metriche predefinite)

Per impostazione predefinita, i deployment kube-state-metrics in esecuzione nel cluster raccolgono e segnalano un insieme ottimizzato di metriche kube alla suite operativa di Google Cloud (in precedenza Stackdriver).

Per raccogliere questo insieme di metriche ottimizzate sono necessarie meno risorse, migliorando le prestazioni e la scalabilità in generale.

Per disabilitare le metriche ottimizzate (sconsigliato), sostituisci l'impostazione predefinita nella risorsa personalizzata Stackdriver.

Configurazione delle risorse del componente Stackdriver

Quando crei un cluster, Cluster Anthos on bare metal crea automaticamente una risorsa personalizzata Stackdriver. Puoi modificare le specifiche nella risorsa personalizzata per eseguire l'override dei valori predefiniti per le richieste e i limiti di CPU e memoria per un componente di Stackdriver. Puoi anche sostituire separatamente l'impostazione delle metriche ottimizzate predefinite.

Override di richieste e limiti di CPU e memoria predefiniti per un componente di Stackdriver

I cluster con densità di pod elevata introducono un overhead di monitoraggio e logging più elevato. In casi estremi, i componenti di Stackdriver possono generare report vicini al limite di utilizzo della CPU e della memoria o persino essere soggetti a riavvii continui a causa dei limiti delle risorse. In questo caso, per eseguire l'override dei valori predefiniti per le richieste e i limiti di CPU e memoria per un componente Stackdriver, segui questi passaggi:

  1. Esegui questo comando per aprire la risorsa personalizzata Stackdriver in un editor a riga di comando:

    kubectl -n kube-system edit stackdriver stackdriver
  2. Nella risorsa personalizzata Stackdriver, aggiungi la sezione resourceAttrOverridenel campo spec:

    resourceAttrOverride:
          DAEMONSET_OR_DEPLOYMENT_NAME/CONTAINER_NAME:
            LIMITS_OR_REQUESTS:
              RESOURCE: RESOURCE_QUANTITY

    Tieni presente che la sezione resourceAttrOverride sostituisce tutti i limiti e le richieste predefiniti esistenti per il componente specificato. I seguenti componenti sono supportati da resourceAttrOverride:

    • gke-metrics-agent/gke-metrics-agent
    • stackdriver-log-forwarder/stackdriver-log-forwarder
    • stackdriver-metadata-agent-cluster-level/metadata-agent
    • node-exporter/node-exporter
    • kube-state-metrics/kube-state-metrics

    Un file di esempio ha il seguente aspetto:

    apiVersion: addons.sigs.k8s.io/v1alpha1
    kind: Stackdriver
    metadata:
      name: stackdriver
      namespace: kube-system
    spec:
      anthosDistribution: baremetal
      projectID: my-project
      clusterName: my-cluster
      clusterLocation: us-west-1a
      resourceAttrOverride:
        gke-metrics-agent/gke-metrics-agent:
          requests:
            cpu: 110m
            memory: 240Mi
          limits:
            cpu: 200m
            memory: 4.5Gi
  3. Per salvare le modifiche alla risorsa personalizzata Stackdriver, salva ed esci dall'editor della riga di comando.

  4. Controlla l'integrità del pod:

    kubectl -n kube-system get pods -l "managed-by=stackdriver"

    Una risposta per un pod in stato integro è la seguente:

    gke-metrics-agent-4th8r                1/1     Running   1   40h
  5. Controlla le specifiche del pod del componente per assicurarti che le risorse siano impostate correttamente.

    kubectl -n kube-system describe pod POD_NAME

    Sostituisci POD_NAME con il nome del pod appena modificato. Ad esempio, gke-metrics-agent-4th8r.

    La risposta sarà simile alla seguente:

      Name:         gke-metrics-agent-4th8r
      Namespace:    kube-system
      ...
      Containers:
        gke-metrics-agent:
          Limits:
            cpu: 200m
            memory: 4.5Gi
          Requests:
            cpu: 110m
            memory: 240Mi
          ...

Disattivare le metriche ottimizzate

Per impostazione predefinita, i deployment kube-state-metrics in esecuzione nel cluster raccolgono e segnalano a Stackdriver un insieme ottimizzato di metriche kube. Se hai bisogno di ulteriori metriche, ti consigliamo di trovare una sostituzione nell'elenco di cluster Anthos sulle metriche Bare Metal.

Ecco alcuni esempi di sostituzioni che potresti utilizzare:

Metrica disattivata Sostituzioni
kube_pod_start_time container/uptime
kube_pod_container_resource_requests container/cpu/request_cores
container/memory/request_bytes
kube_pod_container_resource_limits container/cpu/limit_cores
container/memory/limit_bytes

Per disattivare l'impostazione predefinita delle metriche ottimizzate (opzione non consigliata), procedi nel seguente modo:

  1. Apri la risorsa personalizzata Stackdriver in un editor a riga di comando:

    kubectl -n kube-system edit stackdriver stackdriver
  2. Imposta il campo optimizedMetrics su false:

    apiVersion: addons.sigs.k8s.io/v1alpha1
    kind: Stackdriver
    metadata:
    name: stackdriver
    namespace: kube-system
    spec:
    anthosDistribution: baremetal
    projectID: my-project
    clusterName: my-cluster
    clusterLocation: us-west-1a
    optimizedMetrics: false
    
  3. Salva le modifiche e chiudi l'editor della riga di comando.

Server delle metriche

Metrics Server è l'origine delle metriche delle risorse del container per varie pipeline di scalabilità automatica. Metrics Server recupera le metriche dai kubelet e le espone tramite l'API Kubernetes Metrics. HPA e VPA utilizzano quindi queste metriche per determinare quando attivare la scalabilità automatica. Il server delle metriche viene ridimensionato utilizzando la dimensione aggiuntiva.

Nei casi estremi in cui l'elevata densità di pod crea un overhead di logging e monitoraggio eccessivo, Metrics Server potrebbe essere arrestato e riavviato a causa delle limitazioni delle risorse. In questo caso, puoi allocare più risorse al server delle metriche modificando la configurazione config metrics-server-config nello spazio dei nomi kube-system e modificando il valore per cpuPerNode e memoryPerNode.

kubectl edit cm metrics-server-config -n kube-system

I contenuti di esempio di ConfigMap sono:

apiVersion: v1
data:
  NannyConfiguration: |-
    apiVersion: nannyconfig/v1alpha1
    kind: NannyConfiguration
    cpuPerNode: 3m
    memoryPerNode: 20Mi
kind: ConfigMap

Dopo aver aggiornato l'oggetto ConfigMap, ricrea i pod del server delle metriche con questo comando:

kubectl delete pod -l k8s-app=metrics-server -n kube-system

Requisiti di configurazione per Logging e Monitoring

Esistono diversi requisiti di configurazione per abilitare Cloud Logging e Cloud Monitoring con Cluster Anthos on bare metal. Questi passaggi sono inclusi nella pagina Configurazione di un account di servizio per l'utilizzo con Logging e Monitoring nella pagina Attivazione dei servizi Google e nel seguente elenco:

  1. È necessario creare un'area di lavoro Cloud Monitoring all'interno del progetto Cloud. A tale scopo, fai clic su Monitoring nella console Google Cloud e segui il flusso di lavoro.
  2. Devi abilitare le API Stackdriver seguenti:

  3. Devi assegnare i seguenti ruoli IAM all'account di servizio utilizzato dagli agenti Stackdriver:

    • logging.logWriter
    • monitoring.metricWriter
    • stackdriver.resourceMetadata.writer
    • monitoring.dashboardEditor
    • opsconfigmonitoring.resourceMetadata.writer

Prezzi

Non sono previsti costi per i log di sistema e le metriche di Anthos.

In un cluster Anthos su Bare Metal, le metriche e i log di sistema di Anthos includono quanto segue:

  • Log e metriche di tutti i componenti in un cluster di amministrazione
  • Log e metriche dai componenti negli spazi dei nomi in un cluster utente: kube-system, gke-system, gke-connect, knative-serving, istio-system, monitoring-system, config-management-system, gatekeeper-system, cnrm-system

Per ulteriori informazioni, consulta i prezzi della suite operativa di Google Cloud.

Per scoprire di più sul merito delle metriche di Cloud Logging, contatta il team di vendita per i prezzi.