VM に対してデバッグモードを有効にできます。デバッグモードでは、プロジェクトのオーナー、編集者、App Engine 管理者のロールを持つプリンシパルは VM に対する root アクセス権を持ちます。デバッグモードがオンの場合、オペレーティング システムの更新とセキュリティ パッチの自動ロールアウトは無効になります。とはいえ VM はまだロードバランサ プールの一部であり、引き続き外部リクエストを受信します。
デバッグを有効化あるいは無効化したときには、「VM インスタンス デバッグの有効化 / 無効化」のイベントが Google Cloud Console に表示され、VM の /var/log/syslog.log
ファイルに記録されます。
デバッグモードを有効または無効にする
gcloud
を使用して、インスタンスのデバッグモードを有効または無効にします。インスタンスをデバッグするには、ロールに appengine.instances.enableDebug
権限が含まれている必要があります。
gcloud
でデバッグモードを有効または無効にするには:
-
次に示すように、gcloud app instances enable-debug コマンドを使用して特定のインスタンスとバージョンの VM をデバッグします。
gcloud app --project PROJECT-ID instances enable-debug
PROJECT-ID を独自のプロジェクト ID に置き換え、画面の指示に沿ってデバッグするインスタンスのバージョンを指定します。 -
デバッグが終了したら、次のようにデバッグモードを無効にします。
gcloud app --project PROJECT-ID instances disable-debug
画面の指示に沿ってインスタンスのバージョンを指定します。
デバッグモードを無効にすると、VM は停止し、アプリの新しいインスタンスが開始され、新しいクリーンな VM で実行されます。
インスタンスに接続する
Console
コンソールでインスタンスに接続するには:
- Google Cloud コンソールで、プロジェクトのインスタンス ページにアクセスします。
- アクセスするインスタンスを含む行の右端で、[SSH] をクリックします。
これによりインスタンスはデバッグモードに入り、ターミナル ウィンドウ内でインスタンスの SSH セッションが開きます。
また、プルダウン リストから SSH セッションを開始するためのさまざまなオプションを選択することもできます。
- この時点でインスタンス ホスト内にいて、その中ではいくつかのコンテナが実行されています。これらの詳細については、次の一般的なコンテナを理解するをご覧ください。
-
ターミナル ウィンドウで、インスタンス内で実行中のコンテナをリストします。
sudo docker ps
-
sudo docker ps
コマンドの出力には、各コンテナが行ごとに一覧表示されます。プロジェクト ID を含む行を探します。これはコードを実行しているコンテナです。このコンテナの名前をメモしておきます。 -
次のコマンドで、アプリケーションのロギング情報をリストすることもできます。
sudo docker logs CONTAINER-NAME
-
コードを実行しているコンテナでシェルを起動します。
sudo docker exec -it CONTAINER-NAME /bin/bash
- デバッグが終了したら、「
exit
」を入力してコンテナを終了し、再度「exit
」を入力して SSH セッションを終了します。 - インスタンスのデバッグを無効にし、通常の動作を再開できるようにします。
gcloud
gcloud を使用してインスタンスに接続するには:
-
デバッグモードが有効になっているインスタンスで、次のコマンドを実行します。
gcloud beta app instances --project PROJECT-ID ssh INSTANCE-NAME --service SERVICE --version VERSION
- この時点でインスタンス ホスト内にいて、その中ではいくつかのコンテナが実行されています。これらの詳細については、次の一般的なコンテナを理解するをご覧ください。
-
ターミナル ウィンドウで、インスタンス内で実行中のコンテナをリストします。
sudo docker ps
-
sudo docker ps
コマンドの出力には、各コンテナが行ごとに一覧表示されます。プロジェクト ID を含む行を探します。これはコードを実行しているコンテナです。このコンテナの名前をメモしておきます。 -
次のコマンドで、アプリケーションのロギング情報をリストすることもできます。
sudo docker logs CONTAINER-NAME
-
コードを実行しているコンテナでシェルを起動します。
docker exec -it CONTAINER-NAME /bin/bash
- デバッグが終了したら、「
exit
」を入力してコンテナを終了し、再度「exit
」を入力して SSH セッションを終了します。 - インスタンスのデバッグを無効にし、通常の動作を再開できるようにします。
一般的なコンテナを理解する
アプリケーション コードを実行しているコンテナに加えて、インスタンスには次のコンテナが含まれていることがあります。
コンテナとソースコード | オープンソース組織 | 説明 |
---|---|---|
fluentd_logger | fluentd.org/ | Logging エージェント |
memcache_proxy | memcache proxy open source | アプリケーションに Memcache 機能を提供する |
nginx_proxy | nginx.org | アプリケーションへのリクエストをプロキシする |