SAKURUG TECHBLOG

ASP.NET CoreとAzure App Serviceでの正常性チェック

timestampauthor-name
Tomomitsu

正常性チェックとは?

正常性チェックとは通常、アプリの状態を確認する目的で外部の監視サービスまたは、コンテナオーケストレータとともに使用されます。
監視システムからは作成するアプリの正常性チェックの種類とエンドポイントの設定方法が指示されます。
また、そのアプリケーションが例えばデータベースを使用していたならば一般にデータベースの応答確認、ストレージを使用していたならばストレージの応答確認までがチェック内容です。

基本的な正常性プローブ

多くのアプリでは、アプリが要求を処理できることを報告することで基本的な正常性チェックができます。
基本的な構成では、正常性チェックサービスを登録して、正常性チェックミドルウェアを呼び出します。このミドルウェアがURLエンドポイントにおける正常性を返します。
既定では、特定の依存関係だとかデータベース・ストレージといったものをテストする正常性チェックは登録されていません。必要に応じてこれらを登録する必要があります。
正常性エンドポイントが応答できる場合、このアプリは正常であると見なします。

構成例は以下の通りです。

program.cs

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddHealthChecks();

var app = builder.Build();

app.MapHealthChecks("/healthz");

app.Run();


Blazor Serverアプリに正常性チェックを登録してみる

.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」にアクセスしてみます。



正常性チェックが実行されて正常性が確認できました。
コンソールのログからも正常性チェックが実行されていることを確認できます。

Azure App Serviceにデプロイ

App ServiceへはVisual Studioからリソース作成しデプロイまで行えます。


まず、発行ターゲットをAzureにします。


次に、App Serviceを選択します。特に理由がなければLinuxでよいと思います。


ここで、それぞれの環境に応じてApp Service Planを作成していきます。また、既存のApp Service Planを選択してそこにApp Serviceを作成することもできます。
このあたりの手順は環境依存や事情によって異なりますので割愛します。
無事、発行プロファイルができたら発行ボタンを押下してApp Serviceにデプロイします。

Azure Portalでの正常性チェックの構成

Azure Portalで先ほど作成したApp Serviceのリソースを選択します。


概要の欄に正常性チェックが未構成の状態でありますのでこれをクリックします。

正常性チェックを有効化します。


先ほど、作成したアプリケーションの正常性チェックプローブパスを設定します。
設定が終わったら、保存をクリックします。

メトリック

正常性チェック構成すると正常性チェックについてのメトリック情報がAzure Portal上で見えます。






記事をシェアする

ABOUT ME

author-image
Tomomitsu
2017年2月中途入社。業務ではAzureへのモダナイゼーションを行っています。Microsoft MVP for Developer Technologies 2022 -

© SAKURUG co.,ltd.