Azure Spring Apps ジョブのログをリアルタイムでストリームする (プレビュー)
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 CLI を使用して、トラブルシューティングのためにジョブのリアルタイム ログを取得する方法について説明します。 診断設定を使って、Azure Spring Apps で診断データを分析することもできます。 詳しくは、「診断設定でログとメトリックを分析する」をご覧ください。 ストリーミング ログの詳細については、「Azure Spring Apps のアプリケーション コンソール ログをリアルタイムでストリーミングする」と「Azure Spring Apps のマネージド コンポーネント ログをリアルタイムでストリームする」を参照してください。
前提条件
- Azure Spring Apps 拡張機能を備えた Azure CLI バージョン 1.24.0 以降。 この拡張機能をインストールするには、
az extension add --name spring
コマンドを使用します。
Azure ロールを割り当てる
ジョブのログをストリームするには、関連する Azure ロールが割り当てられている必要があります。 次の表に、必要なロールと、このロールにアクセス許可が付与される操作を示します。
必要なロール | 操作 |
---|---|
Azure Spring Apps ジョブ ログ閲覧者ロール | Microsoft.AppPlatform/Spring/jobs/executions/logstream/action Microsoft.AppPlatform/Spring/jobs/executions/listInstances/action |
Azure portal を使用して Azure ロールを割り当てるには、次の手順に従います。
Azure Portalを開きます。
Azure Spring Apps サービス インスタンスを開きます。
ナビゲーション ウィンドウで [アクセス制御 (IAM)] を選びます。
[アクセスの制御 (IAM)] ページで [追加] を選び、[ロールの割り当ての追加] を選んでください。
[ロールの割り当ての追加] ページの [名前] の一覧で、ターゲット ロールを検索して選び、[次へ] を選んでください。
[メンバー] を選び、自分のユーザー名を検索して選んでください。
[レビューと割り当て] を選択します。
ログ末尾を表示する
このセクションでは、Azure CLI を使ってログ末尾を生成する例を示します。
特定のインスタンスのログ末尾を表示する
ジョブがトリガーされるたびに、新しいジョブの実行が作成されます。 また、ジョブの並列処理設定に応じて、複数のレプリカまたはインスタンスが並列で実行されます。
ジョブ実行内のすべてのインスタンスを一覧表示するには、次のコマンドを使用します。
az spring job execution instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--job <job-name> \
--execution <job-execution-name>
ジョブ実行のすべてのインスタンス名を出力から取得できます。
特定のインスタンスのログ末尾を表示するには、次の例に示すように、-i/--instance
引数を指定して az spring job logs
コマンドを使用します。
az spring job logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <job-name> \
--execution <job-execution-name> \
--instance <instance-name>
すべてのインスタンスのログ末尾を 1 つのコマンドで表示する
すべてのインスタンスのログ末尾を表示するには、次の例に示すように、--all-instances
引数を使用します。 インスタンス名は、各ログ行のプレフィックスです。 複数のインスタンスがある場合、ログはインスタンスごとにバッチで出力されます。 この方法では、あるインスタンスのログが別のインスタンスのログとインターリーブされることはありません。
az spring job logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <job-name> \
--execution <job-execution-name> \
--all-instances
新しいログを継続的にストリームする
既定では、az spring job logs
は、コンソールにストリームされた既存のログのみを出力して終了します。 新しいログをストリームする場合は、-f/--follow
引数を追加します。
-f/--follow
オプションを使ってインスタント ログを追尾すると、Azure Spring Apps ログ ストリーミング サービスは、ジョブがログを常に書き込むのでない限り、クライアントにハートビート ログを 1 分ごとに送信します。 ハートビート ログ メッセージの形式は 2023-12-18 09:12:17.745: No log from server
です。
特定のインスタンスのログをストリームする
特定のインスタンスのインスタンス名とストリーム ログを取得するには、次のコマンドを使用します。
az spring job execution instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--job <job-name> \
--execution <job-execution-name>
az spring job logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <job-name> \
--execution <job-execution-name> \
--instance <instance-name> \
--follow
すべてのインスタンスのログをストリームする
すべてのインスタンスのログをストリームするには、次のコマンドを使用します。
az spring job logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <job-name> \
--execution <job-execution-name> \
--all-instances \
--follow
ジョブ実行内の複数のインスタンスのログをストリームすると、あるインスタンスのログが別のインスタンスのログとインターリーブされます。
仮想ネットワーク インジェクション インスタンスのログをストリームする
カスタム仮想ネットワークにデプロイされた Azure Spring Apps インスタンスの場合、既定でプライベート ネットワークからログ ストリーミングにアクセスできます。 詳細については、「仮想ネットワークに Azure Spring Apps をデプロイする」を参照してください。
Azure Spring Apps を使用すると、公衆ネットワークからリアルタイムのジョブ ログにアクセスすることもできます。
Note
公衆ネットワークでログ ストリーミング エンドポイントを有効にすると、パブリック受信 IP がご利用の仮想ネットワークに追加されます。 これが問題である場合は注意してください。
公衆ネットワークでログ ストリーミング エンドポイントを有効にするには、次の手順に従います。
ログ ストリーム パブリック エンドポイントを有効にすると、通常のインスタンスにアクセスする場合と同様に、公衆ネットワークからジョブ ログにアクセスできます。
ログ ストリーミング パブリック エンドポイントへのトラフィックをセキュリティで保護する
ジョブのログ ストリーミングでは、Azure RBAC を使用してジョブへの接続の認証が行われます。 その結果、適切なロールを持つユーザーのみがログにアクセスできます。
それらに対するパブリック エンドポイントを公開するときにジョブのセキュリティを実現するには、ネットワーク セキュリティ グループを使って自分のサービスへのネットワーク トラフィックをフィルター処理することにより、エンドポイントをセキュリティで保護します。 詳細については、「Azure portal を使用してネットワーク セキュリティ グループでネットワーク トラフィックをフィルター処理する」を参照してください。 ネットワーク セキュリティ グループには、いくつかの種類の Azure リソースとの受信ネットワーク トラフィックまたは送信ネットワーク トラフィックを許可または拒否するセキュリティ規則が含まれています。 規則ごとに、送信元と宛先、ポート、プロトコルを指定できます。
Note
ログ ストリーム パブリック エンドポイントを有効にした後で、インターネットから仮想ネットワーク インジェクション インスタンスのジョブ ログにアクセスできない場合は、ネットワーク セキュリティ グループを調べて、そのような受信トラフィックが許可されているかどうかを確認します。
次の表は、Microsoft がお勧めする基本的なルールの例を示しています。 エンドポイント <service-name>.private.azuremicroservices.io
で nslookup
などのコマンドを使用して、サービスのターゲット IP アドレスを取得できます。
Priority | 名前 | [ポート] | プロトコル | ソース | Destination (公開先) | アクション |
---|---|---|---|---|---|---|
100 | ルール名 | 80 | TCP | インターネット | サービス IP アドレス | Allow |
110 | ルール名 | 443 | TCP | インターネット | サービス IP アドレス | Allow |