Проверки Работоспособности в ASP.NET Core. Окончание
Начало
Для многих популярных сервисов реализованы свои проверки работоспособности. Вот несколько примеров:
SQL Server - AspNetCore.HealthChecks.SqlServer
Postgres - AspNetCore.HealthChecks.Npgsql
Redis - AspNetCore.HealthChecks.Redis
RabbitMQ - AspNetCore.HealthChecks.RabbitMQ
AWS S3 - AspNetCore.HealthChecks.Aws.S3
SignalR - AspNetCore.HealthChecks.SignalR
А в репозитории AspNetCore.Diagnostics.HealthChecks их гораздо больше.
Например, вот как добавить проверки для PostgreSQL и RabbitMQ:
builder.Services.AddHealthChecks()Форматирование ответа
.AddCheck<SqlHealthCheck>(
"custom-sql",
HealthStatus.Unhealthy);
.AddNpgSql(pgConnectionString)
.AddRabbitMQ(rabbitConnectionString);
По умолчанию конечная точка, возвращающая статус проверки работоспособности, выдаёт строковое значение, представляющее HealthStatus. Это неудобно, если у вас настроено несколько проверок, поскольку хорошо было бы просматривать состояние отдельно для каждого сервиса. Что ещё хуже, если один из сервисов выходит из строя, проверка просто вернёт Unhealthy, и вы не узнаете, что вызывает проблему.
Эту проблему можно решить, предоставив ResponsWriter, который уже существует в пакете AspNetCore.HealthChecks.UI.Client. После установки пакета надо изменить вызов MapHealthChecks, чтобы использовать ResponseWriter:
app.MapHealthChecks(Вот пример вывода:
"/health",
new HealthCheckOptions
{
ResponseWriter =
UIResponseWriter.WriteHealthCheckUIResponse
});
{
"status": "Unhealthy",
"totalDuration": "00:00:00.3285211",
"entries": {
"npgsql": {
"data": {},
"duration": "00:00:00.1183517",
"status": "Healthy",
"tags": []
},
"rabbitmq": {
"data": {},
"duration": "00:00:00.1189561",
"status": "Healthy",
"tags": []
},
"custom-sql": {
"data": {},
"description": "Unable to connect to the database.",
"duration": "00:00:00.2431813",
"exception": "Unable to connect to the database.",
"status": "Unhealthy",
"tags": []
}
}
}
Показано, что из трёх сервисов не работает один, а также показана ошибка.Итого
Мониторинг приложений важен для отслеживания доступности, использования ресурсов и изменений в производительности. Отслеживать работоспособность ваших приложений ASP.NET Core легко, предоставляя проверки работоспособности для ваших сервисов. Вы можете внедрить пользовательские проверки работоспособности, но сначала проверьте, существуют ли готовые решения.
Источник: https://www.milanjovanovic.tech/blog/health-checks-in-asp-net-core