Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Dağıtılmış bir sistemde sistem durumu denetimleri, tek tek düğümlerin veya hizmetlerin durumunun, kullanılabilirliğinin ve performansının düzenli değerlendirmeleridir. Bu denetimler, sistemin doğru ve verimli bir şekilde çalışmasını sağlar. Sistem güvenilirliği için sistem durumu denetimleri temel öneme sahiptir ve genellikle karar alma ve düzeltici eylemler için analiz edilen sonuçlarla düzenli aralıklarla gerçekleştirilir.
Aşağıdaki sağlık kontrolü durum sonuçları mümkündür:
Buna ek olarak, sistem durumu denetimleri genellikle çeşitli tanılama ölçümlerini bildirir. Daha fazla bilgi için bkz . Tanılama Ölçümleri: Microsoft.Extensions.Diagnostics.HealthChecks.
Kaynak kullanımı sistem durumu denetimleri
.NET uygulamalarınızın kaynak kullanımı üzerinde sistem durumu denetimleri gerçekleştirmek için Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization'a bir paket başvurusu ekleyin. Bir IServiceCollection örnekte, çağrısından AddHealthChecks öğesine zincirleme AddResourceUtilizationHealthCheck. Aşağıdaki örnekte, bir örneğe kaynak kullanımı sistem durumu denetimi AddResourceUtilizationHealthCheck eklemek için uzantı yönteminin nasıl kullanılacağı IServiceCollection gösterilmektedir:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using Microsoft.Extensions.Hosting;
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddHealthChecks()
.AddResourceUtilizationHealthCheck();
var app = builder.Build();
var healthCheckService = app.Services.GetRequiredService<HealthCheckService>();
var result = await healthCheckService.CheckHealthAsync();
Console.WriteLine($"{result.Status} {result.TotalDuration}");
app.Run();
Yukarıdaki kod:
- Yeni bir HostApplicationBuilder örneği oluşturur.
- Uzantı yöntemine yapılan çağrıdan AddHealthChecks bir çağrıyı zincirleyerek kaynak kullanımı için AddResourceUtilizationHealthCheck sistem durumu denetimi ekler.
-
IHost Örneği değişken olarak
appoluşturur. - Hizmet sağlayıcısından HealthCheckService sınıfının bir örneğini alır.
- Sistem durumu denetimi gerçekleştirir ve sonucu görüntüler.
- Uygulamayı çalıştırır.
Uygulama ömrü sistem durumu denetimleri
uygulamasının uygulama ömrü olayları IHostApplicationLifetimeüzerinde sistem durumu denetimleri gerçekleştirmek için Microsoft.Extensions.Diagnostics.HealthChecks.CommonAddApplicationLifecycleHealthCheckbulunan uzantı yöntemini kullanın.
Bu sağlayıcı, uygulamanın yalnızca tamamen etkin olduğunda iyi durumda olduğunu gösterir. Yaşam süresi nesnesi uygulamanın başlatıldığını belirtene kadar sağlayıcı uygulamayı iyi durumda değil olarak bildirir. Uygulama kapatılmaya başladığında sağlayıcı uygulamayı iyi durumda değil olarak bildirir.
Kitaplık, tüketicilerin herhangi bir zamanda sistem durumu denetimi istemesini sağlayan bir HealthCheckService kullanıma sunar. Aşağıdaki ExampleService uygulamayı göz önünde bulundurun:
using System.Runtime.CompilerServices;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
internal class ExampleLifecycle(
HealthCheckService healthCheckService,
ILogger<ExampleLifecycle> logger) : IHostedLifecycleService
{
Task IHostedService.StartAsync(
CancellationToken cancellationToken) =>
CheckHealthAsync(cancellationToken: cancellationToken);
Task IHostedLifecycleService.StartedAsync(
CancellationToken cancellationToken) =>
CheckHealthAsync(cancellationToken: cancellationToken);
Task IHostedLifecycleService.StartingAsync(
CancellationToken cancellationToken) =>
CheckHealthAsync(cancellationToken: cancellationToken);
Task IHostedService.StopAsync(
CancellationToken cancellationToken) =>
CheckHealthAsync(cancellationToken: cancellationToken);
Task IHostedLifecycleService.StoppedAsync(
CancellationToken cancellationToken) =>
CheckHealthAsync(cancellationToken: cancellationToken);
Task IHostedLifecycleService.StoppingAsync(
CancellationToken cancellationToken) =>
CheckHealthAsync(cancellationToken: cancellationToken);
public Task ReadyAsync() => CheckHealthAsync();
private async Task CheckHealthAsync(
[CallerMemberName] string eventName = "",
CancellationToken cancellationToken = default)
{
HealthReport result =
await healthCheckService.CheckHealthAsync(cancellationToken);
logger.LogInformation(
"{EventName}: {Status}", eventName, result.Status);
}
}
Yukarıdaki kod:
- Arabirimini uygulayan
ExampleLifecycleyeni IHostedService bir sınıf tanımlar. - Aşağıdaki parametreleri kabul eden bir birincil oluşturucu tanımlar:
- HealthCheckService sınıfının örneği.
- ILogger<TCategoryName> sınıfının örneği.
- Arabirimini IHostedLifecycleService uygular ve her yöntem yöntemini çağırır
CheckHealthAsync. - yöntemini çağıran
ReadyAsyncbirCheckHealthAsyncyöntem tanımlar. - Çağıranın adını ve iptal belirtecini yakalayan ve ardından örnekten
CheckHealthAsyncsistem durumu denetimi isteyen özelHealthCheckServicebir yöntem tanımlar.resultdaha sonra günlüğe kaydedilir.
Sistem durumu denetimi hizmetinin durumunu HealthStatus.Healthy bildireceği tek zaman, uygulama başlatıldıktan sonra ve durdurulmadan önce çağrılır. Lütfen aşağıdaki Program.cs göz önünde bulundurun:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using Microsoft.Extensions.Hosting;
var builder = Host.CreateApplicationBuilder(args);
var healthChecksBuilder = builder.Services
.AddHostedService<ExampleLifecycle>()
.AddHealthChecks()
.AddApplicationLifecycleHealthCheck();
// You could use the healthChecksBuilder instance to add more checks...
var app = builder.Build();
var services = app.Services.GetRequiredService<IEnumerable<IHostedService>>();
await Task.WhenAll(DelayAndReportAsync(services), app.RunAsync());
static async Task DelayAndReportAsync(IEnumerable<IHostedService> services)
{
// Ensure app started...
await Task.Delay(500);
var service = services.FirstOrDefault(static s => s is ExampleLifecycle);
if (service is ExampleLifecycle example)
{
await example.ReadyAsync();
}
}
Yukarıdaki kod:
- değişkeni olarak HostApplicationBuilder öğesini atayan yeni
builderbir örnek oluşturur. - uygulamasını
ExampleServiceyalnızca IHostedServiceolarak kaydeder. - Uzantısı yöntemine çağrı tarafından IHostApplicationLifetime döndürülen örnekten IHealthChecksBuilder bir çağrı zincirleyerek uygulama ömrü olayları AddHealthChecks için AddApplicationLifecycleHealthCheck bir sistem durumu denetimi ekler.
- Örnek
healthChecksBuilder, daha fazla sistem durumu denetimi eklemek için kullanılabilir.
- Örnek
-
IHost Örneği değişken olarak
appoluşturur. - Hizmet sağlayıcısından bir
IHostedServicealır, bu örnektirExampleService. - İki görev başvurusu verilen çağrılar Task.WhenAll :
-
DelayAndReportAsync500 milisaniyeyi geciktiren ve ardından örnekte yöntemini çağıranReadyAsyncyöntemiExampleServicesistem durumu denetimini değerlendirir. -
RunAsync(IHost, CancellationToken) yöntemi, öğesini
appbaşlatır.
-
Uygulama, yaşam döngüsü olaylarıyla ilgili olarak sistem durumu denetimi durumunu bildirerek günlükleri aşağıdaki sırayla çıkış yapar:
-
StartingAsync:Sağlıksız -
StartAsync:Sağlıksız -
StartedAsync:Sağlıksız -
ReadyAsync:Sağlıklı -
StoppingAsync:Sağlıksız -
StopAsync:Sağlıksız -
StoppedAsync:Sağlıksız
Başka bir deyişle, bu sağlayıcı uygulama örneğinin yalnızca hazır olduğunda trafik almasını sağlar. ASP.NET Core ile web uygulamaları geliştiriyorsanız, kullanılabilir sistem durumu denetimleri ara yazılımı vardır. Daha fazla bilgi için ASP.NET Core'da Sistem durumu denetimleri.