クイックスタート: ログ、メトリック、トレースを使用した Azure Spring Apps アプリの監視

注意

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

この記事の適用対象: ✔️ Basic または Standard ❌ Enterprise

Azure Spring Apps の組み込み監視機能を使用すると、複雑な問題をデバッグおよび監視できます。 Azure Spring Apps は、Steeltoe 分散トレースと Azure の Application Insights を統合します。 この統合により、Azure portal から強力なログ、メトリック、および分散トレース機能を利用できます。

次の手順では、前のクイックスタートでデプロイしたサンプル アプリで、ログ ストリーミング、Log Analytics、メトリック、分散トレースを使用する方法について説明します。

前提条件

ログ

Azure Spring Apps でログを表示するには、次の 2 つの方法があります。アプリ インスタンスごとのリアルタイム ログのログ ストリーミング、または高度なクエリ機能を使用して集計されたログのログ分析

ログ ストリーミング

ログ ストリーミングを使用するには、Azure CLI で次のコマンドを実行します。

az spring app logs --name solar-system-weather --follow

次の例のような出力が表示されています。

=> ConnectionId:0HM2HOMHT82UK => RequestPath:/weatherforecast RequestId:0HM2HOMHT82UK:00000003, SpanId:|e8c1682e-46518cc0202c5fd9., TraceId:e8c1682e-46518cc0202c5fd9, ParentId: => Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather.Controllers.WeatherForecastController.Get (Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather)
Executing action method Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather.Controllers.WeatherForecastController.Get (Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather) - Validation state: Valid
←[40m←[32minfo←[39m←[22m←[49m: Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather.Controllers.WeatherForecastController[0]

=> ConnectionId:0HM2HOMHT82UK => RequestPath:/weatherforecast RequestId:0HM2HOMHT82UK:00000003, SpanId:|e8c1682e-46518cc0202c5fd9., TraceId:e8c1682e-46518cc0202c5fd9, ParentId: => Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather.Controllers.WeatherForecastController.Get (Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather)
Retrieved weather data from 4 planets
←[40m←[32minfo←[39m←[22m←[49m: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2]

=> ConnectionId:0HM2HOMHT82UK => RequestPath:/weatherforecast RequestId:0HM2HOMHT82UK:00000003, SpanId:|e8c1682e-46518cc0202c5fd9., TraceId:e8c1682e-46518cc0202c5fd9, ParentId: => Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather.Controllers.WeatherForecastController.Get (Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather)
Executing ObjectResult, writing value of type 'System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]][]'.
←[40m←[32minfo←[39m←[22m←[49m: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2]

ヒント

さらに多くのパラメーターとログ ストリーム機能を調べるには、az spring app logs -h を使用します。

Log Analytics

  1. Azure portal で [service | Overview](サービス | 概要) ページに移動し、 [Monitoring](監視) セクションの [Logs](ログ) を選択します。 Azure Spring Apps のいずれかのサンプル クエリで [Run](実行) を選択します。

    [クエリ] ページが開き、[実行] が強調表示されている [ログ] ペインを示す Azure portal のスクリーンショット。

  2. クエリを編集し、表示を警告とエラーのログに制限する Where 句を削除します。

  3. [実行] を選択します。 ログが表示されています。 詳細については、「Azure Monitor でログ クエリの使用を開始する」を参照してください。

    Logs Analytics クエリの結果を示す Azure portal のスクリーンショット。

  4. Log Analytics で使用されるクエリ言語の詳細については、「Azure Monitor ログ クエリ」を参照してください。 一元化されたクライアントからすべての Log Analytics ログを照会する場合は、Azure Data Explorer に関するページを参照してください。

メトリック

  1. Azure portal で [service | Overview](サービス | 概要) ページに移動し、 [Monitoring](監視) セクションの [Metrics](メトリック) を選択します。 最初のメトリックを追加するには、[メトリック] ドロップダウンで [パフォーマンス (.NET)] または [要求 (.NET)] の下の .NET メトリックのどれかを選択します。また、そのメトリックのタイムラインを表示するには、[集計][Avg] を選択します。

    使用可能なフィルターを含む [メトリック] ページを示す Azure portal のスクリーンショット。

  2. ツール バーで [Add filter]\(フィルターの追加\) を選択し、App=solar-system-weather を選択して、solar-system-weather アプリのみの CPU 使用率を表示します。

    フィルターの [プロパティ]、[演算子]、[値] のオプションが強調表示された [メトリック] ページを示す Azure portal のスクリーンショット。

  3. 前の手順で作成したフィルターを破棄し、[分割の適用] を選択します。[値][アプリ] を選択して、さまざまなアプリごとの CPU 使用率を表示します。

    分割の [プロパティ]、[演算子]、[値] のオプションが強調表示された [メトリック] ページを示す Azure portal のスクリーンショット。

分散トレース

  1. Azure portal で [service | Overview](サービス | 概要) ページに移動し、 [Monitoring](監視) セクションの [Distributed tracing](分散トレース) を選択します。 次に、右側の [View application map](アプリケーション マップの表示) タブを選択します。

    [分散トレース] ページを示す Azure portal のスクリーンショット。

  2. これで、アプリ間の呼び出しの状態を確認できるようになりました。

    [アプリケーション マップ] ページを示す Azure portal のスクリーンショット。

  3. solar-system-weatherplanet-weather-provider の間のリンクを選択すると、HTTP メソッドごとの最低速の呼び出しなどの詳細が表示されます。

    アプリケーション マップの詳細を示す Azure portal のスクリーンショット。

  4. 最後に、 [パフォーマンスの調査] を選択して、より強力な組み込みのパフォーマンス分析を調べます。

    [パフォーマンス] ページを示す Azure portal のスクリーンショット。

Azure Spring Apps の組み込み監視機能を使用すると、複雑な問題をデバッグおよび監視できます。 Azure Spring Apps は、Spring Cloud Sleuth と Azure の Application Insights を統合します。 この統合により、Azure portal から強力なログ、メトリック、および分散トレース機能を利用できます。 次の手順では、デプロイされた PetClinic アプリでログ ストリーミング、ログ分析、メトリック、および分散トレースを使用する方法について説明します。

前提条件

ログ

Azure Spring Apps でログを表示するには、次の 2 つの方法があります。アプリ インスタンスごとのリアルタイム ログのログ ストリーミング、または高度なクエリ機能を使用して集計されたログのログ分析

ログ ストリーミング

ログ ストリーミングを使用するには、Azure CLI で次のコマンドを実行します。

az spring app logs \
    --resource-group <resource-group-name> \
    --service <service-instance-name> \
    --name api-gateway \
    --follow

次のようなログが表示されています。

Azure CLI ログ ストリーミング出力のスクリーンショット。

ヒント

さらに多くのパラメーターとログ ストリーム機能を調べるには、az spring app logs -h を使用します。

Log Analytics で使用されるクエリ言語の詳細については、「Azure Monitor ログ クエリ」を参照してください。 一元化されたクライアントからすべての Log Analytics ログのクエリを実行する場合には、Azure Data Explorerに関するページを確認してください。

Log Analytics

  1. [service | Overview](サービス | 概要) ページに移動し、 [Monitoring](監視) セクションの [Logs](ログ) を選択します。 Azure Spring Apps のいずれかのサンプル クエリで [Run](実行) を選択します。

    [実行] が強調表示された [クエリ] ページを示す Azure portal のスクリーンショット。

  2. そして、フィルター処理されたログが表示されます。 詳細については、「Azure Monitor でログ クエリの使用を開始する」を参照してください。

    フィルター処理されたログのクエリ結果を示す Azure portal のスクリーンショット。

メトリック

[Application Insights] ページに移動し、次に [メトリック] ページに移動します。 Spring Boot アプリ、Spring モジュール、依存関係によって提供されるメトリックを確認できます。

次のグラフは、gateway_requests (Spring Cloud Gateway)、hikaricp_connections (JDBC 接続)、http_client_requests を示しています。

選択した値のグラフを含む Application Insights の [メトリック] ページを示す Azure portal のスクリーンショット。

Spring Boot では、JVM、CPU、Tomcat、Logback など、いくつかのコア メトリックが登録されます。 Spring Boot の自動構成により、Spring MVC によって処理される要求のインストルメンテーションが有効になります。 3 つの REST コントローラー (OwnerResourcePetResourceVisitResource) はすべて、@Timed マイクロメーター注釈によってクラス レベルでインストルメント化されます。

customers-service アプリケーションでは、次のカスタム メトリックが有効になっています。

  • @Timed: petclinic.owner
  • @Timed: petclinic.pet

visits-service アプリケーションでは、次のカスタム メトリックが有効になっています。

  • @Timed: petclinic.visit

これらのカスタム メトリックは、[メトリック] ページで確認できます。

カスタム メトリックを含む Application Insights の [メトリック] ページを示す Azure portal のスクリーンショット。

Application Insights の可用性テスト機能を使用して、アプリケーションの可用性を監視できます。

[可用性テスト] セクションが強調表示された Application Insights の [可用性] ページを示す Azure portal のスクリーンショット。

[ライブ メトリック] ページに移動すると、低遅延 (1 秒未満) のライブ メトリックが表示されます。

Application Insights の [ライブ メトリック] ページの低遅延グラフを示す Azure portal のスクリーンショット。

トレース

Azure Spring Apps によって作成された Application Insights を開き、Spring アプリケーションの監視を開始します。

[アプリケーション マップ] ページに移動します。

マップ コンポーネントを含む Application Insights の [アプリケーション マップ] ページを示す Azure portal のスクリーンショット。

[パフォーマンス] ページに移動します。

Application Insights の [パフォーマンス] ページと操作の詳細を示す Azure portal のスクリーンショット。

[依存関係] タブに移動すると、依存関係 (特に SQL 呼び出し) のパフォーマンスの数値が表示されます。

[依存関係] テーブルが強調表示された Application Insights の [パフォーマンス] ページを示す Azure portal のスクリーンショット。

SQL 呼び出しを選択して、コンテキスト内のエンドツーエンド トランザクションを表示します。

[エンドツーエンド トランザクションの詳細] ページを示す Azure portal のスクリーンショット。

[失敗] ページと [例外] タブに移動すると、例外のコレクションが表示されます。

Application Insights の [失敗] ページを示す Azure portal のスクリーンショット。

例外を選択して、コンテキスト内のエンドツーエンドのトランザクションとスタックトレースを表示します。

例外の詳細と呼び出し履歴を含む [エンドツーエンドのトランザクションの詳細] ページを示す Azure portal のスクリーンショット。

リソースをクリーンアップする

後続のクイック スタートおよびチュートリアルを引き続き実行する場合は、これらのリソースをそのまま残しておくことができます。 不要になったら、リソース グループを削除します。これにより、リソース グループ内のリソースが削除されます。 Azure CLI を使用してリソース グループを削除するには、次のコマンドを使用します。

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

前のクイックスタートでは、既定のリソース グループ名も設定しました。 次のクイックスタートに進まない場合は、次の CLI コマンドを実行して、既定値をクリアします。

az config set defaults.group=

次の手順

Azure Spring Apps の監視機能の詳細については、以下を参照してください。