Questa pagina descrive come attivare e visualizzare i log per le flotte. Con la registrazione della flotta, più log vengono aggregati e inclusi insieme, consentendoti di analizzare l'integrità delle tue applicazioni in un'unica visualizzazione consolidata. Questa pagina è destinata a:
- Gli amministratori della piattaforma che vogliono attivare la registrazione della flotta e visualizzare i log in tutti gli spazi dei nomi.
- Operatori di servizio che vogliono visualizzare i log negli spazi dei nomi specifici a cui hanno accesso.
Panoramica
I log del parco risorse consentono di visualizzare i log a livello di intero parco risorse o per ambiti di team specifici. Gli ambiti sono una funzionalità di gestione dei team che consente di definire sottoinsiemi di log del parco risorse e altre risorse in base al team, con ogni ambito associato a uno o più cluster membro del parco risorse. Per saperne di più sugli ambiti, consulta Gestire i team per il parco risorse.
Puoi visualizzare due tipi di log della flotta:
Log predefiniti: tutti i log di Kubernetes (ad eccezione degli audit log) che non appartengono a nessun ambito di flotta specifico con i seguenti tipi di risorse:
k8s_container
k8s_pod
k8s_node
k8s_cluster
k8s_control_plane_components
Log dell'ambito del parco risorse: log di container e pod per le applicazioni di proprietà di un team di cui è stato eseguito il deployment in un ambito del parco risorse specifico con più spazi dei nomi a livello di parco risorse.
La visualizzazione dei log dell'ambito della flotta è facoltativa. Se non vuoi configurare la gestione del team, puoi comunque utilizzare la registrazione della flotta per visualizzare i log predefiniti.
I log possono essere indirizzati a diversi bucket di log nel progetto host del parco risorse con viste diverse per controllo dell'accesso#39;accesso. Il periodo di conservazione predefinito di un bucket di log è di 30 giorni. Se necessario, puoi configurare questo periodo.
Sono supportate due modalità per il routing dei log in cui i parchi risorse contengono cluster di più progetti (registrazione tra progetti):
MOVE
: tutti i log vengono spostati nel progetto host del parco risorse. Se un cluster nel parco risorse appartiene a un progetto diverso, i relativi log non vengono conservati nel progetto Google Cloud originale.COPY
: tutti i log vengono inviati al progetto host del parco risorse. Se un cluster nel parco risorse appartiene a un progetto diverso, i relativi log vengono conservati anche nel progetto Google Cloud originale.
Prima di iniziare
Se hai già creato manualmente bucket, sink e filtri di esclusione impostati di Cloud Logging, assicurati che i nomi che hai assegnato a questi oggetti non siano in conflitto con le limitazioni di denominazione della registrazione della flotta. In caso di conflitto di denominazione, contatta l'assistenza prima di procedere.
Assicurati che i cluster di cui vuoi visualizzare i log siano stati registrati nel parco risorse scelto.
Se non è già installata, installa Google Cloud CLI seguendo le istruzioni di installazione. Per visualizzare i log della flotta, devi disporre della versione 424.0.0 o successive.
Assicurati che nel progetto host del parco risorse siano abilitate tutte le API richieste, inclusa l'API Anthos:
gcloud services enable --project=FLEET_HOST_PROJECT_ID \ gkehub.googleapis.com \ container.googleapis.com \ connectgateway.googleapis.com \ cloudresourcemanager.googleapis.com \ iam.googleapis.com \ anthos.googleapis.com
dove:
- FLEET_HOST_PROJECT_ID è l'ID progetto del progetto host del parco risorse. Scopri come trovare questo valore.
Prepara ambiti, spazi dei nomi e workload
Se vuoi visualizzare i log dell'ambito del parco risorse, devi creare un ambito del parco risorse e uno spazio dei nomi del parco risorse, oltre a preparare i carichi di lavoro per la raccolta dei log.
Prima di continuare, imposta il progetto predefinito per Google Cloud CLI eseguendo questo comando:
gcloud config set project FLEET_HOST_PROJECT_ID
Creare ambiti e spazi dei nomi
Se vuoi visualizzare i log a livello di ambito e non hai ancora configurato gli ambiti, segui le istruzioni riportate in Gestire i team per il tuo parco risorse per creare ambiti, aggiungere cluster agli ambiti e configurare gli spazi dei nomi del parco risorse.
Preparare i workload
Per visualizzare i dati di log delle tue applicazioni, devi eseguire il deployment dei carichi di lavoro in un cluster nello spazio dei nomi del parco risorse configurato nel passaggio precedente. Questo passaggio è applicabile indipendentemente dal fatto che tu scelga di visualizzare i log predefiniti, i log dell'ambito del parco risorse o entrambi. Ecco un esempio per configurare il workload:
apiVersion: v1
kind: Pod
metadata:
name: fleet-example-pod
namespace: NAMESPACE_NAME
spec:
containers:
- name: count
image: ubuntu:14.04
args: [bash, -c,
'for ((i = 0; ; i++)); do echo "$i: $(date)"; sleep 1; done']
Dopo aver eseguito il deployment della risorsa, potresti visualizzare un errore se la creazione dello spazio dei nomi del parco risorse non è riuscita per qualche motivo. In questo caso, esegui il comando seguente per creare di nuovo lo spazio dei nomi ed esegui di nuovo il comando di deployment del workload:
kubectl create namespace NAMESPACE_NAME
Abilita il logging del parco auto
Questa sezione descrive come attivare la funzionalità di logging del parco risorse e concedere l'accesso al team per visualizzare i log.
gcloud
Puoi attivare la registrazione della flotta utilizzando Google Cloud CLI specificando i campi di configurazione della funzionalità in un file JSON o YAML. Ecco un esempio di configurazione per la registrazione della flotta in formato JSON:
{ "loggingConfig": { "defaultConfig": { "mode": "COPY" }, "fleetScopeLogsConfig": { "mode": "MOVE" } } }
Per visualizzare tutti i campi che puoi configurare per questa funzionalità, consulta il riferimento API.
Quando i campi defaultConfig
o fleetScopeLogsConfig
sono abilitati con le modalità COPY
o MOVE
, come mostrato nell'esempio precedente, viene creato un sink di log con il prefisso fleet-o11y-
. Questo sink di log viene creato nel progetto Google Cloud per indirizzare i log di destinazione dal progetto del cluster al progetto host del parco risorse.
Quando fleetScopeLogsConfig
è abilitato, viene creato anche un bucket log con il nome fleet-o11y-scope-$SCOPE_NAME
nella global
regione nel progetto host del parco risorse, se non esiste già. Tieni presente che non puoi modificare la regione del bucket.
In questo esempio, i log predefiniti verranno inviati al progetto host del parco risorse e conservati nel progetto Google Cloud originale, mentre i log dell'ambito del parco risorse verranno inviati al progetto host del parco risorse e non conservati nel progetto Google Cloud .
Aggiungi la configurazione scelta a un file JSON e aggiorna la flotta:
gcloud container fleet fleetobservability update \ --logging-config=JSON_FILE
Sostituisci JSON_FILE con il nome del file.
Terraform
- La funzionalità di osservabilità del parco risorse è abilitata per impostazione predefinita. Se è la prima volta che utilizzi Terraform per gestire la funzionalità di osservabilità del parco risorse, importala in Terraform eseguendo il seguente comando:
terraform import google_gke_hub_feature.feature projects/FLEET_HOST_PROJECT_ID/locations/global/features/fleetobservability
- Puoi attivare la registrazione della flotta con Terraform utilizzando un modulo Terraform.
Ad esempio, puoi aggiungere il seguente blocco alla configurazione Terraform:
resource "google_gke_hub_feature" "feature" {
name = "fleetobservability"
location = "global"
spec {
fleetobservability {
logging_config {
default_config {
mode = "COPY"
}
fleet_scope_logs_config {
mode = "MOVE"
}
}
}
}
}
Quando i campi default_config
o fleet_scope_logs_config
sono abilitati con le modalità COPY
o MOVE
, come mostrato nell'esempio precedente, viene creato un sink di log con il prefisso fleet-o11y-
. Questo sink di log viene creato nel progetto Google Cloud per indirizzare i log di destinazione dal progetto del cluster al progetto host del parco risorse.
Quando fleet_scope_logs_config
è abilitato, viene creato anche un bucket log con il nome fleet-o11y-scope-$SCOPE_NAME
nel progetto host del parco risorse, se non esiste già.
In questo esempio, i log predefiniti verranno inviati al progetto host del parco risorse e conservati nel progetto Google Cloud originale, mentre i log dell'ambito del parco risorse verranno inviati al progetto host del parco risorse e non conservati nel progetto Google Cloud .
Verifica che la specifica della funzionalità sia aggiornata:
gcloud container fleet fleetobservability describe
L'output mostra la specifica fleetobservability
aggiornata con la configurazione, come nel seguente esempio:
createTime: '2022-09-30T16:05:02.222568564Z' membershipStates: projects/123456/locations/us-central1/memberships/cluster-1: state: code: OK description: Fleet monitoring enabled. updateTime: '2023-04-03T20:22:51.436047872Z' name: projects/123456/locations/global/features/fleetobservability resourceState: state: ACTIVE spec: fleetobservability: loggingConfig: defaultConfig: mode: COPY fleetScopeLogsConfig: mode: MOVE state: state: {} updateTime: '2023-04-03T20:38:17.719596966Z'
L'applicazione delle modifiche apportate alla specifica fleetobservability
potrebbe richiedere alcuni minuti.
Configura le autorizzazioni di logging tra progetti
Questa sezione è obbligatoria solo se stai registrando un cluster in un parco risorse in un altro progetto (operazione nota anche come registrazione tra progetti). Per indirizzare i log dai progetti cluster al progetto host del parco risorse, devi concedere il ruolo roles/logging.bucketWriter
al account di servizio di logging di ogni progetto cluster.
Per ottenere le credenziali del account di servizio dai sink nei progetti del cluster, esegui questo comando:
FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID FLEET_HOST_PROJECT_NUMBER=$(gcloud projects describe "${FLEET_HOST_PROJECT_ID}" --format "value(projectNumber)") gcloud logging sinks --project=GKE_PROJECT_ID describe fleet-o11y-${FLEET_HOST_PROJECT_NUMBER}-default
Se il comando restituisce un errore che indica che non è possibile trovare il sink di log, prova a eseguire di nuovo il comando dopo un minuto o due. Puoi visualizzare il account di servizio nel campo
writerIdentity
della descrizione del sink, come mostrato nell'esempio seguente:createTime: '2023-04-06T02:26:54.716195307Z' destination: logging.googleapis.com/projects/123456/locations/global/buckets/_Default filter: xxx name: fleet-o11y-default updateTime: '2023-04-06T19:03:51.598668462Z' writerIdentity: serviceAccount:service-123456@gcp-sa-logging.iam.gserviceaccount.com
Concedi il ruolo
roles/logging.bucketWriter
al account di servizio recuperato:gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "SERVICE_ACCOUNT" \ --role "roles/logging.bucketWriter"
dove:
- SERVICE_ACCOUNT è il nome del account di servizio recuperato dal passaggio precedente. Ad esempio:
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:service-123456@gcp-sa-logging.iam.gserviceaccount.com" \ --role "roles/logging.bucketWriter"
Concedere l'accesso ai log al team
Questa sezione descrive come concedere agli utenti l'accesso per visualizzare i log dei container e dei pod.
Recupera il criterio IAM per il progetto della flotta e scrivilo in un file locale in formato JSON:
gcloud projects get-iam-policy FLEET_HOST_PROJECT_ID --format json > output.json
Aggiungi una condizione IAM che consenta all'account utente di visualizzare i dati del bucket dei log che hai creato. Ecco un esempio per visualizzare i log dei container e dei pod:
{ "bindings": [ { "members": [ "user:USER_ACCOUNT_EMAIL" ], "role": "roles/logging.viewAccessor", "condition": { "title": "Bucket reader condition example", "description": "Grants logging.viewAccessor role to user USER_ACCOUNT_EMAIL for the fleet-o11y-scope-SCOPE_NAME-k8s_container and fleet-o11y-scope-SCOPE_NAME-k8s_pod log view.", "expression": "resource.name == \"projects/FLEET_HOST_PROJECT_ID/locations/global/buckets/fleet-o11y-scope-SCOPE_NAME/views/fleet-o11y-scope-SCOPE_NAME-k8s_container\" || resource.name == \"projects/FLEET_HOST_PROJECT_ID/locations/global/buckets/fleet-o11y-scope-SCOPE_NAME/views/fleet-o11y-scope-SCOPE_NAME-k8s_pod\"" } } ], }
Aggiorna il criterio IAM:
gcloud projects set-iam-policy FLEET_HOST_PROJECT_ID output.json
Per altre opzioni relative alla concessione dell'accesso, vedi Controllare l'accesso a una visualizzazione log.
Visualizza i log del parco risorse
Gli amministratori della piattaforma hanno accesso per visualizzare tutti i log in tutti gli spazi dei nomi.
Log predefiniti
Per visualizzare tutti i log predefiniti nel bucket _Default
del progetto host della flotta, compila le variabili nel seguente URL, copialo e incollalo nel browser:
https://console.cloud.google.com/logs/query;query=;storageScope=storage,projects%2FFLEET_HOST_PROJECT_ID%2Flocations%2Fglobal%2Fbuckets%2F_Default%2Fviews%2F_Default?jsmode=O&mods=pan_ng2&project=FLEET_HOST_PROJECT_ID
Log dei container e dei pod dell'ambito del parco risorse
Gli operatori del servizio possono visualizzare i log negli spazi dei nomi a cui hanno accesso. Per visualizzare i log per tutti gli spazi dei nomi in un ambito di flotta specifico:
Con il progetto host del parco veicoli selezionato, vai alla sezione Team nella console Google Cloud .
Fai clic sull'ambito del team di cui vuoi visualizzare i log e poi sulla scheda Log.
Seleziona Log container o Log pod per filtrare la visualizzazione dei log.
Per visualizzare i log per uno spazio dei nomi specifico nel tuo ambito:
- Nella pagina Team, con l'ambito del team selezionato, fai clic sulla scheda Spazi dei nomi.
- Fai clic sullo spazio dei nomi di cui vuoi visualizzare i log e poi sulla scheda Log.
- Seleziona Log container o Log pod per filtrare la visualizzazione dei log.
In alternativa, per visualizzare i log dei container, compila le variabili nel seguente URL, copialo e incollalo nel browser:
https://console.cloud.google.com/logs/query;query=;storageScope=storage,projects%2FFLEET_HOST_PROJECT_ID%2Flocations%2Fglobal%2Fbuckets%2Ffleet-o11y-scope-SCOPE_NAME%2Fviews%2Ffleet-o11y-scope-SCOPE_NAME-k8s_container?jsmode=O&mods=pan_ng2&project=FLEET_HOST_PROJECT_ID
Per visualizzare i log dei pod in un ambito del parco risorse specifico, compila le variabili nel seguente URL, copialo e incollalo nel browser:
https://console.cloud.google.com/logs/query;query=;storageScope=storage,projects%2FFLEET_HOST_PROJECT_ID%2Flocations%2Fglobal%2Fbuckets%2Ffleet-o11y-scope-SCOPE_NAME%2Fviews%2Ffleet-o11y-scope-SCOPE_NAME-k8s_pod?jsmode=O&mods=pan_ng2&project=FLEET_HOST_PROJECT_ID
Per ulteriori informazioni su come analizzare i dati dei log, vedi Interfaccia di Esplora log.
Disattivare la registrazione dei log della flotta
Per disattivare la funzionalità di logging della flotta, completa i seguenti passaggi:
gcloud
Salva la seguente configurazione in un file denominato
disable_logging_config.json
:{ "loggingConfig": {} }
Aggiorna la specifica della funzionalità
fleetobservability
:gcloud container fleet fleetobservability update \ --logging-config=disable_logging_config.json
Terraform
Nella configurazione Terraform, aggiorna tutte le modalità di routing dei log a MODE_UNSPECIFIED
. Ecco un esempio:
resource "google_gke_hub_feature" "feature" {
name = "fleetobservability"
location = "global"
spec {
fleetobservability {
logging_config {
default_config {
mode = "MODE_UNSPECIFIED"
}
fleet_scope_logs_config {
mode = "MODE_UNSPECIFIED"
}
}
}
}
}
Verifica che la specifica della funzionalità sia aggiornata:
gcloud container fleet fleetobservability describe
L'output mostra la specifica fleetobservability
aggiornata con la tua configurazione:
createTime: '2022-09-30T16:05:02.222568564Z' membershipStates: projects/123456/locations/global/memberships/cluster-1: state: code: OK description: Fleet monitoring enabled. updateTime: '2023-04-03T20:22:51.436047872Z' name: projects/123456/locations/global/features/fleetobservability resourceState: state: ACTIVE spec: fleetobservability: loggingConfig: {} state: state: {} updateTime: '2023-04-03T20:38:17.719596966Z'
L'applicazione delle modifiche apportate alla specifica fleetobservability
potrebbe richiedere alcuni minuti.
Dopo aver disattivato la registrazione della flotta, i sink di log e i filtri di esclusione verranno rimossi dai tuoi progetti. Tuttavia, verranno conservati tutti i bucket di log creati per l'ambito e le visualizzazioni dei log create nel bucket di log. Per eliminare il bucket dei log nel progetto host del parco risorse, consulta Eliminare un bucket.
Aggiorna il periodo di conservazione per i bucket di log
Il periodo di conservazione predefinito di un bucket di log è di 30 giorni. Per aggiornare questo periodo, esegui il comando seguente:
gcloud logging buckets update fleet-o11y-scope-SCOPE_NAME --location=global --retention-days=RETENTION_DAYS
dove:
SCOPE_NAME è il nome dell'ambito del parco risorse.
RETENTION_DAYS è il numero di giorni del nuovo periodo di conservazione. Per altre opzioni di configurazione dei bucket di log, vedi Gestire i bucket.
Se estendi il periodo di conservazione di un bucket, le regole di conservazione si applicano in futuro e non retroattivamente. I log non possono essere recuperati dopo la fine del periodo di conservazione applicabile.
Riferimento API
Questa sezione fornisce informazioni sui possibili campi che puoi aggiungere all'oggetto fleetobservability
.
fleetobservability
fleetobservability
definisce la configurazione dell'osservabilità del parco risorse.
Campo | Descrizione | Schema | Facoltativo |
---|---|---|---|
loggingConfig | Specifica se la funzionalità di logging del parco risorse è abilitata per l'intero parco risorse. Se non specificata, la funzionalità di logging della flotta è disattivata per l'intera flotta. |
loggingConfig | Vero |
loggingConfig
loggingConfig
definisce la configurazione delle funzionalità di logging del parco risorse in Osservabilità del parco risorse.
Campo | Descrizione | Schema | Facoltativo |
---|---|---|---|
defaultConfig | Imposta il comportamento di routing dei log per i log predefiniti nel parco risorse. | routingConfig | Vero |
fleetScopeLogsConfig | Imposta il comportamento di routing dei log per i log con ambito del parco risorse. | routingConfig | Vero |
routingConfig
routingConfig
definisce la configurazione della modalità di routing dei log nella funzionalità di logging del parco risorse.
Campo | Descrizione | Schema | Facoltativo |
---|---|---|---|
modalità | Specificato per attivare il routing dei log e non specificato o MODE_UNSPECIFIED per disattivarlo. Se impostato su COPY, i log verranno copiati nel progetto di destinazione. Se impostato su MOVE, i log verranno spostati nel progetto di destinazione. |
Stringa; uno dei seguenti valori: MOVE, COPY e MODE_UNSPECIFIED | Vero |
Restrizioni di denominazione
Quando l'osservabilità del parco risorse è abilitata, il controller di osservabilità del parco risorse riserva i seguenti nomi per gli oggetti log che crea. Per evitare comportamenti indesiderati o imprevisti, devi evitare di utilizzare questi nomi quando crei bucket di log, sink e imposti filtri di esclusione.
Funzionalità attivata | Oggetto creato | Nome utilizzato dall'osservabilità del parco risorse |
---|---|---|
defaultConfig |
Sink | fleet-o11y-FLEET_PROJECT_NUMBER-default |
Filtro di esclusione. | fleet-o11y-FLEET_PROJECT_NUMBER-default-exclusion . Questo nome è riservato nel sink _Default del progetto cluster. |
|
fleetScopeLogsConfig |
Bucket di log | fleet-o11y-scope-SCOPE_NAME |
fleet-o11y-scope-SCOPE_NAME-k8s_container |
||
fleet-o11y-scope-SCOPE_NAME-k8s_pod |
||
Sink | fleet-o11y-FLEET_PROJECT_NUMBER-scope-SCOPE_NAME |
|
Filtro di esclusione | fleet-o11y-FLEET_PROJECT_NUMBER-scope-exclusion |
Risoluzione dei problemi
Questa sezione descrive come risolvere i problemi relativi alla registrazione della flotta.
Notifica via email relativa all'errore di configurazione del sink
Se hai ricevuto un'email con il titolo [ACTION REQUIRED] Cloud Logging sink configuration error in <Your GCP Project>
, significa che l'account di servizio del sink di log non dispone dell'autorizzazione per scrivere i log nella destinazione del sink. Per risolvere il problema, segui i passaggi descritti in Autorizzazioni di logging tra progetti.
Messaggio di errore sconosciuto dall'interfaccia utente di Cloud Logging
Se visualizzi il seguente errore nell'interfaccia utente di Cloud Logging, controlla che le variabili project_id
e scope
inserite nell'URL siano corrette.
Error: There is an unknown error while executing this operation.
Errore Abbonamento non trovato
Potresti visualizzare il seguente errore:
ERROR: (gcloud.alpha.container.fleet.memberships.bindings.create) NOT_FOUND: Resource 'parent resource not found for projects/...' was not found
Assicurati di aver registrato il cluster in un parco risorse.