Ekinlikler
17 Mar 21 - 21 Mar 10
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Hemen kaydolunBu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
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 heath kontrol durumu 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
.
.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 IServiceCollection
eklemek için uzantı yönteminin nasıl kullanılacağı AddResourceUtilizationHealthCheck
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:
app
oluşturur.uygulamasının uygulama ömrü olayları IHostApplicationLifetimeüzerinde sistem durumu denetimleri gerçekleştirmek için Microsoft.Extensions.Diagnostics.HealthChecks.Common NuGet paketinde bulunan uzantı yöntemini kullanınAddApplicationLifecycleHealthCheck.
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:
ExampleLifecycle
bir sınıf tanımlar.CheckHealthAsync
.CheckHealthAsync
bir ReadyAsync
yöntem tanımlar.HealthCheckService
sistem durumu denetimi isteyen özel CheckHealthAsync
bir yöntem tanımlar. result
daha 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:
builder
öğesini atayan yeni HostApplicationBuilder bir örnek oluşturur.ExampleService
yalnızca IHostedServiceolarak kaydeder.healthChecksBuilder
, daha fazla sistem durumu denetimi eklemek için kullanılabilir.app
oluşturur.IHostedService
alır, bu örnektir ExampleService
.DelayAndReportAsync
500 milisaniyeyi geciktiren ve ardından örnekte yöntemini çağıran ReadyAsync
yöntemi ExampleService
sistem durumu denetimini değerlendirir.app
baş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ızStartAsync
:SağlıksızStartedAsync
:SağlıksızReadyAsync
:SağlıklıStoppingAsync
:SağlıksızStopAsync
:SağlıksızStoppedAsync
:SağlıksızBaş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.
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Ekinlikler
17 Mar 21 - 21 Mar 10
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Hemen kaydolunEğitim
Modül
Bulutta yerel mikro hizmette dayanıklılık uygulama - Training
Bu modül, Kubernetes Service'teki bir .NET mikro hizmetler uygulamasında dayanıklılık uygulama konusunda size yol gösterir.