Configurazione di logging e monitoraggio

GKE su Bare Metal include diverse opzioni per il logging e il monitoraggio dei cluster, tra cui servizi gestiti basati su cloud, strumenti open source e compatibilità convalidata con soluzioni commerciali di terze parti. Questa pagina descrive queste opzioni e fornisce alcune indicazioni di base per scegliere la soluzione adeguata per il tuo ambiente.

Opzioni per GKE su Bare Metal

Esistono diverse opzioni di logging e monitoraggio per GKE su Bare Metal:

  • Cloud Logging e Cloud Monitoring abilitati per impostazione predefinita sui componenti di sistema Bare Metal.
  • Prometheus e Grafana sono disponibili da 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, creazione di dashboard e avvisi. Cloud Monitoring monitora GKE sui 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 del logging e del monitoraggio può essere impostato solo sui componenti di sistema (impostazione predefinita) o su componenti e applicazioni del sistema.
  • Il livello di metriche raccolte può essere configurato per un insieme ottimizzato di metriche (predefinito) o per metriche complete.

Per ulteriori informazioni, consulta Configurazione degli agenti Stackdriver per GKE su Bare Metal in questo documento.

Logging e Monitoring offrono un'unica soluzione di osservabilità basata su cloud potente e facile da configurare. Consigliamo vivamente Logging e Monitoring per l'esecuzione di carichi di lavoro solo su GKE su Bare Metal o su carichi di lavoro su GKE e GKE su Bare Metal. Per le applicazioni con componenti in esecuzione su GKE su Bare Metal e nell'infrastruttura on-premise standard, puoi prendere in considerazione altre soluzioni per una visione end-to-end di queste applicazioni.

Prometheus e Grafana

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

  • Prometheus raccoglie metriche delle applicazioni e del sistema.

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

  • Grafana è uno strumento per la creazione di dashboard.

Prometheus e Grafana possono essere abilitati su ogni cluster di amministrazione e cluster utente. Prometheus e Grafana sono consigliati per i team che si occupano di applicazioni con esperienza pregressa con questi prodotti. Questi prodotti sono consigliati anche per i team operativi che preferiscono conservare le metriche delle applicazioni all'interno del cluster e per risolvere i problemi quando si perde la connettività di rete.

Soluzioni di terze parti

Google ha collaborato con diversi provider di soluzioni di logging e monitoraggio di terze parti per far sì che i loro prodotti funzionino bene con GKE su Bare Metal. tra cui Datadog, Elastic e Splunk. In futuro verranno aggiunte altre terze parti convalidate.

Per utilizzare soluzioni di terze parti con GKE su Bare Metal, sono disponibili le seguenti guide:

Come funzionano Logging e Monitoring per GKE su Bare Metal

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

Gli agenti Stackdriver includono diversi componenti su ciascun cluster:

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

  • Risorsa personalizzata Stackdriver. Una risorsa creata automaticamente nell'ambito del processo di installazione di GKE su Bare Metal.

  • Agente metriche GKE (gke-metrics-agent-*). Un DaemonSet basato su OpenTelemetry Collector che esegue il scraping delle metriche da ciascun nodo a Cloud Monitoring. Sono inclusi anche un DaemonSet node-exporter e un deployment kube-state-metrics per fornire più metriche sul cluster.

  • Stackdriver Log Forwarder (stackdriver-log-forwarder-*). Un DaemonSet Fluent Bit che inoltra i log da ogni macchina a Cloud Logging. Il forwarding di log memorizza le voci di log nel nodo localmente e le invia di nuovo per un massimo di 4 ore. Se il buffer si riempie o se il forwardinger non riesce a raggiungere l'API Cloud Logging per più di 4 ore, i log vengono eliminati.

  • Agente metadati Anthos (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 sulle metriche permettendoti di eseguire query in base al nome del deployment, al nome del nodo o anche al nome del servizio Kubernetes.

Puoi visualizzare gli agenti installati da Stackdriver eseguendo questo comando:

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 le metriche di GKE su Bare Metal.

Configurazione degli agenti Stackdriver per GKE su Bare Metal

Gli agenti Stackdriver installati con GKE su Bare Metal raccolgono dati sui componenti di sistema per la manutenzione e la risoluzione dei problemi dei cluster. Le seguenti sezioni descrivono la configurazione e le modalità operative di Stackdriver.

Solo componenti di sistema (modalità predefinita)

Al momento dell'installazione, gli agenti Stackdriver vengono configurati per impostazione predefinita per raccogliere log e metriche, inclusi i dettagli delle prestazioni (ad esempio 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 kube-system, gke-system, gke-connect, istio-system e config-management-system.

Applicazioni e componenti di sistema

Per abilitare il logging e il monitoraggio delle applicazioni oltre alla modalità predefinita, segui i passaggi descritti in Abilitare 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 set ottimizzato di metriche kube alla suite operativa di Google Cloud (in precedenza Stackdriver).

Sono necessarie meno risorse per raccogliere questo insieme ottimizzato di metriche, che migliora le prestazioni e la scalabilità complessive.

Per disabilitare le metriche ottimizzate (opzione sconsigliata), esegui l'override dell'impostazione predefinita nella risorsa personalizzata Stackdriver.

Configurazione delle risorse dei componenti Stackdriver

Quando crei un cluster, GKE su Bare Metal crea automaticamente una risorsa personalizzata Stackdriver. Puoi modificare la specifica nella risorsa personalizzata per eseguire l'override dei valori predefiniti per le richieste e i limiti di CPU e memoria per un componente Stackdriver. Puoi anche eseguire separatamente l'override dell'impostazione predefinita delle metriche ottimizzate.

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

I cluster con un'alta densità di pod introducono un overhead per il logging e il monitoraggio più elevato. In casi estremi, i componenti di Stackdriver potrebbero segnalare un utilizzo vicino al limite di utilizzo di CPU e memoria o persino essere soggetti a riavvii costanti 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 della riga di comando:

    kubectl -n kube-system edit stackdriver stackdriver
  2. Nella risorsa personalizzata Stackdriver, aggiungi la sezione resourceAttrOverride sotto il 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. resourceAttrOverride supporta i seguenti componenti:

    • 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.gke.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 apportate 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 integro ha il seguente aspetto:

    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 che hai 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
          ...

Disattiva le metriche ottimizzate

Per impostazione predefinita, i deployment kube-state-metrics in esecuzione nel cluster raccolgono e segnalano a Stackdriver un set ottimizzato di metriche kube. Se ti servono metriche aggiuntive, ti consigliamo di trovarne una sostitutiva nell'elenco delle metriche di GKE su Bare Metal.

Ecco alcuni esempi di sostituzioni che potresti utilizzare:

Metrica disabilitata 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 (non consigliato):

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

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

    apiVersion: addons.gke.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 ed esci dall'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 da kubelets e le espone tramite l'API Kubernetes Metrics. HPA e VPA usano queste metriche per determinare quando attivare la scalabilità automatica. Il server delle metriche viene scalato tramite il resizer dei componenti aggiuntivi.

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

kubectl edit cm metrics-server-config -n gke-managed-metrics-server

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 ConfigMap, ricrea i pod del server delle metriche con il comando seguente:

kubectl delete pod -l k8s-app=metrics-server -n gke-managed-metrics-server

Requisiti di configurazione per Logging e Monitoring

Esistono diversi requisiti di configurazione per abilitare Cloud Logging e Cloud Monitoring con GKE su Bare Metal. Questi passaggi sono inclusi in Configurare un account di servizio da utilizzare con Logging e Monitoring nella pagina Abilitazione dei servizi Google e nel seguente elenco:

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

  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 è previsto alcun costo per i log e le metriche di sistema di GKE Enterprise.

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

  • Log e metriche di tutti i componenti in un cluster di amministrazione
  • Log e metriche dei componenti in questi 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 la sezione Prezzi della suite operativa di Google Cloud.

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