Questo argomento spiega come esportare log e metriche da un cluster GKE su AWS a Cloud Logging e Cloud Monitoring.
Panoramica
Esistono diverse opzioni per il logging e il monitoraggio con GKE su AWS. GKE Enterprise può essere integrato con Cloud Logging e Cloud Monitoring. Poiché GKE Enterprise è basato su Kubernetes open source, sono compatibili molti strumenti open source e di terze parti.
Opzioni di logging e monitoraggio
Hai a disposizione diverse opzioni di logging e monitoraggio per il tuo cluster GKE Enterprise:
Esegui il deployment degli agenti di Cloud Logging e Cloud Monitoring per monitorare e visualizzare i log dei tuoi carichi di lavoro nella Google Cloud console. Questo argomento spiega questa soluzione.
Utilizza strumenti open source come Prometheus, Grafana ed Elasticsearch. Questo argomento non descrive questa soluzione.
Utilizza soluzioni di terze parti come Datadog. Questo argomento non descrive questa soluzione.
Cloud Logging e Cloud Monitoring
Con GKE Enterprise, Cloud Logging e Cloud Monitoring puoi creare dashboard, inviare avvisi, monitorare e esaminare i log per i carichi di lavoro in esecuzione sul tuo cluster. Devi configurare gli agenti Cloud Logging e Cloud Monitoring per raccogliere log e metriche nel tuo Google Cloud progetto. Se non configuri questi agenti, GKE su AWS non raccoglie i dati di logging o monitoraggio.
Quali dati vengono raccolti
Una volta configurati, gli agenti raccolgono i log e i dati delle metriche dal cluster e
dai workload in esecuzione sul cluster. Questi dati vengono archiviati nel tuo
Google Cloud progetto. Configura l'ID progetto nel campo project_id
in un file di configurazione quando
installi il forwarder dei log.
I dati raccolti includono:
- Log per i servizi di sistema su ciascun nodo worker.
- Log delle applicazioni per tutti i carichi di lavoro in esecuzione nel cluster.
- Metriche per i servizi di cluster e di sistema. Per saperne di più su metriche specifiche, consulta Metriche di GKE Enterprise.
- Se le tue applicazioni sono configurate con target di scraping di Prometheus e sono annotate con una configurazione che include
prometheus.io/scrape
,prometheus.io/path
eprometheus.io/port
, le metriche dell'applicazione per i pod.
Gli agenti possono essere disattivati in qualsiasi momento. Per ulteriori informazioni, consulta la sezione Pulizia. I dati raccolti dagli agenti possono essere gestiti ed eliminati come qualsiasi altra metrica e dati dei log, come descritto nella documentazione di Cloud Monitoring e Cloud Logging.
I dati dei log vengono archiviati in base alle regole di conservazione configurate. La conservazione dei dati delle metriche varia in base al tipo.
Componenti di logging e monitoraggio
Per esportare la telemetria a livello di cluster da GKE su AWS in Google Cloud, esegui il deployment dei seguenti componenti nel cluster:
- Stackdriver Log Forwarder (stackdriver-log-forwarder-*). Un Fluentbit daemon che inoltra i log da ogni nodo Kubernetes a Cloud Logging.
- Agente delle metriche GKE (gke-metrics-agent-*). Un DaemonSet basato su OpenTelemetry Collector che raccoglie i dati delle metriche e li inoltra a Cloud Monitoring.
I manifest per questi componenti si trovano nel repository anthos-samples su GitHub.
Prerequisiti
Un progetto Google Cloud con la fatturazione abilitata. Per ulteriori informazioni sui costi, consulta la pagina Prezzi di Google Cloud Observability.
Inoltre, nel progetto devono essere attivate le API Cloud Logging e Cloud Monitoring. Per abilitare queste API, esegui i seguenti comandi:
gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
Un ambiente GKE su AWS, incluso un cluster di utenti registrato con Connect. Esegui il comando seguente per verificare che il cluster sia registrato.
gcloud container fleet memberships list
Se il cluster è registrato, Google Cloud CLI stampa il nome e l'ID del cluster.
NAME EXTERNAL_ID cluster-0 1abcdef-1234-4266-90ab-123456abcdef
Se il tuo cluster non è presente nell'elenco, consulta Connessione a un cluster con Connect
Installa lo strumento a riga di comando
git
sulla tua macchina.
Configurazione delle autorizzazioni per Google Cloud Observability
Gli agenti di logging e monitoraggio utilizzano Workload Identity del parco per comunicare con Cloud Logging e Cloud Monitoring. L'identità deve disporre delle autorizzazioni per scrivere log e metriche nel progetto. Per aggiungere le autorizzazioni, esegui i seguenti comandi:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:PROJECT_ID.svc.id.goog[kube-system/stackdriver]" \
--role=roles/logging.logWriter
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:PROJECT_ID.svc.id.goog[kube-system/stackdriver]" \
--role=roles/monitoring.metricWriter
Sostituisci PROJECT_ID
con il tuo Google Cloud progetto.
Connettiti al bastion host
Per connetterti alle risorse GKE su AWS, segui questi passaggi. Seleziona se hai già un VPC AWS (o una connessione diretta al tuo VPC) o se hai creato un VPC dedicato durante la creazione del servizio di gestione.
VPC esistente
Se hai una connessione diretta o VPN a un VPC esistente, ometti la rigaenv HTTP_PROXY=http://localhost:8118
dai comandi in questo argomento.
VPC dedicato
Quando crei un servizio di gestione in una VPC dedicata, GKE su AWS include un host bastion in una subnet pubblica.
Per connetterti al servizio di gestione:
Passa alla directory con la configurazione di GKE su AWS. Hai creato questa directory durante la installazione del servizio di gestione.
cd anthos-aws
Per aprire il tunnel, esegui lo script
bastion-tunnel.sh
. Il tunnel inoltra alocalhost:8118
.Per aprire un tunnel per l'bastion host, esegui il seguente comando:
./bastion-tunnel.sh -N
I messaggi del tunnel SSH vengono visualizzati in questa finestra. Quando è tutto pronto, chiudi la connessione interrompendo il processo con Ctrl+C o chiudendo la finestra.
Apri un nuovo terminale e passa alla directory
anthos-aws
.cd anthos-aws
Verifica di essere in grado di connetterti al cluster con
kubectl
.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
L'output include l'URL del server dell'API del servizio di gestione.
Cloud Logging e Cloud Monitoring sui nodi del piano di controllo
Con GKE on AWS 1.8.0 e versioni successive, Cloud Logging e Cloud Monitoring per i nodi del piano di controllo possono essere configurati automaticamente durante la creazione di nuovi cluster utente. Per abilitare Cloud Logging o Cloud Monitoring, compila la sezione controlPlane.cloudOperations
della configurazione AWSCluster
.
cloudOperations:
projectID: PROJECT_ID
location: GC_REGION
enableLogging: ENABLE_LOGGING
enableMonitoring: ENABLE_MONITORING
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progetto.GC_REGION
: la Google Cloud regione in cui vuoi archiviare i log. Scegli una regione vicina alla regione AWS. Per saperne di più, consulta Località globali - Regioni e zone ad esempious-central1
.ENABLE_LOGGING
:true
ofalse
, a seconda che Cloud Logging sia abilitato sui nodi del piano di controllo.ENABLE_MONITORING
:true
ofalse
, a seconda che Cloud Monitoring sia abilitato sui nodi del piano di controllo.
Poi, segui i passaggi descritti in Creare un cluster utente personalizzato .
Cloud Logging e Cloud Monitoring sui nodi di lavoro
Rimozione della versione precedente
Se hai configurato una versione precedente degli agenti di monitoraggio e registrazione che include stackdriver-log-aggregator
(Fluentd) e stackdriver-prometheus-k8s
(Prometheus), ti consigliamo di disinstallarli prima di procedere.
Installazione del forwarder di log
In questa sezione, installerai Stackdriver Log Forwarder nel tuo cluster.
Dalla directory
anthos-samples/aws-logging-monitoring/
, vai alla directorylogging/
.cd logging/
Modifica il file
forwarder.yaml
in base alla configurazione del progetto:sed -i "s/PROJECT_ID/PROJECT_ID/g" forwarder.yaml sed -i "s/CLUSTER_NAME/CLUSTER_NAME/g" forwarder.yaml sed -i "s/CLUSTER_LOCATION/GC_REGION/g" forwarder.yaml
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progetto.CLUSTER_NAME
: il nome del cluster, ad esempiocluster-0
GC_REGION
: la Google Cloud regione in cui vuoi archiviare i log. Scegli una regione vicina alla regione AWS. Per saperne di più, consulta Località globali - Regioni e zone ad esempious-central1
.
(Facoltativo) In base ai tuoi carichi di lavoro, al numero di nodi nel cluster e al numero di pod per nodo, potresti dover impostare le richieste di risorse di memoria e CPU. Per ulteriori informazioni, consulta la pagina relativa alle allocazioni consigliate di CPU e memoria.
Dalla directory
anthos-aws
, utilizzaanthos-gke
per cambiare contesto e passare al cluster di utenti. Sostituisci CLUSTER_NAME con il nome del cluster di utenti.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Crea l'account di servizio
stackdriver
, se non esiste, ed esegui il deployment del forwarder dei log nel cluster.env HTTPS_PROXY=http://localhost:8118 \ kubectl create serviceaccount stackdriver -n kube-system env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f forwarder.yaml
Utilizza
kubectl
per verificare che i pod siano stati avviati.env HTTPS_PROXY=http://localhost:8118 \ kubectl get pods -n kube-system | grep stackdriver-log
Dovresti vedere un pod di inoltro per nodo in un pool di nodi. Ad esempio, in un cluster di 6 nodi dovresti vedere sei pod di inoltro.
stackdriver-log-forwarder-2vlxb 2/2 Running 0 21s stackdriver-log-forwarder-dwgb7 2/2 Running 0 21s stackdriver-log-forwarder-rfrdk 2/2 Running 0 21s stackdriver-log-forwarder-sqz7b 2/2 Running 0 21s stackdriver-log-forwarder-w4dhn 2/2 Running 0 21s stackdriver-log-forwarder-wrfg4 2/2 Running 0 21s
Testare l'inoltro dei log
In questa sezione esegui il deployment di un carico di lavoro contenente un server web HTTP di base con un generatore di carico nel cluster. Poi, verifica che i log siano presenti in Cloud Logging.
Prima di installare questo carico di lavoro, puoi verificare i manifest per il server web e il generatore di carico.
Esegui il deployment del server web e del generatore di carico nel cluster.
env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/istio-samples/master/sample-apps/helloserver/server/server.yaml env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/istio-samples/master/sample-apps/helloserver/loadgen/loadgen.yaml
Per verificare di poter visualizzare i log del tuo cluster nella dashboard di Cloud Logging, vai a Esplora log nella Google Cloud console:
Copia la query di esempio riportata di seguito nel campo Query Builder.
resource.type="k8s_container" resource.labels.cluster_name="CLUSTER_NAME"
Sostituisci CLUSTER_NAME con il nome del cluster.
Fai clic su Esegui query. Dovresti vedere i log recenti del cluster in Risultati delle query.
Dopo aver verificato che i log appaiano nei risultati della query, rimuovi il generatore di carico e il server web.
env HTTPS_PROXY=http://localhost:8118 \ kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/istio-samples/master/sample-apps/helloserver/loadgen/loadgen.yaml env HTTPS_PROXY=http://localhost:8118 \ kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/istio-samples/master/sample-apps/helloserver/server/server.yaml
Installazione del raccoglitore delle metriche
In questa sezione installerai un agente per inviare dati a Cloud Monitoring.
Dalla directory
anthos-samples/aws-logging-monitoring/logging/
, vai alla directoryanthos-samples/aws-logging-monitoring/monitoring/
.cd ../monitoring
Modifica il file
gke-metrics-agent.yaml
in base alla configurazione del progetto:sed -i "s/PROJECT_ID/PROJECT_ID/g" gke-metrics-agent.yaml sed -i "s/CLUSTER_NAME/CLUSTER_NAME/g" gke-metrics-agent.yaml sed -i "s/CLUSTER_LOCATION/GC_REGION/g" gke-metrics-agent.yaml
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progetto.CLUSTER_NAME
: il nome del cluster, ad esempiocluster-0
GC_REGION
: la Google Cloud regione in cui vuoi archiviare i log. Scegli una regione vicina alla regione AWS. Per saperne di più, consulta Località globali - Regioni e zone ad esempious-central1
.
(Facoltativo) In base ai tuoi carichi di lavoro, al numero di nodi nel cluster e al numero di pod per nodo, potresti dover impostare le richieste di risorse di memoria e CPU. Per ulteriori informazioni, consulta la pagina relativa alle allocazioni consigliate di CPU e memoria.
Crea l'account di servizio
stackdriver
, se non esiste, e esegui il deployment dell'agente di misurazione nel cluster.env HTTPS_PROXY=http://localhost:8118 \ kubectl create serviceaccount stackdriver -n kube-system env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f gke-metrics-agent.yaml
Utilizza lo strumento
kubectl
per verificare che il podgke-metrics-agent
sia in esecuzione.env HTTPS_PROXY=http://localhost:8118 \ kubectl get pods -n kube-system | grep gke-metrics-agent
Dovresti vedere un pod dell'agente per nodo in un pool di nodi. Ad esempio, in un cluster di 3 nodi, dovresti vedere tre pod di agenti.
gke-metrics-agent-gjxdj 2/2 Running 0 102s gke-metrics-agent-lrnzl 2/2 Running 0 102s gke-metrics-agent-s6p47 2/2 Running 0 102s
Per verificare che le metriche del cluster vengano esportate in Cloud Monitoring, vai a Metrics Explorer nella Google Cloud console:
In Esplora metriche, fai clic su Editor di query e poi copia il seguente comando:
fetch k8s_container | metric 'kubernetes.io/anthos/otelcol_exporter_sent_metric_points' | filter resource.project_id == 'PROJECT_ID' && (resource.cluster_name =='CLUSTER_NAME') | align rate(1m) | every 1m
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progetto.CLUSTER_NAME
: il nome del cluster utilizzato per creare un cluster utente, ad esempiocluster-0
.
Fai clic su Esegui query. Viene visualizzato il tasso di punti metrici inviati a Cloud Monitoring da ogni pod
gke-metrics-agent
nel cluster.Ecco alcune altre metriche che vale la pena provare:
kubernetes.io/anthos/container_memory_working_set_bytes
: utilizzo della memoria del contenitore.kubernetes.io/anthos/container_cpu_usage_seconds_total
: utilizzo della CPU del container.kubernetes.io/anthos/apiserver_aggregated_request_total
: numero di richieste di kube-apiserver, disponibile solo se Cloud Monitoring è abilitato nel piano di controllo.
Per un elenco completo delle metriche disponibili, consulta Metriche di Anthos. Per informazioni su come utilizzare l'interfaccia utente, consulta Metrics Explorer.
Creazione di una dashboard in Cloud Monitoring
In questa sezione, crei una dashboard di Cloud Monitoring che monitora lo stato dei contenitori nel cluster.
Dalla directory
anthos-samples/aws-logging-monitoring/monitoring/
, passa alla directoryanthos-samples/aws-logging-monitoring/monitoring/dashboards
.cd dashboards
Sostituisci le istanze della stringa
CLUSTER_NAME
inpod-status.json
con il nome del cluster.sed -i "s/CLUSTER_NAME/CLUSTER_NAME/g" pod-status.json
Sostituisci
CLUSTER_NAME
con il nome del cluster.Crea una dashboard personalizzata con il file di configurazione eseguendo il seguente comando:
gcloud monitoring dashboards create --config-from-file=pod-status.json
Per verificare che la dashboard sia stata creata, vai a Dashboard di Cloud Monitoring nella Google Cloud console.
Apri la dashboard appena creata con un nome nel formato di
CLUSTER_NAME (Anthos cluster on AWS) pod status
.
Pulizia
In questa sezione, rimuovi i componenti di logging e monitoraggio dal cluster.
Elimina la dashboard di monitoraggio nella visualizzazione elenco Dashboard della Google Cloud console facendo clic sul pulsante Elimina associato al nome della dashboard.
Passa alla directory
anthos-samples/aws-logging-monitoring/
.cd anthos-samples/aws-logging-monitoring
Per rimuovere tutte le risorse create in questa guida, esegui i seguenti comandi:
env HTTPS_PROXY=http://localhost:8118 \ kubectl delete -f logging/ env HTTPS_PROXY=http://localhost:8118 \ kubectl delete -f monitoring/
Allocazioni di CPU e memoria consigliate
Questa sezione include le CPU e le allocazioni consigliate per i singoli componenti utilizzati per il logging e il monitoraggio. Ciascuna delle seguenti tabelle elenca le richieste di CPU e memoria per un cluster con una serie di dimensioni dei nodi. Imposti le richieste di risorse per un componente nel file elencato nella tabella.
Per ulteriori informazioni, consulta Best practice di Kubernetes: richieste e limiti delle risorse e Gestire le risorse per i container.
1-10 nodi
File | Risorsa | Richieste di CPU | Limiti della CPU | Richieste di memoria | Limiti di memoria |
---|---|---|---|---|---|
monitoring/gke-metrics-agent.yaml |
gke-metrics-agent | 30 min | 100m | 50Mi | 500 milioni |
logging/forwarder.yaml |
stackdriver-log-forwarder | 50m | 100m | 100Mi | 600Mi |
10-100 nodi
File | Risorsa | Richieste di CPU | Limiti della CPU | Richieste di memoria | Limiti di memoria |
---|---|---|---|---|---|
monitoring/gke-metrics-agent.yaml |
gke-metrics-agent | 50m | 100m | 50Mi | 500 milioni |
logging/forwarder.yaml |
stackdriver-log-forwarder | 60 min | 100m | 100Mi | 600Mi |
Più di 100 nodi
File | Risorsa | Richieste di CPU | Limiti della CPU | Richieste di memoria | Limiti di memoria |
---|---|---|---|---|---|
monitoring/gke-metrics-agent.yaml |
gke-metrics-agent | 50m | 100m | 100Mi | N/D |
logging/forwarder.yaml |
stackdriver-log-forwarder | 60 min | 100m | 100Mi | 600Mi |
Passaggi successivi
Scopri di più su Cloud Logging:
- Panoramica di Cloud Logging
- Utilizzare Esplora log
- Creazione di query per Cloud Logging
- Creare metriche basate su log