Stackdriver Debugger für Python einrichten

Auf dieser Seite wird gezeigt, wie Sie Ihre Umgebung und Ihre Python-Anwendung für die Verwendung von Stackdriver Debugger konfigurieren. In einigen Umgebungen müssen Sie, damit der Stackdriver Debugger-Agent Daten senden kann, den Zugriffsbereich explizit angeben. Es wird empfohlen, den größtmöglichen Zugriffsbereich festzulegen und anschließend den Zugriff mit Cloud Identity and Access Management einzuschränken. Geben Sie den Zugriffsbereich entsprechend dieser Best Practice für alle Cloud APIs mit der Option cloud-platform an.

App Engine-Standardumgebung

Wenn Sie Python 2.7 verwenden, ist der Debugger standardmäßig aktiviert und es ist keine Konfiguration erforderlich.

Wenn Sie Python 3.7 verwenden, müssen Sie die Debugger-Agenten manuell aktivieren. Folgen Sie hierfür den Anweisungen für die flexible App Engine-Umgebung.

Auf der Seite "Fehlerbehebung" in der GCP Console werden automatisch die bereitgestellten Dateien angezeigt, die dem Quellcode der App entsprechen. Weitere Informationen zum Abgleich von Quellcodes finden Sie unter Quellcode automatisch auswählen .

Flexible App Engine-Umgebung

Sie können den Debugger mit der Python-Laufzeit oder der benutzerdefinierten Laufzeit von App Engine verwenden.

  1. Stellen Sie sicher, dass auf Ihren VM-Instanzen der flexiblen App Engine Folgendes ausgeführt wird:

    • Ein 64-Bit-Debian-Linux-Image
    • Python 2.7 oder 3.6
  2. Stellen Sie sicher, dass die Datei app.yaml folgende Zeilen enthält:

    runtime: python
    env: flex
    
    # The Python runtime uses Python 3.6 by default.
    # To use Python 2.7 add the following lines.
    # runtime_config:
    #   python_version: 2
    

    Verwenden Sie runtime: custom für eine benutzerdefinierte Laufzeit.

  3. Fügen Sie google-python-cloud-debugger oder requirements.txt hinzu.

  4. Fügen Sie die folgenden Zeilen so früh wie möglich in Ihren Initialisierungscode ein, z. B. in Ihrer Hauptfunktion oder in manage.py, wenn Sie das Django-Webframework (nur Version 1.*) verwenden.

    try:
      import googleclouddebugger
      googleclouddebugger.enable()
    except ImportError:
      pass
    

Der Debugger ist jetzt bereit für die Verwendung mit Ihrer App.

Zur automatischen Anzeige des Quellcodes der bereitgestellten Anwendung auf der Seite "Fehlerbehebung" der GCP Console finden Sie entsprechende Informationen unter Quellcode automatisch auswählen.

Google Kubernetes Engine

  1. Erstellen Sie Ihren Cluster mit einem der folgenden Zugriffsbereiche:
    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/cloud_debugger

    So erstellen Sie einen Cluster mit gcloud:

    1. (Optional) Aktualisieren Sie gcloud auf die neueste Version:
      gcloud components update
    2. Legen Sie Ihre standardmäßige Projekt-ID fest:
      gcloud config set project [PROJECT_ID]
    3. Wenn Sie mit zonalen Clustern arbeiten, legen Sie Ihre standardmäßige Compute-Zone fest:
      gcloud config set compute/zone [COMPUTE_ZONE]
    4. Wenn Sie mit regionalen Clustern arbeiten, legen Sie Ihre standardmäßige Compute-Region fest:
      gcloud config set compute/region [COMPUTE_REGION]
    5. Führen Sie den Befehl zum Erstellen aus:
      gcloud container clusters create example-cluster-name --scopes https://www.googleapis.com/auth/cloud-platform

    Ausführliche Informationen zum Erstellen eines Clusters finden Sie unter Cluster erstellen.

  2. Folgen Sie der Anleitung für Compute Engine.

Compute Engine

  1. Stellen Sie sicher, dass auf Ihren Compute Engine VM-Instanzen Folgendes ausgeführt wird:

    • Ein 64-Bit-Debian-Linux-Image
    • Python 2.7 oder 3.7
  2. Überprüfen Sie, ob Ihre Compute Engine-VM-Instanzen mit der Zugriffsbereichsoption Vollen Zugriff auf alle Cloud-APIs zulassen eingerichtet sind oder einen der folgenden Zugriffsbereiche haben:

    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/cloud_debugger
  3. Laden Sie den Debugger-Agent herunter.

    Am einfachsten installieren Sie Stackdriver Debugger für Python mit pip:

    pip install google-python-cloud-debugger
    
  4. Fügen Sie die folgenden Zeilen so früh wie möglich in Ihren Initialisierungscode ein, z. B. in Ihrer Hauptfunktion oder in manage.py, wenn Sie das Django-Webframework verwenden.

    try:
      import googleclouddebugger
      googleclouddebugger.enable(
        module='[MODULE]',
        version='[VERSION]'
      )
    except ImportError:
      pass
    

    Oder: Wenn Sie den Code nicht ändern können, kann der Debugger-Agent als Modul ausgeführt werden:

    python -m googleclouddebugger \
          --module=[MODULE] \
          --version=[VERSION] \
          -- \
          myapp.py
    

    In beiden Fällen gilt:

    • [MODULE] ist der Name Ihrer Anwendung.
      Zusammen mit der Versionsangabe identifiziert dieser Name das Fehlerbehebungsziel auf der Seite "Fehlerbehebung" in der GCP Console.
      Beispiele: MyApp, Backend oder Frontend
    • [VERSION] ist die App-Version, z. B. die Build-ID.
      Auf der Seite "Fehlerbehebung" der GCP Console wird die ausgeführte Version als [MODULE] - [VERSION] angezeigt.
      Beispielwerte: v1.0, build_147 oder v20170714.

Der Debugger ist jetzt bereit für die Verwendung mit Ihrer App.

Unter Quellcode automatisch auswählen erfahren Sie, wie in der Cloud Platform Console automatisch die Dateien angezeigt werden, die dem Quellcode entsprechen.

Lokal und an anderer Stelle

  1. Achten Sie darauf, dass auf Ihrer Workstation Folgendes ausgeführt wird:

    • Ein 64-Bit-Debian-Linux-Image
    • Python 2.7 oder 3.7
  2. Laden Sie den Debugger-Agent herunter.

    Am einfachsten installieren Sie Stackdriver Debugger für Python mit pip:

    pip install google-python-cloud-debugger
    
  3. Laden Sie Anmeldedaten für das Dienstkonto herunter.
    Wenn Sie den Stackdriver Debugger-Agent für Python auf Computern verwenden möchten, die nicht von der Google Cloud Platform gehostet werden, muss sich der Agent mithilfe der Anmeldedaten eines GCP-Dienstkontos beim Stackdriver Debugger-Dienst authentifizieren.

    Verwenden Sie die Seite "Dienstkonten" der GCP Console, um eine Anmeldedatendatei für ein bestehendes oder neues Dienstkonto zu erstellen. Das Dienstkonto muss mindestens die Rolle Stackdriver Debugger Agent haben.

    Fügen Sie die JSON-Datei des Dienstkontos zusammen mit dem Python-Debugger-Agent ein.

  4. Fügen Sie die folgenden Zeilen so früh wie möglich in Ihren Initialisierungscode ein, z. B. in Ihrer Hauptfunktion oder in manage.py, wenn Sie das Django-Webframework verwenden.

    try:
      import googleclouddebugger
      googleclouddebugger.enable(
          module='[MODULE]',
          version='[VERSION]'
          service_account_json_file='/opt/cdbg/gcp-svc.json')
    except ImportError:
      pass
    

    Oder: Wenn Sie den Code nicht ändern können, kann der Debugger-Agent als Modul ausgeführt werden:

    python \
        -m googleclouddebugger \
        --module=[MODULE] \
        --version=[VERSION] \
        --service_account_json_file=/opt/cdbg/gcp-svc.json \
        -- \
        myapp.py
    

    In beiden Fällen gilt:

    • [MODULE] ist der Name Ihrer Anwendung.
      Zusammen mit der Versionsangabe identifiziert dieser Name das Fehlerbehebungsziel auf der Seite "Fehlerbehebung" in der GCP Console.
      Beispiele: MyApp, Backend oder Frontend
    • [VERSION] ist die App-Version, z. B. die Build-ID.
      Auf der Seite "Fehlerbehebung" der GCP Console wird die ausgeführte Version als [MODULE] - [VERSION] angezeigt.
      Beispielwerte: v1.0, build_147 oder v20170714.
    • Die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS kann anstelle von service_account_json_file verwendet werden.

Der Debugger ist jetzt bereit für die Verwendung mit Ihrer App.

Auf der Seite "Fehlerbehebung" der GCP Console können die lokalen Quelldateien ohne Hochladen für die lokale Entwicklung angezeigt werden. Weitere Informationen finden Sie unter Quellcode manuell auswählen.

Fehlerbehebung

Das Python-Paket google-python-cloud-debugger benötigt das Linux-Paket python2.7-dev sowie die Python-Pakete setuptools und wheel. Während diese Pakete normalerweise installiert werden, wenn Sie pip mit allen vorgeschlagenen Abhängigkeiten installieren, kann das Fehlen einiger von ihnen die folgenden Fehler verursachen.

  1. ImportError: No module named setuptools

    Das Python-Paket setuptools muss installiert werden, z. B. pip install setuptools.

  2. invalid command 'bdist_wheel' oder Failed building wheel for '...'

    Das Python-Paket wheel muss installiert werden, z. B. pip install wheel.

  3. ImportError: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

    Es muss das Linux-Paket python2.7-dev installiert werden, z. B. apt-get install python2.7-dev.

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Stackdriver Debugger-Dokumentation