トラブルシューティングのためにアプリ インスタンスに接続する
Note
Basic、Standard、Enterprise プランは、2025 年 3 月中旬以降非推奨になり、廃止期間は 3 年間です。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の廃止のお知らせ」を参照してください。
Standard 従量課金と専用プランは、2024 年 9 月 30 日以降に非推奨になり、6 か月後に完全にシャットダウンされます。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の Standard 従量課金および専用プランを Azure Container Apps に移行する」を参照してください。
この記事の適用対象: ✔️ Basic または Standard ✔️ Enterprise
この記事では、アプリケーション インスタンス内のシェル環境にアクセスして高度なトラブルシューティングを行う方法について説明します。
Azure Spring Apps にはさまざまなマネージド トラブルシューティング アプローチが用意されていますが、シェル環境を使用して高度なトラブルシューティングを行うことができます。 たとえば、次のトラブルシューティング タスクを実行したい場合があります。
- Java Development Kit (JDK) ツールを直接使用する。
- 仮想ネットワーク インスタンスと非仮想ネットワーク インスタンスの両方のネットワーク接続と API 呼び出しの待機時間について、アプリのバックエンド サービスに対して診断する。
- ストレージ容量、パフォーマンス、CPU/メモリの問題を診断する。
前提条件
Azure Spring Apps 拡張機能を使用した Azure CLI。 次のコマンドを使用して、以前のバージョンを削除し、最新の拡張機能をインストールします。 以前に
spring-cloud
拡張機能をインストールした場合は、構成とバージョンの不一致を回避するためにそれをアンインストールします。az extension remove --name spring az extension add --name spring az extension remove --name spring-cloud
Azure Spring Apps のデプロイされたアプリケーション。
カスタム コンテナーをデプロイした場合は、シェル プログラム。 既定値は、
/bin/sh
です。
Azure ロールを割り当てる
アプリ インスタンスに接続する前に、Azure Spring Apps Connect Role ロールが付与されている必要があります。 アプリ インスタンスに接続するには、データ アクションのアクセス許可 Microsoft.AppPlatform/Spring/apps/deployments/connect/action
が必要です。
Azure ロールは、Azure portal または Azure CLI を使用して割り当てることができます。
Azure portal を使用して Azure ロールを割り当てるには、次の手順に従います。
Azure Portalを開きます。
既存の Azure Spring Apps サービス インスタンスを開きます
左側のメニューから [アクセス制御 (IAM)] を選択します。
コマンド バーで、[追加] を選択し、[ロールの割り当ての追加] を選択します。
一覧で Azure Spring Apps Connect ロール を検索し、[次へ]を選択します。
[メンバーの選択] を選び、自分のユーザー名を検索して選んでください。
[レビューと割り当て] を選択します。
アプリ インスタンスに接続する
アプリ インスタンスには、Azure portal または Azure CLI を使用して接続できます。
Azure portal を使用してアプリ インスタンスに接続するには、次の手順に従います。
Azure Portalを開きます。
既存の Azure Spring Apps サービス インスタンスを開きます
メニューの左側から [アプリ] を選択し、いずれかのアプリを選択します。
左側のメニューから [コンソール] を選択します。
アプリケーション インスタンスを選びます。
コンテナーで実行するシェルを選択または入力します。
[接続] を選択します。
アプリ インスタンスのトラブルシューティング
アプリ インスタンスに接続したら、ヒープ メモリの状態を確認できます。
次のコマンドを使用して、Java プロセス ID (通常は 1
) を見つけます。
jps
出力は次の例のようになります。
その後、次のコマンドを使用して JDK ツールを実行し、結果を確認します。
jstat -gc 1
出力は次の例のようになります。
アプリ インスタンスから切断する
トラブルシューティングが完了したら、exit
コマンドを使用してアプリ インスタンスから切断するか、Ctrl+d
キーを押します。
トラブルシューティング ツール
次の一覧では、トラブルシューティングに使用できるプレインストール済みツールの一部について説明します。
lsof
- 開いているファイルを一覧表示します。top
- システム概要情報と現在の使用率を表示します。ps
- 実行中のプロセスのスナップショットを取得します。netstat
- ネットワーク接続とインターフェイスの統計情報を出力します。nslookup
- インターネット ネーム サーバーに対話形式でクエリを実行します。ping
- ネットワーク ホストに到達できるかどうかをテストします。nc
- TCP または UDP を使用したネットワーク接続からの読み取りと書き込みをします。wget
- ファイルをダウンロードし、REST API と対話できるようにします。df
- 空きディスク領域の容量を表示します。
jps
、jcmd
、jstat
などの JDK バンドル ツールを使用することもできます。
次の一覧は、使用できるツールを示しています。これは、サービス プランとアプリ展開の種類によって異なります。
- ソース コード、JAR、成果物の展開:
- Basic、Standard、Standard 従量課金 & 専用プラン:
- 共通ツール - はい
- JDK ツール - はい (Java ワークロードの場合のみ)。
- Enterprise プラン:
- 共通ツール - ビルダー で選択した OS スタックによって異なります。 はい (フル OS スタックの場合)。 いいえ (基本 OS スタックの場合)。
- JDK ツール - はい (Java ワークロードの場合のみ)。
- Basic、Standard、Standard 従量課金 & 専用プラン:
- カスタム イメージの展開: イメージにインストールされているツール セットによって異なります。
Note
JDK ツールは、ソース コード 展開の種類のパスには含まれません。 JDK コマンドを実行する前に、export PATH="$PATH:/layers/tanzu-buildpacks_microsoft-openjdk/jdk/bin"
を実行します。
制限事項
アプリケーション インスタンス内でシェル環境を使用するには、次の制限があります。
アプリは非ルート ユーザーとして実行されているため、ルート アクセス許可を必要とする一部のアクションを実行することはできません。 たとえば、システム パッケージ マネージャー
apt / yum
を使用して新しいツールをインストールすることはできません。一部の Linux 機能は禁止されているため、
tcpdump
などの特別な特権を必要とするツールは機能しません。