Configurazione di logging e monitoraggio

Anthos clusters on bare metal include più opzioni per il logging e il monitoraggio dei cluster, inclusi servizi gestiti basati su cloud, strumenti open source e convalida convalidata con soluzioni commerciali di terze parti. In questa pagina vengono illustrate queste opzioni e vengono fornite alcune indicazioni di base sulla scelta della soluzione appropriata per il tuo ambiente.

Opzioni per Anthos clusters on bare metal

Sono disponibili diverse opzioni di logging e monitoraggio per i tuoi Anthos clusters on 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 integrata di osservabilità per Google Cloud. Offre una soluzione di logging completamente gestita, raccolta di metriche, monitoraggio, creazione di 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 con due diversi livelli di logging e monitoraggio:

  • Solo componenti di sistema (opzione predefinita).
  • Applicazioni e componenti di sistema.

Logging e Monitoring offrono 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 Anthos clusters on bare metal o carichi di lavoro su GKE e Anthos clusters on bare metal. Per le applicazioni con componenti in esecuzione su Anthos clusters on bare metal e la tradizionale infrastruttura on-premise, potresti 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 le metriche di applicazione e di sistema.

  • Alertmanager consente di inviare avvisi con diversi meccanismi di avviso.

  • Grafana è uno strumento di controllo.

Prometheus e Grafana possono essere attivati su ogni cluster di amministrazione e cluster utente. Prometheus e Grafana sono consigliati per i team addetti alle applicazioni che hanno già esperienza 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 la risoluzione dei problemi in caso di perdita di connettività di rete.

Soluzioni di terze parti

Google ha collaborato con diversi provider di soluzioni di logging e monitoraggio di terze parti per aiutare i propri prodotti a funzionare al meglio con Anthos clusters on bare metal. tra cui Datadog, Elastic e Splunk. In futuro verranno aggiunte altre terze parti convalidate.

Sono disponibili le seguenti guide delle soluzioni per l'utilizzo di soluzioni di terze parti con Anthos clusters on bare metal:

Come funzionano Logging e Monitoring per Anthos clusters on 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 in ogni 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 nell'ambito del processo di installazione di Anthos clusters on bare metal.

  • Agente metriche GKE (gke-metrics-agent-*). Un DaemonSet basato su OpenTelemetry Collector che esegue lo scraping delle metriche da ogni nodo a Cloud Monitoring. Sono inclusi anche un DaemonSet node-exporter e un deployment di 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. Lo strumento di forwarding del log esegue il buffering in locale delle voci di log sul nodo e le invia nuovamente per un massimo di 4 ore. Se il buffer si esaurisce o se lo strumento di inoltro log non riesce a raggiungere l'API Cloud Logging per più di 4 ore, i log vengono eliminati.

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

Per visualizzare gli agenti installati da Stackdriver, esegui 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 Anthos clusters on bare metal.

Configurazione degli agenti Stackdriver per Anthos clusters on bare metal in corso...

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

Solo componenti di sistema (modalità predefinita)

Al momento dell'installazione, gli agenti Stackdriver sono configurati per impostazione predefinita in modo da raccogliere log e metriche, tra cui dettagli sulle 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 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 Abilitare il logging e il monitoraggio delle applicazioni.

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 logging e un monitoraggio più elevati. In casi estremi, i componenti di Stackdriver potrebbero presentare report prossimi al limite di utilizzo della CPU e della memoria oppure potrebbero 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, procedi nel seguente modo:

  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 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. 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 è simile al seguente:

    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 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 appena modificato. Ad esempio, gke-metrics-agent-4th8r.

    La risposta ha il seguente aspetto:

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

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 kubelet e le visualizza tramite l'API Kubernetes Metrics. HPA e VPA quindi utilizzano queste metriche per determinare quando attivare la scalabilità automatica. Il server delle metriche viene ridimensionato utilizzando il ridimensionatore aggiuntivo.

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

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

I contenuti di esempio dell'oggetto ConfigMap sono i seguenti:

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

Dopo aver aggiornato l'oggetto ConfigMap, ricrea i pod metriche-server con il seguente 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 Anthos clusters on bare metal. Questi passaggi sono inclusi nella pagina relativa alla configurazione di un account di servizio da utilizzare 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 Google Cloud. Per farlo, fai clic su Monitoraggio 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 sono previsti costi per i log di sistema e le metriche di Anthos.

In un cluster Anthos clusters on bare metal, i log e le metriche di sistema Anthos includono:

  • Log e metriche di tutti i componenti in un cluster di amministrazione
  • Log e metriche dei componenti negli spazi dei nomi di 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 Prezzi per la 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.