Osservabilità con Envoy

Questo documento illustra come generare tracciamento e logging per Envoy proxy. Mostra inoltre come esportare le informazioni Cloud Trace e Cloud Logging.

L'utilizzo di un mesh di servizi consente di osservare il traffico da e verso che consentono un monitoraggio e un debug più efficaci senza dover apportare 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 raccolti e archiviati in una posizione centralizzata per un ulteriore utilizzo, come i dati per l'analisi, gli avvisi e la risoluzione dei problemi.

Configurazione della dimostrazione

Questo documento utilizza la seguente configurazione per dimostrare il tracciamento e 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, con un'etichetta Servizi HTTP (10.10.10.10:80). Il servizio può essere fornito da una o più VM.
  • Una singola VM di Compute Engine che esegue un consumer di questo servizio. Nel nel diagramma, questa è etichettata come VM Compute Engine demo.
  • Un proxy sidecar Envoy installato e configurato da Cloud Service Mesh. Nel diagramma, è etichettato come envoy.
  • Un'applicazione consumer di servizi, mostrata nella casella a sinistra, è consumer del servizio HTTP in esecuzione su 10.10.10.10:80.
. Applicazione dimostrativa per il logging e il monitoraggio per Envoy.
Applicazione dimostrativa per il logging e il monitoraggio per Envoy (fai clic per ingrandire)

I seguenti passaggi corrispondono alle etichette numerate nel diagramma:

  1. 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.
    • Generare informazioni di tracciamento per il servizio.
  2. Dopo che il consumatore invia una richiesta a 10.10.10.10, il proxy sidecar instrada la richiesta alla destinazione corretta.

  3. Il proxy sidecar genera anche le informazioni di telemetria necessarie:

    1. Aggiunge una voce al log di accesso sul disco locale con le informazioni aggiuntive sulla richiesta.
    2. Genera una voce di traccia e la invia a Trace con il tracciamento di OpenCensus Envoy.
  4. 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 la procedura di configurazione, assicurati di eseguire le seguenti operazioni:

  1. L'API Traffic Director è abilitata e sono soddisfatti altri prerequisiti, come descritto in Preparati alla configurazione con carichi di lavoro VM e senza proxy.
  2. L'API Cloud Trace è abilitata.
  3. L'account di servizio utilizzato dalla VM di Compute Engine ha i seguenti ruoli IAM (Identity and Access Management) configurati:
  4. Le regole firewall consentono il traffico sulla VM configuralo nell'ambito di questa configurazione.

Configura il servizio dimostrativo e Cloud Service Mesh

Questo documento utilizza diversi script shell per eseguire i passaggi necessari per configurare il servizio dimostrativo. Esamina gli script per comprendere passaggi specifici che esegue.

  1. Avvia una VM di 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 di VM che viene avviato apache2 quando viene avviata una VM e un gruppo di istanze gestite che utilizza modello. Lo script avvia una singola istanza senza scalabilità automatica abilitata.

  2. 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 gli elementi necessari per il servizio gestito Cloud Service Mesh.

  3. Avvia una VM di Compute Engine che esegue un consumer dell'interfaccia 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. Questo è in genere è lo 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 abilitano il tracciamento e il logging:

  • TRAFFICDIRECTOR_ACCESS_LOG_PATH e TRAFFICDIRECTOR_ENABLE_TRACING le variabili di metadati dei nodi di bootstrap abilitano il logging e il tracciamento, come descritto in Configura 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 accesso e tracciamento. 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 tracciamento. 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 dimostrativo (curl 10.10.10.10), nella console Google Cloud vai all'interfaccia di Trace (Traccia > Trace 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.

Configura l'esportazione dei log degli accessi in Logging

In questa fase, Envoy dovrebbe registrare le informazioni del log di accesso nella del disco della VM 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 delle informazioni di logging. Per 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, vedi Installa l'agente Cloud Logging su una singola VM.

Configurazione dell'agente Logging

Puoi esportare i log di Envoy come testo non strutturato o strutturato.

Esporta i log 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 nel log di accesso viene esportata come voce singola in Logging. Questa configurazione è più facile perché si basa su un parser distribuito con i dati dell'agente Logging. Tuttavia, è più probabile difficili da filtrare ed elaborare le voci di log in formato non elaborato quando utilizzi questa opzione.

  1. 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
    
  2. Riavviare l'agente. Le modifiche vengono applicate all'avvio dell'agente:

    sudo service google-fluentd restart
    

Esporta i log Envoy come testo strutturato

  1. Installare l'analizzatore sintattico dei log di accesso di Envoy da GitHub:

    sudo /opt/google-fluentd/embedded/bin/gem install fluent-plugin-envoy-parser
    
  2. 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
    
  3. 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

  1. Dalla VM proxy sidecar, genera una richiesta al servizio dimostrativo. Viene creato un nuovo record di log locale. Ad esempio, puoi eseguire curl 10.10.10.10.
  2. Nella console Google Cloud, vai a Logging > Esplora log. Nel menu a discesa, seleziona il tipo di log envoy-access. Viene visualizzato un voce di log per la richiesta più recente nei di configurazione, a seconda del tipo di configurazione scelto in precedenza.

Risoluzione dei problemi

Leggi le sezioni seguenti per informazioni su come risolvere i problemi problemi con l'osservabilità con Envoy.

Configura il tracciamento in più progetti

Se desideri tenere traccia delle richieste tra gli Envoy di cui è stato eseguito il deployment in più 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 viene eseguito.
  • Puoi vedere gli intervalli di tracciamento per le richieste tra progetti se le tue applicazioni Conserva il valore dell'intestazione HTTP X-Cloud-Trace-Context quando vengono effettuate le richieste.

Trace la compatibilità con 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 garantire la compatibilità, il bootstrap Envoy deve configurare il contesto della traccia su includi il formato di traccia GRPC_TRACE_BIN nel relativo 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:

  1. Gli account di servizio per la VM di Compute Engine hanno IAM Trace e logging autorizzazioni, come specificato nei prerequisiti. Per informazioni su Tracciare le autorizzazioni IAM; consulta Controllo dell'accesso. Per informazioni sulle autorizzazioni di Logging, consulta Controllo dell'accesso.
  2. Per il logging: assicurati che non ci siano errori in /var/log/google-fluentd/google-fluentd.log.
  3. Per il logging: assicurati che le nuove voci vengano visualizzate nel file di log di accesso locale quando vengono emesse le richieste.

Passaggi successivi