Événements
Créer des applications intelligentes
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Les vérifications de santé fournissent des informations sur la disponibilité et l'état d'une application. Les vérifications de l'état de santé sont souvent exposées en tant que points de terminaison HTTP, mais peuvent également être utilisées en interne par l'application pour consigner des journaux ou effectuer d'autres tâches en fonction de l'état de santé actuel. Les vérifications d’intégrité sont généralement utilisées conjointement avec un service de supervision externe ou un orchestrateur de conteneur pour vérifier l’état d’une application. Les données rapportées par les vérifications de santé peuvent être utilisées pour différents scénarios :
.NET
.NET Aspire expose deux points de terminaison HTTP de contrôle d’intégrité par défaut dans les environnements Développement lorsque les méthodes AddServiceDefaults
et MapDefaultEndpoints
sont appelées à partir du fichier Program.cs :
Le point de terminaison /health
indique si l’application s’exécute normalement où elle est prête à recevoir des demandes. Toutes les vérifications d’intégrité doivent passer pour que l’application soit considérée comme prête à accepter le trafic après le démarrage.
GET /health
Le point de terminaison /health
retourne un code d’état HTTP 200 et une valeur text/plain
de Healthy lorsque l’application est saine.
La /alive
indique si une application est en cours d’exécution ou a bloqué et doit être redémarrée. Seules les vérifications d’intégrité étiquetées avec la balise live doivent être réussies pour que l’application soit considérée comme opérationnelle.
GET /alive
Le point de terminaison /alive
retourne un code d’état HTTP 200 et une valeur text/plain
de Healthy lorsque l’application est active.
Les méthodes
Dans les environnements sans développement, les points de terminaison /health
et /alive
sont désactivés par défaut. Si vous devez les activer, il est recommandé de protéger ces points de terminaison avec différentes fonctionnalités de routage, telles que le filtrage et/ou l’autorisation de l’hôte. Pour plus d’informations, consultez les contrôles de santé dans
En outre, il peut être avantageux de configurer les délais d’expiration des demandes et la mise en cache de sortie pour ces points de terminaison afin d’empêcher les attaques par abus ou par déni de service. Pour ce faire, tenez compte de la méthode AddDefaultHealthChecks
modifiée suivante :
public static IHostApplicationBuilder AddDefaultHealthChecks(this IHostApplicationBuilder builder)
{
builder.Services.AddRequestTimeouts(
configure: static timeouts =>
timeouts.AddPolicy("HealthChecks", TimeSpan.FromSeconds(5)));
builder.Services.AddOutputCache(
configureOptions: static caching =>
caching.AddPolicy("HealthChecks",
build: static policy => policy.Expire(TimeSpan.FromSeconds(10))));
builder.Services.AddHealthChecks()
// Add a default liveness check to ensure app is responsive
.AddCheck("self", () => HealthCheckResult.Healthy(), ["live"]);
return builder;
}
Code précédent :
HealthChecks
.HealthChecks
.Tenez maintenant compte de la méthode MapDefaultEndpoints
mise à jour :
public static WebApplication MapDefaultEndpoints(this WebApplication app)
{
var healthChecks = app.MapGroup("");
healthChecks
.CacheOutput("HealthChecks")
.WithRequestTimeout("HealthChecks");
// All health checks must pass for app to be
// considered ready to accept traffic after starting
healthChecks.MapHealthChecks("/health");
// Only health checks tagged with the "live" tag
// must pass for app to be considered alive
healthChecks.MapHealthChecks("/alive", new()
{
Predicate = static r => r.Tags.Contains("live")
});
return app;
}
Code précédent :
/
.HealthChecks
correspondante.Outre les méthodes AddDefaultHealthChecks
et MapDefaultEndpoints
mises à jour, vous devez également ajouter les services correspondants pour les délais d’expiration des requêtes et la mise en cache de sortie.
Dans le point d’entrée de l’application consommatrice appropriée (généralement le fichier Program.cs), ajoutez le code suivant :
// Wherever your services are being registered.
// Before the call to Build().
builder.Services.AddRequestTimeouts();
builder.Services.AddOutputCache();
var app = builder.Build();
// Wherever your app has been built, before the call to Run().
app.UseRequestTimeouts();
app.UseOutputCache();
app.Run();
Pour plus d’informations, consultez intergiciels de délai d’attente de requête dans ASP.NET Core et intergiciel de mise en cache de sortie dans ASP.NET Core.
Les intégrations .NET.NET Aspire peuvent également enregistrer des vérifications d’intégrité supplémentaires pour votre application. Ces contrôles d’intégrité contribuent à l’état retourné des points de terminaison /health
et /alive
. Par exemple, l’intégration .NET AspirePostgreSQL ajoute automatiquement une vérification de l'état pour vérifier les conditions suivantes :
Si l’une de ces opérations échoue, le contrôle d’intégrité correspondant échoue également.
Vous pouvez désactiver les vérifications d’intégrité d’une intégration donnée à l’aide de l’une des options de configuration disponibles. .NET .NET Aspire intégrations prennent en charge Microsoft.Extensions.Configurations pour appliquer des paramètres via des fichiers de configuration tels que appsettings.json:
{
"Aspire": {
"Npgsql": {
"DisableHealthChecks": true,
}
}
}
Vous pouvez également utiliser un délégué en ligne pour configurer les contrôles de santé :
builder.AddNpgsqlDbContext<MyDbContext>(
"postgresdb",
static settings => settings.DisableHealthChecks = true);
Commentaires sur .NET Aspire
.NET Aspire est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Événements
Créer des applications intelligentes
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantEntrainement
Module
Présentation de .NET Aspire - Training
Dans ce module, vous allez découvrir les applications natives cloud et la façon dont la pile .NET Aspire facilite le développement de microservices et leur connexion les uns avec les autres et avec les services de prise en charge.