正常性チェックとは通常、アプリの状態を確認する目的で外部の監視サービスまたは、コンテナオーケストレータとともに使用されます。
監視システムからは作成するアプリの正常性チェックの種類とエンドポイントの設定方法が指示されます。
また、そのアプリケーションが例えばデータベースを使用していたならば一般にデータベースの応答確認、ストレージを使用していたならばストレージの応答確認までがチェック内容です。
多くのアプリでは、アプリが要求を処理できることを報告することで基本的な正常性チェックができます。
基本的な構成では、正常性チェックサービスを登録して、正常性チェックミドルウェアを呼び出します。このミドルウェアがURLエンドポイントにおける正常性を返します。
既定では、特定の依存関係だとかデータベース・ストレージといったものをテストする正常性チェックは登録されていません。必要に応じてこれらを登録する必要があります。
正常性エンドポイントが応答できる場合、このアプリは正常であると見なします。
構成例は以下の通りです。
program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddHealthChecks();
var app = builder.Build();
app.MapHealthChecks("/healthz");
app.Run();
.NET 7のBlazor Serverのテンプレートに正常性チェックを追加してApp Serviceにデプロイしてみたいと思います。
まず、Program.csに次のようにコードを追加します。
using HealthCheckTest.Data;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton<WeatherForecastService>();
builder.Services.AddHealthChecks(); // 追加
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");
app.MapHealthChecks("/healthz"); // 追加
app.Run();
ここでできたアプリケーションを実行して、「/healthz」にアクセスしてみます。
正常性チェックが実行されて正常性が確認できました。
コンソールのログからも正常性チェックが実行されていることを確認できます。
App ServiceへはVisual Studioからリソース作成しデプロイまで行えます。
まず、発行ターゲットをAzureにします。
次に、App Serviceを選択します。特に理由がなければLinuxでよいと思います。
ここで、それぞれの環境に応じてApp Service Planを作成していきます。また、既存のApp Service Planを選択してそこにApp Serviceを作成することもできます。
このあたりの手順は環境依存や事情によって異なりますので割愛します。
無事、発行プロファイルができたら発行ボタンを押下してApp Serviceにデプロイします。
Azure Portalで先ほど作成したApp Serviceのリソースを選択します。
概要の欄に正常性チェックが未構成の状態でありますのでこれをクリックします。
正常性チェックを有効化します。
先ほど、作成したアプリケーションの正常性チェックプローブパスを設定します。
設定が終わったら、保存をクリックします。
正常性チェック構成すると正常性チェックについてのメトリック情報がAzure Portal上で見えます。