インスタンスのデバッグ

VM に対してデバッグモードを有効にできます。デバッグモードでは、プロジェクトのオーナー、編集者、App Engine 管理者のロールを持つプリンシパルは VM に対する root アクセス権を持ちます。デバッグモードがオンの場合、オペレーティング システムの更新とセキュリティ パッチの自動ロールアウトは無効になります。とはいえ VM はまだロードバランサ プールの一部であり、引き続き外部リクエストを受信します。

デバッグを有効化あるいは無効化したときには、「VM インスタンス デバッグの有効化 / 無効化」のイベントが Google Cloud Console に表示され、VM の /var/log/syslog.log ファイルに記録されます。

デバッグモードを有効または無効にする

gcloud を使用して、インスタンスのデバッグモードを有効または無効にします。インスタンスをデバッグするには、ロールに appengine.instances.enableDebug 権限が含まれている必要があります。

gcloud でデバッグモードを有効または無効にするには:

  1. 次に示すように、gcloud app instances enable-debug コマンドを使用して特定のインスタンスとバージョンの VM をデバッグします。
    gcloud app --project PROJECT-ID instances enable-debug
    PROJECT-ID を独自のプロジェクト ID に置き換え、画面の指示に沿ってデバッグするインスタンスのバージョンを指定します。
  2. デバッグが終了したら、次のようにデバッグモードを無効にします。
    gcloud app --project PROJECT-ID instances disable-debug
    画面の指示に沿ってインスタンスのバージョンを指定します。

デバッグモードを無効にすると、VM は停止し、アプリの新しいインスタンスが開始され、新しいクリーンな VM で実行されます。

インスタンスに接続する

Console

コンソールでインスタンスに接続するには:

  1. Google Cloud コンソールで、プロジェクトのインスタンス ページにアクセスします。

    インスタンス ページに移動

  2. アクセスするインスタンスを含む行の右端で、[SSH] をクリックします。

    これによりインスタンスはデバッグモードに入り、ターミナル ウィンドウ内でインスタンスの SSH セッションが開きます。

    また、プルダウン リストから SSH セッションを開始するためのさまざまなオプションを選択することもできます。

  3. この時点でインスタンス ホスト内にいて、その中ではいくつかのコンテナが実行されています。これらの詳細については、次の一般的なコンテナを理解するをご覧ください。
  4. ターミナル ウィンドウで、インスタンス内で実行中のコンテナをリストします。
    sudo docker ps
  5. sudo docker ps コマンドの出力には、各コンテナが行ごとに一覧表示されます。プロジェクト ID を含む行を探します。これはコードを実行しているコンテナです。このコンテナの名前をメモしておきます。
  6. 次のコマンドで、アプリケーションのロギング情報をリストすることもできます。
    sudo docker logs CONTAINER-NAME
  7. コードを実行しているコンテナでシェルを起動します。
    sudo docker exec -it CONTAINER-NAME /bin/bash
  8. デバッグが終了したら、「exit」を入力してコンテナを終了し、再度「exit」を入力して SSH セッションを終了します。
  9. インスタンスのデバッグを無効にし、通常の動作を再開できるようにします。

gcloud

gcloud を使用してインスタンスに接続するには:

  1. デバッグモードが有効になっているインスタンスで、次のコマンドを実行します。
    gcloud beta app instances --project PROJECT-ID ssh INSTANCE-NAME --service SERVICE --version VERSION
  2. この時点でインスタンス ホスト内にいて、その中ではいくつかのコンテナが実行されています。これらの詳細については、次の一般的なコンテナを理解するをご覧ください。
  3. ターミナル ウィンドウで、インスタンス内で実行中のコンテナをリストします。
    sudo docker ps
  4. sudo docker ps コマンドの出力には、各コンテナが行ごとに一覧表示されます。プロジェクト ID を含む行を探します。これはコードを実行しているコンテナです。このコンテナの名前をメモしておきます。
  5. 次のコマンドで、アプリケーションのロギング情報をリストすることもできます。
    sudo docker logs CONTAINER-NAME
  6. コードを実行しているコンテナでシェルを起動します。
    docker exec -it CONTAINER-NAME /bin/bash
  7. デバッグが終了したら、「exit」を入力してコンテナを終了し、再度「exit」を入力して SSH セッションを終了します。
  8. インスタンスのデバッグを無効にし、通常の動作を再開できるようにします。

一般的なコンテナを理解する

アプリケーション コードを実行しているコンテナに加えて、インスタンスには次のコンテナが含まれていることがあります。

コンテナとソースコード オープンソース組織 説明
fluentd_logger fluentd.org/ Logging エージェント
memcache_proxy memcache proxy open source アプリケーションに Memcache 機能を提供する
nginx_proxy nginx.org アプリケーションへのリクエストをプロキシする