このチュートリアルでは、ASP.NET Core アプリケーションのテレメトリを使用して、機能フラグの評価とカスタム イベントを追跡します。 テレメトリを使用すると、機能管理戦略に関する情報に基づいた意思決定を行うことができます。 機能フラグのテレメトリを有効にするには、テレメトリが有効になっている機能フラグを概要で作成して使用します。 先に進む前に、テレメトリを有効にして、構成ストアに Greeting という名前の機能フラグを作成してください。 このチュートリアルは、 ASP.NET Core アプリケーションでバリアント機能フラグを使用するためのチュートリアルに基づいています。
[前提条件]
- テレメトリが有効になっている機能フラグのバリアントは、機能フラグのテレメトリを有効にするから来ています。
- ASP.NET Core アプリケーションでのバリアント機能フラグの使用からのアプリケーション。
ASP.NET Core アプリケーションにテレメトリを追加する
Application Insights パッケージの最新バージョンを追加します。
dotnet add package Microsoft.ApplicationInsights.AspNetCore dotnet add package Microsoft.FeatureManagement.Telemetry.ApplicationInsightsApplication Insights テレメトリ サービスをコンテナーに追加します。 Azure App Configuration を追加する行の後に、次のコードを追加します。
// Add Application Insights telemetry builder.Services.AddApplicationInsightsTelemetry(options => { options.ConnectionString = builder.Configuration.GetConnectionString("ApplicationInsights"); });機能管理サービスを更新して、テレメトリの発行を有効にします。 既存の機能管理構成を変更して、
AddApplicationInsightsTelemetry()呼び出しを含めます。// Add Azure App Configuration and feature management services to the container. builder.Services.AddAzureAppConfiguration() .AddFeatureManagement() .WithTargeting() .AddApplicationInsightsTelemetry();発信イベントをターゲット ID に関連付けるターゲット ミドルウェアを追加します。 行
app.UseAzureAppConfiguration();の後に次のコードを追加します。// Use targeting middleware to associate events with the targeting ID app.UseMiddleware<TargetingHttpContextMiddleware>();
カスタム イベントを追跡する
次に、ユーザーが見積もりを好むタイミングを追跡するカスタム イベントを追加します。 同様のアクションを処理し、Application Insights を使用して追跡するバックエンド エンドポイントを作成します。
Index.cshtml.csで、Application Insights の using ステートメントを追加します。
using Microsoft.ApplicationInsights;IndexModelを調整してTelemetryClientを取得します。public class IndexModel( TelemetryClient telemetry, ILogger<IndexModel> logger, IVariantFeatureManagerSnapshot featureManager ) : PageModel { private readonly TelemetryClient _telemetry = telemetry;さらに、OnPostLike() 関数を追加して、エンドポイントの使用時に "いいね!" というイベントを追跡します。
public IActionResult OnPostLike() { _telemetry.TrackEvent("Liked"); return new JsonResult(new { success = true }); }Index.cshtml で、スクリプト タグの前に偽造防止トークンを追加します。
<form method="post" style="display:none;"> @Html.AntiForgeryToken() </form> <script> ...次の内容で heartClicked 関数を調整します。
async function heartClicked(button) { const response = await fetch(`?handler=Like`, { method: "POST" }); if (response.ok) { const data = await response.json(); if (data.success) { var icon = button.querySelector('i'); icon.classList.toggle('far'); icon.classList.toggle('fas'); } } }OnPostLikeメソッドは、like アクションを処理します。 ユーザーがハート ボタンをクリックしたときに、TelemetryClientを使用してカスタムの "いいね!" イベントを追跡します。
アプリをビルドして実行する
Application Insights リソースに接続するには、接続文字列が必要です。
ConnectionStrings:ApplicationInsightsをユーザー シークレットとして設定します。dotnet user-secrets set ConnectionStrings:ApplicationInsights "<your-Application-Insights-Connection-String>"環境変数を設定した後、ターミナルを再起動し、アプリケーションをリビルドして実行します。
dotnet build dotnet run
テレメトリを収集する
アプリケーションをデプロイして、ユーザーからのテレメトリの収集を開始します。 その機能をテストするには、多数のテスト ユーザーを作成することで、ユーザー アクティビティをシミュレートできます。 各ユーザーは異なる挨拶メッセージのいずれかを受け取り、ハートボタンをクリックして引用を「いいね!」することでアプリケーションと対話できます。 ユーザー ベースが増えるにつれて、Azure App Configuration で収集されるテレメトリ データの量の増加を監視できます。 さらに、データをドリルダウンして、機能フラグの各バリアントがユーザーの動作に与える影響を分析できます。
その他のリソース
- 今日の名言サンプル
- .NET 機能管理ライブラリの完全な機能の概要については、 .NET 機能管理のリファレンス ドキュメントを参照してください。