クイックスタート: ログ、メトリック、トレースを使用した 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
Azure portal で [service | Overview](サービス | 概要) ページに移動し、 [Monitoring](監視) セクションの [Logs](ログ) を選択します。 Azure Spring Apps のいずれかのサンプル クエリで [Run](実行) を選択します。
クエリを編集し、表示を警告とエラーのログに制限する Where 句を削除します。
[実行] を選択します。 ログが表示されています。 詳細については、「Azure Monitor でログ クエリの使用を開始する」を参照してください。
Log Analytics で使用されるクエリ言語の詳細については、「Azure Monitor ログ クエリ」を参照してください。 一元化されたクライアントからすべての Log Analytics ログを照会する場合は、Azure Data Explorer に関するページを参照してください。
メトリック
Azure portal で [service | Overview](サービス | 概要) ページに移動し、 [Monitoring](監視) セクションの [Metrics](メトリック) を選択します。 最初のメトリックを追加するには、[メトリック] ドロップダウンで [パフォーマンス (.NET)] または [要求 (.NET)] の下の .NET メトリックのどれかを選択します。また、そのメトリックのタイムラインを表示するには、[集計] で [Avg] を選択します。
ツール バーで [Add filter]\(フィルターの追加\) を選択し、
App=solar-system-weather
を選択して、solar-system-weather アプリのみの CPU 使用率を表示します。前の手順で作成したフィルターを破棄し、[分割の適用] を選択します。[値] で [アプリ] を選択して、さまざまなアプリごとの CPU 使用率を表示します。
分散トレース
Azure portal で [service | Overview](サービス | 概要) ページに移動し、 [Monitoring](監視) セクションの [Distributed tracing](分散トレース) を選択します。 次に、右側の [View application map](アプリケーション マップの表示) タブを選択します。
これで、アプリ間の呼び出しの状態を確認できるようになりました。
solar-system-weather と planet-weather-provider の間のリンクを選択すると、HTTP メソッドごとの最低速の呼び出しなどの詳細が表示されます。
最後に、 [パフォーマンスの調査] を選択して、より強力な組み込みのパフォーマンス分析を調べます。
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
次のようなログが表示されています。
ヒント
さらに多くのパラメーターとログ ストリーム機能を調べるには、az spring app logs -h
を使用します。
Log Analytics で使用されるクエリ言語の詳細については、「Azure Monitor ログ クエリ」を参照してください。 一元化されたクライアントからすべての Log Analytics ログのクエリを実行する場合には、Azure Data Explorerに関するページを確認してください。
Log Analytics
[service | Overview](サービス | 概要) ページに移動し、 [Monitoring](監視) セクションの [Logs](ログ) を選択します。 Azure Spring Apps のいずれかのサンプル クエリで [Run](実行) を選択します。
そして、フィルター処理されたログが表示されます。 詳細については、「Azure Monitor でログ クエリの使用を開始する」を参照してください。
メトリック
[Application Insights] ページに移動し、次に [メトリック] ページに移動します。 Spring Boot アプリ、Spring モジュール、依存関係によって提供されるメトリックを確認できます。
次のグラフは、gateway_requests
(Spring Cloud Gateway)、hikaricp_connections
(JDBC 接続)、http_client_requests
を示しています。
Spring Boot では、JVM、CPU、Tomcat、Logback など、いくつかのコア メトリックが登録されます。 Spring Boot の自動構成により、Spring MVC によって処理される要求のインストルメンテーションが有効になります。 3 つの REST コントローラー (OwnerResource
、PetResource
、VisitResource
) はすべて、@Timed
マイクロメーター注釈によってクラス レベルでインストルメント化されます。
customers-service
アプリケーションでは、次のカスタム メトリックが有効になっています。
- @Timed:
petclinic.owner
- @Timed:
petclinic.pet
visits-service
アプリケーションでは、次のカスタム メトリックが有効になっています。
- @Timed:
petclinic.visit
これらのカスタム メトリックは、[メトリック] ページで確認できます。
Application Insights の可用性テスト機能を使用して、アプリケーションの可用性を監視できます。
[ライブ メトリック] ページに移動すると、低遅延 (1 秒未満) のライブ メトリックが表示されます。
トレース
Azure Spring Apps によって作成された Application Insights を開き、Spring アプリケーションの監視を開始します。
[アプリケーション マップ] ページに移動します。
[パフォーマンス] ページに移動します。
[依存関係] タブに移動すると、依存関係 (特に SQL 呼び出し) のパフォーマンスの数値が表示されます。
SQL 呼び出しを選択して、コンテキスト内のエンドツーエンド トランザクションを表示します。
[失敗] ページと [例外] タブに移動すると、例外のコレクションが表示されます。
例外を選択して、コンテキスト内のエンドツーエンドのトランザクションとスタックトレースを表示します。
リソースをクリーンアップする
後続のクイック スタートおよびチュートリアルを引き続き実行する場合は、これらのリソースをそのまま残しておくことができます。 不要になったら、リソース グループを削除します。これにより、リソース グループ内のリソースが削除されます。 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 の監視機能の詳細については、以下を参照してください。