Python 用 Stackdriver Debugger の設定

App Engine スタンダード環境

Python 2.7 を使用している場合、デバッガはデフォルトで有効になり、構成は不要です。

Python 3.7 を使用している場合は、App Engine フレキシブル環境の指示に従ってデバッガ エージェントを手動で有効にする必要があります。

GCP Console の [デバッグ] ページにアプリのソースコードと一致するデプロイされたファイルが自動的に表示されます。ソースコードの表示の詳細については、ソースコードを自動的に選択するをご覧ください。

App Engine フレキシブル環境

デバッガは、App Engine Python ランタイムまたはカスタム ランタイムで使用できます。

  1. App Engine フレキシブル VM インスタンスが実行されていることを確認します。

    • 64 ビット Debian Linux イメージ
    • Python 2.7 または 3.6
  2. app.yaml ファイルに次の行が含まれていることを確認します。

    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
    

    カスタム ランタイムの場合は runtime: custom を使用します。

  3. google-python-cloud-debuggerrequirements.txt に追加します。

  4. 初期化コードの最初のほうに次の行を追加します。たとえば、main 関数や manage.py(Django ウェブ フレームワークを使用している場合)に追加します(バージョン 1.* のみ)。

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

これで、アプリでデバッガを使用できるようになりました。

GCP Console の [デバッグ] ページにデプロイ済みアプリのソースコードを自動的に表示する方法については、ソースコードを自動的に選択するをご覧ください。

GKE

  1. クラスタが次のいずれかのアクセス スコープで作成されていることを確認します。

    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/cloud_debugger

    例:

    gcloud container clusters create EXAMPLE-CLUSTER-NAME \
        --scopes https://www.googleapis.com/auth/cloud-platform
    
  2. Compute Engine の手順に従います。

Compute Engine

  1. Compute Engine VM インスタンスが実行されていることを確認します。

    • 64 ビット Debian Linux イメージ
    • Python 2.7 または 3.7
  2. Compute Engine VM インスタンスが [すべての Cloud API に完全アクセス権を許可] アクセス スコープ オプションで作成されていることを確認するか、次のいずれかのアクセス スコープを使用します。

    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/cloud_debugger
  3. デバッガ エージェントをダウンロードします。

    Python 用 Stackdriver Debugger のインストールは、次のように pip を使用してインストールする方法が最も簡単です。

    pip install google-python-cloud-debugger
    
  4. 初期化コードの最初のほうに次の行を追加します。たとえば、main 関数や manage.py(Django ウェブ フレームワークを使用している場合)に追加します。

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

    または、コードを変更できない場合は、Stackdriver Debugger エージェントをモジュールとして実行します。

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

    どちらの方法も次が該当します。

    • [MODULE] はアプリの名前です。
      これは、バージョンとともに、GCP Console の [デバッグ] ページでデバッグ対象を識別するために使用します。
      たとえば MyAppBackendFrontend です。
    • [VERSION] はアプリのバージョンです(ビルド ID など)。
      GCP Console では実行中のバージョンを [MODULE] - [VERSION] のように表示します。
      値の例: v1.0build_147v20170714

これで、アプリでデバッガを使用できるようになりました。

GCP Console の [デバッグ] ページにデプロイ済みアプリのソースコードを自動的に表示する方法については、ソースコードを自動的に選択するをご覧ください。

ローカルと他の場所

  1. ワークステーションが実行されていることを確認します。

    • 64 ビット Debian Linux イメージ
    • Python 2.7 または 3.7
  2. デバッガ エージェントをダウンロードします。

    Python 用 Stackdriver Debugger のインストールは、次のように pip を使用してインストールする方法が最も簡単です。

    pip install google-python-cloud-debugger
    
  3. サービス アカウントの認証情報をダウンロードします。
    Google Cloud Platform でホストされていないマシンで Python 用 Stackdriver Debugger エージェントを使用するには、エージェントが GCP サービス アカウントの認証情報を使用して Stackdriver Debugger サービスの認証を行う必要があります。

    GCP Console の [サービス アカウント] ページで、既存または新しいサービス アカウントの認証情報ファイルを作成します。サービス アカウントには、少なくとも Stackdriver Debugger Agent 役割が必要です。

    サービス アカウントの JSON ファイルを Python 用 Stackdriver Debugger エージェントとともに配置します。

  4. 初期化コードの最初のほうに次の行を追加します。たとえば、main 関数や manage.py(Django ウェブ フレームワークを使用している場合)に追加します。

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

    または、コードを変更できない場合は、Stackdriver Debugger エージェントをモジュールとして実行します。

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

    どちらの方法も次が該当します。

    • [MODULE] はアプリの名前です。
      これは、バージョンとともに、GCP Console の [デバッグ] ページでデバッグ対象を識別するために使用します。
      たとえば MyAppBackendFrontend です。
    • [VERSION] はアプリのバージョンです(ビルド ID など)。
      GCP Console では実行中のバージョンを [MODULE] - [VERSION] のように表示します。
      値の例: v1.0build_147v20170714
    • service_account_json_file を指定する代わりに、GOOGLE_APPLICATION_CREDENTIALS 環境変数を使用することもできます。

これで、アプリでデバッガを使用できるようになりました。

GCP Console の [デバッグ] ページには、ローカル環境のソースファイルをアップロードせずに表示できます。ソースコードを手動で選択するをご覧ください。

トラブルシューティング

google-python-cloud-debugger Python パッケージを使用するには、python2.7-dev Linux パッケージと Python パッケージ(setuptoolswheel)が必要です。pip と推奨の依存関係をすべてインストールすると、通常、これらのパッケージもインストールされます。パッケージが不足していると、次のエラーが発生します。

  1. ImportError: No module named setuptools

    setuptools Python パッケージのインストールが必要です。例: pip install setuptools

  2. invalid command 'bdist_wheel' または Failed building wheel for '...'

    wheel Python パッケージのインストールが必要です。例: pip install wheel

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

    python2.7-dev Linux パッケージのインストールが必要です。例: apt-get install python2.7-dev

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Stackdriver Debugger のドキュメント