Sichtbarkeit

Mit einem Service Mesh können Sie den Traffic zu und von Diensten beobachten, was eine umfassendere Überwachung und Fehlerbehebung ermöglicht, ohne Codeänderungen im Dienst selbst vornehmen zu müssen. In der von Traffic Director verwendeten Sidecar-Proxy-Architektur ist der Proxy die Komponente, die Anfragen verarbeitet und die erforderlichen Telemetriedaten bereitstellt. Telemetriedaten müssen zur weiteren Verwendung an einem zentralen Ort gesammelt und gespeichert werden, z. B. für Datenanalysen, Benachrichtigungen und Fehlerbehebung.

In dieser Anleitung wird beschrieben, wie Sie Tracing und Logging für den Envoy-Proxy generieren. In dieser Anleitung wird auch beschrieben, wie Sie die Informationen in Cloud Trace und Cloud Logging exportieren.

Einrichtung der Demonstration

In dieser Anleitung wird die folgende Konfiguration verwendet, um Tracing und Logging zu demonstrieren:

  • Eine einzelne Anwendung, die den HTTP-Port überwacht und den Hostnamen der VM zurückgibt, die die Anfrage verarbeitet hat. Im Diagramm befindet sich diese Anwendung oben rechts mit der Beschriftung HTTP-Dienst(e) (10.10.10.10:80). Eine oder mehrere VMs können diesen Dienst bereitstellen.
  • Eine einzelne Compute Engine-VM, auf der ein Nutzer dieses Dienstes ausgeführt wird. Im Diagramm ist dies mit Demo Compute Engine VM gekennzeichnet.
  • Ein Envoy-Sidecar-Proxy, der von Traffic Director installiert und konfiguriert wird. Im Diagramm ist dies mit Envoy gekennzeichnet.
  • Eine Dienstnutzeranwendung, die im grauen Feld angezeigt wird, ist der Nutzer des HTTP-Dienstes, der auf 10.10.10.10:80 ausgeführt wird.
Demonstrationsanwendung für Stackdriver Logging und Monitoring für Envoy (zum Vergrößern klicken)
Demoanwendung für Stackdriver Logging und Monitoring für Envoy (zum Vergrößern klicken)
  1. Traffic Director konfiguriert den Envoy-Proxy für den Lastenausgleich des Traffics für den Dienst 10.10.10.10:80, für die Speicherung von Zugriffsprotokollinformationen für jede für diesen Dienst ausgegebene Anfrage und zum Generieren von Tracing-Informationen für den Dienst.
  2. Nachdem der Nutzer eine Anfrage an 10.10.10.10 gesendet hat, leitet der Sidecar-Proxy die Anfrage an das richtige Ziel weiter.
  3. Der Sidecar-Proxy generiert auch die erforderlichen Telemetriedaten:
    1. Fügt dem Zugriffslog auf dem lokalen Laufwerk einen Eintrag mit zusätzlichen Informationen zur Anfrage hinzu
    2. Generiert einen Trace-Eintrag und sendet ihn mithilfe von OpenCensus Envoy Tracing an Trace.
  4. Der Logging-Agent exportiert diese Daten in die Cloud Logging API, damit die Daten in der Cloud Logging-Oberfläche verfügbar sind.

Vorbereitung

Diese Voraussetzungen müssen erfüllt sein:

  1. Die Traffic Director API ist aktiviert und andere Voraussetzungen werden erfüllt, wie unter Traffic Director-Einrichtung vorbereiten beschrieben.
  2. Für das von der Compute Engine-VM verwendete Dienstkonto ist die Rolle Cloud Trace Agent konfiguriert. Weitere Informationen finden Sie auf der Seite Trace-Zugriffssteuerung.
  3. Für das von der Compute Engine-VM verwendete Dienstkonto ist die Rolle Log-Autor konfiguriert. Weitere Informationen finden Sie auf der Seite Zugriffssteuerung für Logging.

Demodienst und Traffic Director einrichten

In dieser Anleitung werden mehrere Shell-Skripts verwendet, um die Schritte zur Konfiguration des Demodienstes auszuführen. Sehen Sie sich die Skripts an, um die einzelnen Schritte zu verstehen.

  1. Starten Sie eine Compute Engine-VM und konfigurieren Sie den HTTP-Dienst auf der 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
    

    Das Skript setup_demo_service.sh erstellt eine VM-Vorlage, die apache2 beim Start einer VM startet, und eine verwaltete Instanzgruppe, die diese Vorlage verwendet. Das Skript startet eine einzelne Instanz ohne aktiviertes Autoscaling.

  2. Konfigurieren Sie das Routing für den Dienst 10.10.10.10 mit Traffic Director

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_trafficdirector.sh
    chmod 755 setup_demo_trafficdirector.sh && ./setup_demo_trafficdirector.sh
    

    Das Skript setup_demo_trafficdirector.sh konfiguriert die erforderlichen Parameter für den verwalteten Traffic Director-Dienst, ähnlich wie unter Traffic Director für Compute Engine mit VMs einrichten beschrieben.

  3. Starten Sie eine Compute Engine-VM, die einen Nutzer des HTTP-Dienstes ausführt, wobei der Sidecar-Proxy auf der VM installiert und konfiguriert ist. Ersetzen Sie im folgenden Befehl die Variable gcp_project_id durch die Projekt-ID, an die Trace-Informationen gesendet werden sollen. Dies ist in der Regel dasselbe Projekt, zu dem Ihre VM gehört.

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_client.sh
    chmod 755 setup_demo_client.sh && ./setup_demo_client.sh my_gcp_project_id
    

    Das Skript setup_demo_client.sh erstellt eine Compute Engine-VM mit einem Envoy-Proxy, der für die Verwendung von Traffic Director vorkonfiguriert ist. Dies ähnelt der unter Traffic Director für Compute Engine mit VMs einrichten beschriebenen Konfiguration.

Die folgenden zusätzlichen Konfigurationseinstellungen ermöglichen das Tracing und Logging:

  • Die Bootstrap-Knotenmetadatenvariablen TRAFFICDIRECTOR_ACCESS_LOG_PATH und TRAFFICDIRECTOR_ENABLE_TRACING aktivieren Logging und Tracing, wie unter Zusätzliche Attribute für Sidecar-Proxys konfigurieren beschrieben.
  • Statische Bootstrap-Konfiguration, die den Export von Trace-Informationen in Trace mithilfe von OpenCensus ermöglicht.

HINWEIS: Sie können zusätzliche Tracing-Parameter über die Envoy-Laufzeitkonfiguration hinzufügen und ändern.

Nachdem Sie diese Skripts ausgeführt haben, können Sie sich bei der VM td-observability-demo-client anmelden und auf den unter 10.10.10.10 verfügbaren HTTP-Dienst zugreifen.

curl http://10.10.10.10

Zu diesem Zeitpunkt generiert Envoy das Zugriffsprotokoll und die Tracing-Informationen. Im folgenden Abschnitt wird beschrieben, wie Sie Logs und Tracing-Informationen exportieren.

Tracer-Export nach Cloud Trace einrichten

Die Envoy-Bootstrap-Konfiguration, die Sie beim Ausführen des Skripts setup-demo-client.sh erstellt haben, reicht aus, um Tracing-Informationen zu generieren. Alle anderen Konfigurationen sind optional. Wenn Sie zusätzliche Parameter konfigurieren möchten, rufen Sie die OpenCensus Envoy-Konfigurationsseite auf und ändern Sie die Tracing-Optionen in der Envoy-Bootstrap-Konfiguration.

Nachdem Sie eine Beispielanfrage an den Demonstrationsserver (curl 10.10.10.10) gesendet haben, rufen Sie in der Google Cloud Console die Trace-Oberfläche (Trace-Trace-Liste) auf. Sie sehen einen Trace-Eintrag, der der von Ihnen ausgegebenen Anfrage entspricht.

Weitere Informationen zur Verwendung von Trace finden Sie in der zugehörigen Dokumentation.

Zugriffsprotokollexport für Logging einrichten

In dieser Phase sollte Envoy die Zugriffsprotokollinformationen auf dem lokalen Laufwerk der VM aufzeichnen, auf der es ausgeführt wird. Sie müssen zum Exportieren dieser Datensätze nach Logging den Logging-Agent lokal installieren. Dazu müssen Sie den Logging-Agent installieren und konfigurieren.

Logging-Agent installieren

Installieren Sie den Logging-Agent auf der VM, von der Logging-Informationen exportiert werden. In dieser Beispielkonfiguration ist die VM td-observability-demo-vm.

curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh
sudo bash install-logging-agent.sh

Weitere Informationen zur Installation des Logging-Agents finden Sie in der Anleitung Agent installieren.

Logging-Agent konfigurieren

Sie können die Envoy-Protokolle entweder als unstrukturierten oder strukturierten Text exportieren.

Envoy-Protokolle als unstrukturierten Text exportieren

Mit dieser Option werden Logeinträge aus dem Zugriffslog als Rohtext in Cloud Logging exportiert. Jeder Eintrag im Zugriffslog wird als einzelner Eintrag in Logging exportiert. Diese Konfiguration ist einfacher zu installieren, da sie auf einem Parser basiert, der mit der aktuellen Version des Logging-Agents bereitgestellt wird. Es ist jedoch schwieriger, mit dieser Option unformatierte Textprotokolleinträge zu filtern und zu verarbeiten.

  1. Laden Sie die unstrukturierte Exportkonfigurationsdatei für das Envoy-Zugriffslog herunter und installieren Sie sie.

    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. Agent neu starten Die Änderungen werden beim Start des Agents wirksam.

    sudo service google-fluentd restart
    

Envoy-Logs in ein strukturiertes Format exportieren

  1. Installieren Sie den Envoy-Zugriffslog-Parser von GitHub.

    sudo /opt/google-fluentd/embedded/bin/gem install fluent-plugin-envoy-parser
    
  2. Laden Sie die Konfigurationsdatei für den Export von Envoy-Zugriffslogs in einem strukturierten Format herunter und installieren Sie sie:

    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. Agent neu starten Die Änderungen werden beim Start des Agents wirksam.

    sudo service google-fluentd restart
    

Weitere Informationen zur Konfiguration des Logging-Agents finden Sie unter Agent konfigurieren.

Überprüfung

  1. Generieren Sie von der Sidecar-Proxy-VM eine Anfrage an den Demonstrationsdienst. Dadurch wird ein neuer lokaler Log-Datensatz erstellt. Sie können beispielsweise Folgendes ausführen: curl 10.10.10.10
  2. Gehen Sie in der Cloud Console zu Logging > Loganzeige. Wählen Sie im Drop-down-Menü den Logtyp envoy-access aus. Sie sehen einen Log-Eintrag für die letzte Anfrage im unstrukturierten oder strukturierten Format, je nachdem, welchen Konfigurationstyp Sie zuvor ausgewählt haben.

Fehlerbehebung

Wenn die Konfiguration abgeschlossen ist, aber keine Trace- oder Logging-Einträge verfügbar sind, prüfen Sie Folgendes:

  1. Die Dienstkonten für die Compute Engine-VM haben die erforderlichen Trace- und Logging-IAM-Berechtigungen, wie in den Voraussetzungen angegeben. Informationen zu Trace IAM-Berechtigungen finden Sie unter Zugriffssteuerung. Informationen zu Logging-Berechtigungen finden Sie unter Zugriffssteuerung.
  2. Für das Logging: Stellen Sie sicher, dass in /var/log/google-fluentd/google-fluentd.log keine Fehler vorhanden sind.
  3. Für das Logging: Stellen Sie sicher, dass neue Einträge in der lokalen Zugriffs-Log-Datei erscheinen, wenn Anfragen ausgegeben werden.