VM に対してデバッグモードを有効にできます。デバッグモードでは、プロジェクトのオーナー、編集者、App Engine 管理者のロールを持つプリンシパルは VM に対する root アクセス権を持ちます。デバッグモードがオンの場合、オペレーティング システムの更新とセキュリティ パッチの自動ロールアウトは無効になります。とはいえ VM はまだロードバランサ プールの一部であり、引き続き外部リクエストを受信します。
デバッグを有効化あるいは無効化したときには、「VM インスタンス デバッグの有効化/無効化」のイベントが Google Cloud コンソールに表示され、VM の /var/log/syslog.log
ファイルに記録されます。
デバッグモードの有効化と無効化
gcloud
を使用して、インスタンスのデバッグモードを有効または無効にします。インスタンスをデバッグするには、ロールに appengine.instances.enableDebug
権限が含まれている必要があります。
gcloud
でデバッグモードを有効または無効にするには:
-
次に示すように、gcloud app instances enable-debug コマンドを使用して特定のインスタンスとバージョンの VM をデバッグします。
PROJECT-ID を独自のプロジェクト ID に置き換え、画面の指示に沿ってデバッグするインスタンスのバージョンを指定します。gcloud app --project PROJECT-ID instances enable-debug
-
デバッグが終了したら、次のようにデバッグモードを無効にします。
画面の指示に沿ってインスタンスのバージョンを指定します。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 セッションを終了します。インスタンスのデバッグを無効にし、通常の動作を再開できるようにします。
一般的なコンテナの理解
アプリケーション コードを実行しているコンテナに加えて、インスタンスには次のコンテナが含まれていることがあります。
コンテナとソースコード | 説明 |
---|---|
cloud-sql | Cloud SQL インスタンスへの安全な接続を保証します。 |
fluentd_logger | Logging エージェント |
nginx_proxy | アプリケーションへのリクエストをプロキシする |
opentelemetry-collector | テレメトリー データを受信、処理、エクスポートします。 |
stackdriver-monitoring-agent | システム情報を収集、保存、モニタリングします。 |
これらのサイドカー コンテナは予告なく変更される場合があります。