ASP.NET Core 5 Web API에서 QuickStart 상태 확인 설정
이 예에서는 가비지 수집기를 기반으로 한 메모리 검사가 설정됩니다. AspNetCore.Diagnostics.HealthChecks 라이브러리를 사용하여 보다 친숙한 사용자 인터페이스에 결과를 표시합니다.
설정
첫 번째 단계는 환경에서 새 ASP.NET Core WebApi 프로젝트를 만드는 것입니다. 이 예에서는 true로 설정된 openApi와 .NET 5를 사용합니다.
패키지
다음 너겟 패키지를 설치합니다.
서비스 구성
public void ConfigureServices(IServiceCollection services)
{
services.AddHealthChecks().AddCheck<MemoryHealthCheck>("Memory");
services.AddHealthChecksUI(opt =>
{
opt.SetEvaluationTimeInSeconds(15); //time in seconds between check
}).AddInMemoryStorage();
services.AddControllers();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebApi.HealthCheck", Version = "v1" });
});
}
구성
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebApi.HealthCheck v1"));
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
app.UseRouting()
.UseEndpoints(config =>
{
config.MapHealthChecks("/hc", new HealthCheckOptions
{
Predicate = _ => true,
ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
});
config.MapHealthChecksUI(setup =>
{
setup.UIPath = "/hc-ui";
setup.ApiPath = "/hc-json";
});
config.MapDefaultControllerRoute();
});
}
MemoryCheck.cs
public class MemoryHealthCheck : IHealthCheck
{
private readonly IOptionsMonitor<MemoryCheckOptions> _options;
public MemoryHealthCheck(IOptionsMonitor<MemoryCheckOptions> options)
{
_options = options;
}
public string Name => "memory_check";
public Task<HealthCheckResult> CheckHealthAsync(
HealthCheckContext context,
CancellationToken cancellationToken = default(CancellationToken))
{
var options = _options.Get(context.Registration.Name);
// Include GC information in the reported diagnostics.
var allocated = GC.GetTotalMemory(forceFullCollection: false);
var data = new Dictionary<string, object>()
{
{ "AllocatedBytes", allocated },
{ "Gen0Collections", GC.CollectionCount(0) },
{ "Gen1Collections", GC.CollectionCount(1) },
{ "Gen2Collections", GC.CollectionCount(2) },
};
var status = (allocated < options.Threshold) ?
HealthStatus.Healthy : context.Registration.FailureStatus;
return Task.FromResult(new HealthCheckResult(
status,
description: "Reports degraded status if allocated bytes " +
$">= {options.Threshold} bytes.",
exception: null,
data: data));
}
}
public class MemoryCheckOptions
{
// Failure threshold (in bytes)
public long Threshold { get; set; } = 1024L * 1024L * 1024L;
}
appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"HealthChecksUI": {
"HealthChecks": [
{
"Name": "Web App",
"Uri": "/hc"
}
]
}
}
결과
참조
Reference
이 문제에 관하여(ASP.NET Core 5 Web API에서 QuickStart 상태 확인 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/caiocesar/quickstart-healthcheck-setup-in-asp-net-core-5-web-api-2l30텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)