Osservabilità con Envoy
Questo documento illustra come generare il monitoraggio e la registrazione per il proxy Envoy. Mostra inoltre come esportare le informazioni Cloud Trace e Cloud Logging.
L'utilizzo di un service mesh ti consente di osservare il traffico verso e da i servizi, il che consente un monitoraggio e un debug più approfonditi senza modifiche al codice nel servizio stesso. Nell'architettura proxy sidecar Utilizza Cloud Service Mesh, il proxy è il componente che elabora le richieste e fornisce le informazioni di telemetria necessarie. Le informazioni di telemetria devono essere raccolte e archiviate in un'unica posizione per un uso successivo, ad esempio analisi dei dati, avvisi e risoluzione dei problemi.
Configurazione della dimostrazione
Questo documento utilizza la seguente configurazione per dimostrare il monitoraggio e il logging:
- una singola applicazione che rimane in ascolto sulla porta HTTP e restituisce nome host dell'istanza della macchina virtuale (VM) che ha gestito la richiesta. Nel diagramma, questa applicazione si trova nell'angolo in alto a destra ed è etichettata come Servizio/i HTTP (10.10.10.10:80). Il servizio può essere fornito da una o più VM.
- Una singola VM Compute Engine che esegue un consumatore di questo servizio. Nel diagramma, è etichettata come VM Compute Engine di prova.
- Un proxy sidecar Envoy installato e configurato da Cloud Service Mesh. Nel diagramma, è etichettato come envoy.
- Un'applicazione consumer di servizi, mostrata nel riquadro a sinistra, è il consumer del servizio HTTP in esecuzione su
10.10.10.10:80
.
I passaggi che seguono corrispondono alle etichette numerate nel diagramma:
Cloud Service Mesh configura il proxy Envoy per:
- Bilancia il carico del traffico per il servizio
10.10.10.10:80
. - Archivia le informazioni del log degli accessi per ogni richiesta effettuata per questo servizio.
- Genera informazioni di monitoraggio per il servizio.
- Bilancia il carico del traffico per il servizio
Dopo che il consumatore invia una richiesta a
10.10.10.10
, il proxy sidecar indirizza la richiesta alla destinazione corretta.Il proxy sidecar genera anche le informazioni di telemetria necessarie:
- Aggiunge una voce al log di accesso sul disco locale con informazioni aggiuntive sulla richiesta.
- Genera una voce di traccia e la invia a Trace utilizzando il monitoraggio di Envoy di OpenCensus.
L'agente Logging esporta questi dati nell'API Cloud Logging. in modo che i dati diventino disponibili nell'interfaccia di Cloud Logging.
Prerequisiti
Prima di completare i passaggi di configurazione, assicurati di aver eseguito quanto segue:
- L'API Traffic Director è abilitata e gli altri prerequisiti sono soddisfatti, come descritto in Preparazione della configurazione con VM e carichi di lavoro proxyless.
- L'API Cloud Trace è abilitata.
- L'account di servizio utilizzato dalla VM di Compute Engine ha
i seguenti ruoli IAM (Identity and Access Management) configurati:
- Ruolo Cloud Trace Agent
(
roles/cloudtrace.agent
) - Ruolo Scrittore di log
(
roles/logging.logWriter
)
- Ruolo Cloud Trace Agent
(
- Le regole firewall consentono il traffico sulla VM configuralo nell'ambito di questa configurazione.
Configura il servizio di dimostrazione e Cloud Service Mesh
Questo documento utilizza diversi script shell per eseguire i passaggi necessari per configurare il servizio di dimostrazione. Esamina gli script per comprendere passaggi specifici che esegue.
Avvia una VM Compute Engine e configura il servizio HTTP sulla VM:
curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_service.sh chmod 755 setup_demo_service.sh && ./setup_demo_service.sh
Lo script
setup_demo_service.sh
crea un modello VM che avvia apache2 all'avvio di una VM e un gruppo di istanze gestite che utilizza questo modello. Lo script avvia una singola istanza senza la scalabilità automatica abilitata.Utilizza Cloud Service Mesh per configurare il routing per il servizio
10.10.10.10
:curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_trafficdirector.sh chmod 755 setup_demo_trafficdirector.sh && ./setup_demo_trafficdirector.sh
Lo script
setup_demo_trafficdirector.sh
configura i parametri necessari per il servizio gestito Cloud Service Mesh.Avvia una VM Compute Engine che esegue un consumatore del servizio HTTP con il proxy sidecar installato e configurato sulla VM. Nella seguente comando, sostituisci
PROJECT_ID
con il progetto ID a cui devono essere inviate le informazioni di Trace. In genere, si tratta dello stesso progetto Google Cloud a cui appartiene la VM.curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_client.sh chmod 755 setup_demo_client.sh && ./setup_demo_client.sh PROJECT_ID
Lo script
setup_demo_client.sh
crea una VM Compute Engine con un'istanza Proxy Envoy preconfigurato per l'utilizzo di Cloud Service Mesh.
Le seguenti impostazioni di configurazione aggiuntive attivano il monitoraggio e il logging:
- Le variabili dei metadati dei nodi di bootstrap
TRAFFICDIRECTOR_ACCESS_LOG_PATH
eTRAFFICDIRECTOR_ENABLE_TRACING
attivano il logging e il tracing, come descritto in Configurare gli attributi di bootstrap di Envoy per Cloud Service Mesh. - La configurazione di bootstrap statico consente l'esportazione di informazioni di traccia in Trace con OpenCensus.
Dopo aver eseguito questi script, puoi accedere all'td-observability-demo-client
VM e accedi al servizio HTTP disponibile all'indirizzo 10.10.10.10
:
curl http://10.10.10.10
A questo punto, Envoy genera informazioni di logging e tracciamento dell'accesso. La la sezione seguente descrive come esportare i log e le informazioni di tracciamento.
Configura l'esportazione della traccia in Cloud Trace
La configurazione di bootstrap di Envoy creata quando hai eseguito lo script setup-demo-client.sh
è sufficiente per generare informazioni di monitoraggio.
Tutte le altre configurazioni sono facoltative. Se vuoi configurare altre
vedi i parametri
Pagina di configurazione di OpenCensus Envoy
e modificare le opzioni di tracciamento
nella configurazione di bootstrap di Envoy.
Dopo aver inviato una richiesta di esempio al server di dimostrazione (curl
10.10.10.10
), nella console Google Cloud vai all'interfaccia di Trace
(Trace > Elenco di tracce).
Viene visualizzato un record di traccia che corrisponde alla richiesta che hai emesso.
Per ulteriori informazioni su come utilizzare Trace, consulta Documentazione di Cloud Trace.
Configurare l'esportazione dei log di accesso in Logging
A questo punto, Envoy dovrebbe registrare le informazioni dei log di accesso sul disco locale della VM in cui è in esecuzione. Per esportare questi record in Logging, devi installare l'agente Logging localmente. Questo richiede l'installazione e la configurazione dell'agente Logging.
Installazione dell'agente Logging
Installa l'agente Logging sulla VM da cui vengono esportate le informazioni di log. In questa configurazione di esempio, la VM
td-observability-demo-vm
.
curl -sSO https://dl.google.com/cloudagents/add-logging-agent-repo.sh sudo bash add-logging-agent-repo.sh --also-install
Per ulteriori informazioni, consulta Installare l'agente Cloud Logging su una singola VM.
Configurazione dell'agente Logging
Puoi esportare i log di Envoy come testo non strutturato o strutturato.
Esportare i log di Envoy come testo non strutturato
Questa opzione esporta i record dei log dal log degli accessi a Cloud Logging come testo non elaborato. Ogni voce del log di accesso viene esportata come voce singola in Logging. Questa configurazione è più facile da installare perché si basa su un parser distribuito con la versione corrente dell'agente Logging. Tuttavia, è più probabile difficili da filtrare ed elaborare le voci di log in formato non elaborato quando si utilizza questa opzione.
Scarica e installa la configurazione di esportazione non strutturata del log di accesso di Envoy file:
curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/envoy_access_fluentd_unstructured.conf sudo cp envoy_access_fluentd_unstructured.conf /etc/google-fluentd/config.d/envoy_access.conf
Riavviare l'agente. Le modifiche vengono applicate all'avvio dell'agente:
sudo service google-fluentd restart
Esporta i log Envoy come testo strutturato
Installa il parser dei log di accesso di Envoy da GitHub:
sudo /opt/google-fluentd/embedded/bin/gem install fluent-plugin-envoy-parser
Scarica e installa il file di configurazione per esportare i log di accesso di Envoy in un formato strutturato:
curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/envoy_access_fluentd_structured.conf sudo cp envoy_access_fluentd_structured.conf /etc/google-fluentd/config.d/envoy_access.conf
Riavviare l'agente. Le modifiche vengono applicate all'avvio dell'agente:
sudo service google-fluentd restart
Per ulteriori informazioni, vedi Configura l'agente Logging.
Verificare la configurazione
- Dalla VM proxy sidecar, genera una richiesta al servizio di dimostrazione.
Viene creato un nuovo record del log locale. Ad esempio, puoi eseguire
curl 10.10.10.10
. - Nella console Google Cloud, vai a Logging > Esplora log. Nel menu a discesa, seleziona il tipo di log envoy-access. Viene visualizzata una voce di log per la richiesta più recente nel formato non strutturato o strutturato, a seconda del tipo di configurazione scelto in precedenza.
Risoluzione dei problemi
Leggi le sezioni seguenti per informazioni su come risolvere diversi problemi di osservabilità con Envoy.
Configura il tracciamento in più progetti
Se vuoi monitorare le richieste tra gli Envoy di cui è stato eseguito il deployment in più progetti, tieni presente quanto segue:
- Ogni Envoy deve essere configurato con le credenziali del progetto in cui in esecuzione.
- Ogni Envoy invia al progetto i dati di traccia che corrispondono alle credenziali. con cui è in esecuzione.
- Puoi visualizzare gli intervalli di monitoraggio per le richieste tra progetti se le tue applicazioni conservano il valore dell'intestazione HTTP
X-Cloud-Trace-Context
quando vengono effettuate le richieste.
Compatibilità dei trace con le applicazioni gRPC senza proxy
La configurazione del tracciamento OpenCensus di Envoy consente le tracce esportate da proxyless
la piena compatibilità delle applicazioni gRPC e dei proxy Envoy all'interno di un servizio
mesh. Per la compatibilità, il bootstrap di Envoy deve configurare il contesto della traccia in modo da includere il formato della traccia GRPC_TRACE_BIN
nel proprio OpenCensusConfig
, come segue:
tracing: http: name: envoy.tracers.opencensus typed_config: "@type": type.googleapis.com/envoy.config.trace.v2.OpenCensusConfig stackdriver_exporter_enabled: "true" stackdriver_project_id: "PROJECT_ID" incoming_trace_context: ["CLOUD_TRACE_CONTEXT", "GRPC_TRACE_BIN"] outgoing_trace_context: ["CLOUD_TRACE_CONTEXT", "GRPC_TRACE_BIN"]
Se la configurazione è completa, ma non vedi voci di traccia o di logging disponibile, verifica quanto segue:
- Gli account di servizio per la VM Compute Engine dispongono delle autorizzazioni IAM di monitoraggio e logging necessarie, come specificato nei prerequisiti. Per informazioni sulle autorizzazioni IAM di Trace, consulta Controllo dell'accesso. Per informazioni sulle autorizzazioni di Logging, consulta Controllo dell'accesso.
- Per la registrazione: assicurati che non siano presenti errori in
/var/log/google-fluentd/google-fluentd.log
. - Per la registrazione: assicurati che nuove voci vengano visualizzate nel file del log di accesso locale quando vengono inviate le richieste.
Passaggi successivi
- Per trovare informazioni correlate, consulta Osservabilità con applicazioni gRPC senza proxy.
- Per informazioni generali sulla risoluzione dei problemi di Cloud Service Mesh, consulta Risoluzione dei problemi di implementazione che utilizzano Envoy.