La raccolta dei log in Google Distributed Cloud (GDC) con air gap consente di aggregare gli eventi operativi dai flussi di lavoro Kubernetes per il monitoraggio e la risoluzione dei problemi. Esegui il deployment di una risorsa personalizzata LoggingTarget nel server API di gestione per estrarre, indicizzare ed etichettare i log di progetto dalle macchine virtuali (VM) dei nodi worker di Kubernetes. Questa pipeline non supporta la raccolta dei log dalle VM utente autonome.
Dopo aver configurato la raccolta dei log, puoi eseguire query e visualizzare i log in Grafana o tramite l'API Log Query. 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 dell'organizzazione IAM o all'amministratore del progetto IAM 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.
Configura la risorsa personalizzata LoggingTarget
La risorsa personalizzata LoggingTarget indica alla pipeline di logging di raccogliere i log 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 altre impostazioni aggiuntive.
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.
Per raccogliere i log operativi, segui questi passaggi:
- Determina il progetto GDC da cui vuoi raccogliere i log.
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
LoggingTargetinmy-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-namee 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-logging-target spec: selector: matchPodNames: - my-pod-prefix parser: json logAccessLevel: ao serviceName: my-service-nameConsulta la specifica
LoggingTargetcompleta e la documentazione di riferimento dell'API per ulteriori campi e opzioni.Applica la configurazione
LoggingTargetal 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.yamlSostituisci quanto segue:
KUBECONFIG_PATH: il percorso del file kubeconfig per il server API di gestione.LOGGING_TARGET_NAME: il nome del file di definizioneLoggingTarget, ad esempiomy-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. Per saperne di più 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 definizioneLoggingTarget.