Azure Spring Apps ジョブのログをリアルタイムでストリームする (プレビュー)

Note

Azure Spring Apps は、Azure Spring Cloud サービスの新しい名前です。 サービスの名前は新しくなりましたが、スクリーンショット、ビデオ、図などの資産の更新に取り組んでいる間、場所によってはしばらく古い名前が表示されます。

この記事の適用対象:❌ 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 ロールを割り当てるには、次の手順に従います。

  1. Azure Portalを開きます。

  2. Azure Spring Apps サービス インスタンスを開きます。

  3. ナビゲーション ウィンドウで [アクセス制御 (IAM)] を選びます。

  4. [アクセスの制御 (IAM)] ページで [追加] を選び、[ロールの割り当ての追加] を選んでください。

    Azure portal の [アクセス制御 (IAM)] ページのスクリーンショット。[ロールの割り当て] オプションが強調表示されています。

  5. [ロールの割り当ての追加] ページの [名前] の一覧で、ターゲット ロールを検索して選び、[次へ] を選んでください。

    Azure portal の [ロールの割り当ての追加] ページのスクリーンショット。[Azure Spring Apps ジョブ ログ閲覧者ロール] 名が強調表示されています。

  6. [メンバー] を選び、自分のユーザー名を検索して選んでください。

  7. [レビューと割り当て] を選択します。

ログ末尾を表示する

このセクションでは、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 がご利用の仮想ネットワークに追加されます。 これが問題である場合は注意してください。

公衆ネットワークでログ ストリーミング エンドポイントを有効にするには、次の手順に従います。

  1. ご利用の仮想ネットワークにデプロイされている Azure Spring Apps サービス インスタンスを選び、ナビゲーション ウィンドウで [ネットワーク] を選びます。

  2. [VNet インジェクション] タブを選びます。

  3. [公衆ネットワークのデータプレーン リソース] の状態を [有効] に切り替えて、公衆ネットワークでのログ ストリーミング エンドポイントを有効にします。 このプロセスには数分かかります。

    Azure portal の [ネットワーク] ページのスクリーンショット。[Vnet インジェクション] タブが選択され、[トラブルシューティング] セクションが強調表示されています。

ログ ストリーム パブリック エンドポイントを有効にすると、通常のインスタンスにアクセスする場合と同様に、公衆ネットワークからジョブ ログにアクセスできます。

ログ ストリーミング パブリック エンドポイントへのトラフィックをセキュリティで保護する

ジョブのログ ストリーミングでは、Azure RBAC を使用してジョブへの接続の認証が行われます。 その結果、適切なロールを持つユーザーのみがログにアクセスできます。

それらに対するパブリック エンドポイントを公開するときにジョブのセキュリティを実現するには、ネットワーク セキュリティ グループを使って自分のサービスへのネットワーク トラフィックをフィルター処理することにより、エンドポイントをセキュリティで保護します。 詳細については、「Azure portal を使用してネットワーク セキュリティ グループでネットワーク トラフィックをフィルター処理する」を参照してください。 ネットワーク セキュリティ グループには、いくつかの種類の Azure リソースとの受信ネットワーク トラフィックまたは送信ネットワーク トラフィックを許可または拒否するセキュリティ規則が含まれています。 規則ごとに、送信元と宛先、ポート、プロトコルを指定できます。

Note

ログ ストリーム パブリック エンドポイントを有効にした後で、インターネットから仮想ネットワーク インジェクション インスタンスのジョブ ログにアクセスできない場合は、ネットワーク セキュリティ グループを調べて、そのような受信トラフィックが許可されているかどうかを確認します。

次の表は、Microsoft がお勧めする基本的なルールの例を示しています。 エンドポイント <service-name>.private.azuremicroservices.ionslookup などのコマンドを使用して、サービスのターゲット IP アドレスを取得できます。

Priority 名前 [ポート] プロトコル ソース Destination (公開先) アクション
100 ルール名 80 TCP インターネット サービス IP アドレス Allow
110 ルール名 443 TCP インターネット サービス IP アドレス Allow

次のステップ