Raccogliere i log dai workflow

La raccolta dei log nell'appliance Google Distributed Cloud (GDC) con air gap consente di aggregare gli eventi operativi dei tuoi workflow per il monitoraggio e la risoluzione dei problemi. Esegui il deployment di una risorsa personalizzata LoggingTarget nello spazio dei nomi del progetto nel server API di gestione per estrarre, indicizzare ed etichettare i log dai componenti del servizio.

Dopo aver configurato la raccolta dei log, puoi eseguire query e visualizzare i log nell'interfaccia utente di Grafana. Per i suggerimenti sulla strumentazione, consulta le linee guida per il logging di Kubernetes.

Prima di iniziare

Per ottenere le autorizzazioni necessarie per gestire le risorse personalizzate LoggingTarget, chiedi all'amministratore IAM dell'organizzazione o all'amministratore IAM del progetto di concederti uno dei ruoli LoggingTarget associati.

A seconda del livello di accesso e delle autorizzazioni di cui hai bisogno, potresti ottenere ruoli di creator, editor o visualizzatore per questa risorsa in un'organizzazione o un progetto. Per saperne di più, consulta Prepara le autorizzazioni IAM.

  • Operatori di applicazioni: per ottenere le autorizzazioni necessarie per gestire le risorse personalizzate LoggingTarget in un progetto nel server API di gestione, chiedi all'amministratore IAM del progetto di concederti uno dei seguenti ruoli nello spazio dei nomi del progetto:

    • LoggingTarget Creator: crea risorse personalizzate LoggingTarget. Richiedi il ruolo LoggingTarget Creator (loggingtarget-creator).
    • LoggingTarget Editor: modifica le risorse personalizzate LoggingTarget. Richiedi il ruolo LoggingTarget Editor (loggingtarget-editor).
    • LoggingTarget Viewer: visualizza le risorse personalizzate LoggingTarget. Richiedi il ruolo LoggingTarget Viewer (loggingtarget-viewer).
  • Amministratori della piattaforma: per ottenere le autorizzazioni necessarie per gestire le risorse personalizzate LoggingTarget nello spazio dei nomi platform-obs nel server API di gestione, chiedi all'amministratore IAM dell'organizzazione di concederti uno dei seguenti ruoli del cluster nello spazio dei nomi platform-obs:

    • LoggingTarget PA Creator: crea risorse personalizzate LoggingTarget. Richiedi il ruolo del cluster LoggingTarget PA Creator (loggingtarget-pa-creator).
    • LoggingTarget PA Editor: modifica o aggiorna le risorse personalizzate LoggingTarget. Richiedi il ruolo del cluster LoggingTarget PA Editor (loggingtarget-pa-editor).
    • LoggingTarget PA Viewer: visualizza le risorse personalizzate LoggingTarget. Richiedi il ruolo del cluster LoggingTarget PA Viewer (loggingtarget-pa-viewer).

Raccogli i log operativi

Gli audit log operativi registrano condizioni, modifiche e azioni durante la gestione delle operazioni in corso in applicazioni e servizi su GDC. Esegui il deployment della risorsa personalizzata LoggingTarget sul server API di gestione per configurare la pipeline di logging di sistema per la raccolta dei log operativi da servizi specifici a livello di progetto.

Per raccogliere i log operativi da un servizio, completa i seguenti passaggi:

  1. Configura la risorsa personalizzata LoggingTarget nel server dell'API di gestione, specificando i pod selezionati per la raccolta dei log operativi, lo spazio dei nomi del progetto e altre impostazioni aggiuntive. Per scoprire l'aspetto di LoggingTarget, consulta Configura la risorsa personalizzata LoggingTarget.
  2. Esegui il deployment della risorsa personalizzata LoggingTarget nello spazio dei nomi del progetto nel server dell'API di gestione:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f LOGGING_TARGET_NAME
    

    Sostituisci quanto segue:

    • MANAGEMENT_API_SERVER: il percorso kubeconfig del server API di gestione a livello di zona.
    • LOGGING_TARGET_NAME: il nome della risorsa personalizzata LoggingTarget, ad esempio my-service-logging-target.yaml.

    La pipeline inizia a raccogliere i log dai componenti aggiuntivi del progetto.

  3. Esegui query sui log dall'istanza Grafana del tuo progetto. Per saperne di più, consulta Esegui query e visualizza i log.

Utilizza la funzionalità di codifica a colori integrata di Grafana per i diversi livelli di log del servizio. Per ulteriori informazioni sull'impostazione dei valori del livello di log, consulta https://grafana.com/docs/grafana/latest/explore/logs-integration/.

Configura la risorsa personalizzata LoggingTarget

La risorsa personalizzata LoggingTarget indica alla pipeline di logging di raccogliere i log da servizi specifici all'interno del tuo progetto GDC. Puoi specificare i target per i quali raccogli i log, un parser dei log, i livelli di accesso e qualsiasi altra impostazione aggiuntiva.

LoggingTarget

Questa risorsa definisce le seguenti configurazioni:

  • Target: i criteri per la selezione dei pod e dei container da cui vuoi raccogliere i log. Puoi specificare i nomi dei cluster, i prefissi dei nomi dei pod e i prefissi dei nomi dei container.
  • Analizzatore log: un parser predefinito per interpretare le voci di log, mappare gli output dei log alle etichette ed estrarre i campi pertinenti.
  • Identificazione del servizio: il nome del servizio applicato come etichetta alle voci di log per facilitare l'identificazione e il filtro.
  • Autorizzazione: il livello di accesso per le voci di log, che controlla chi può visualizzare i log raccolti.

Configurando questi parametri all'interno della risorsa personalizzata LoggingTarget, puoi controllare con precisione la raccolta e l'organizzazione dei log dei tuoi servizi.

Per raccogliere i log operativi da un servizio, segui questi passaggi:

  1. Determina il progetto GDC da cui vuoi raccogliere i log.
  2. Nella configurazione di LoggingTarget, specifica i pod per la raccolta dei log operativi, lo spazio dei nomi del progetto e le eventuali impostazioni aggiuntive.

    Il seguente file YAML mostra un esempio di configurazione LoggingTarget in my-project-namespace, dove il prefisso del nome del pod da cui raccogliere i log è my-pod-prefix, il livello di accesso per le voci di log è concesso agli operatori dell'applicazione (ao), il nome del servizio è my-service-name e il formato del log è JSON:

    # Configures a log scraping job
    apiVersion: logging.gdc.goog/v1
    kind: LoggingTarget
    metadata:
      # Choose a namespace that matches the namespace of the workload pods.
      namespace: my-project-namespace
      name: my-service-logging-target
    spec:
      selector:
        matchPodNames:
          - my-pod-prefix
      parser: json
      logAccessLevel: ao
      serviceName: my-service-name
    

    Consulta la specifica LoggingTarget completa e la documentazione di riferimento dell'API per ulteriori campi e opzioni.

  3. Applica la configurazione LoggingTarget al server dell'API di gestione all'interno dello stesso spazio dei nomi dei pod di destinazione:

    kubectl --kubeconfig KUBECONFIG_PATH apply -f LOGGING_TARGET_NAME.yaml
    

    Sostituisci quanto segue:

    • KUBECONFIG_PATH: il percorso del file kubeconfig per il server API di gestione.
    • LOGGING_TARGET_NAME: il nome del file di definizione LoggingTarget, ad esempio my-service-logging-target.

    La pipeline di logging inizia a raccogliere i log dai componenti aggiuntivi del progetto.

Puoi eseguire query sui log raccolti utilizzando l'interfaccia utente di Grafana o l'API Log Query. Per saperne di più, consulta Esegui query e visualizza i log.

Se utilizzi Grafana per eseguire query sui log, puoi utilizzare la funzionalità di codifica a colori integrata per i diversi livelli di log del servizio. Per ulteriori informazioni sull'impostazione dei valori del livello di log, consulta https://grafana.com/docs/grafana/latest/explore/logs-integration/.

Specifica LoggingTarget completa

Il seguente file YAML mostra un esempio della specifica completa della risorsa personalizzata LoggingTarget. Per ulteriori informazioni e una descrizione completa dei campi, consulta la documentazione di riferimento dell'API.

# Configures a log scraping job
apiVersion: logging.gdc.goog/v1
kind: LoggingTarget
metadata:
  # Choose a namespace that matches the namespace of the workload pods.
  namespace: PROJECT_NAMESPACE
  name: LOGGING_TARGET_NAME
spec:
  # Choose a matching pattern that identifies the pods for this job.
  # Optional.
  # Relationship between different selectors: 'AND'
  selector:
    # The clusters to collect logs from.
    # The default configuration is to collect logs from all clusters.
    # The relationship between different clusters is an 'OR' relationship.
    # Optional
    matchClusters:
    - my-cluster
    - another-cluster

    # The pod name prefixes to collect logs from.
    # The logging platform scrapes all pods with names
    # that start with the specified prefixes.
    # The values must contain '[a-z0-9-]' characters only.
    # The relationship between different list elements is an 'OR' relationship.
    # Optional.
    matchPodNames:
      - my-pod-prefix
      - another-pod-prefix

    # The container name prefixes to collect logs from.
    # The logging platform scrapes all containers with names
    # that start with the specified prefixes.
    # The values must contain '[a-z0-9-]' characters only.
    # The relationship between different list elements is an 'OR' relationship.
    # Optional.
    matchContainerNames:
      - my-container-prefix
      - another-container-prefix

  # Choose the predefined parser for log entries.
  # Use parsers to map the log output to labels and extract fields.
  # Specify the log format.
  # Optional.
  # Options: klog_text, klog_json, klogr, gdch_json, json
  parser: klog_text

  # Specify an access level for log entries.
  # The default value is 'ao'.
  # Optional.
  # Options: ao, pa, io
  logAccessLevel: ao

  # Specify a service name to be applied as a label.
  # For user workloads consider this field as a workload name.
  # Required.
  serviceName: my-service-name

  # The additional static fields to apply to log entries.
  # The field is a key-value pair, where the field name is the key and
  # the field value is the value.
  # Optional.
  additionalFields:
    app: workload2
    key: value

Sostituisci quanto segue:

  • PROJECT_NAMESPACE: lo spazio dei nomi del progetto.
  • LOGGING_TARGET_NAME: il nome del file di definizione LoggingTarget.