У меня есть проект asp.net core 2.2 для создания API. API-интерфейсы зависят от нескольких других служб, таких как Azure CosmosDB, Azure ServiceBus, службы хранилища Azure. У меня есть следующий код для реализации HealthCheck:
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddCustomHealthChecks(Configuration);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseHealthChecks("/healthcheck", new HealthCheckOptions{Predicate = _ => true, ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse});
app.UseHealthChecksUI();
}
public static IServiceCollection AddCustomHealthChecks(this IServiceCollection services, IConfiguration configuration)
{
var cosmosDBServiceEndPoint = configuration.GetValue<string>("CosmosDBEndpoint");
var cosmosDBAuthKeyOrResourceToken = configuration.GetValue<string>("CosmosDBAccessKey");
var cosmosDBConnectionString = $"AccountEndpoint={cosmosDBServiceEndPoint};AccountKey={cosmosDBAuthKeyOrResourceToken};";
var hcBuilder = services.AddHealthChecks();
hcBuilder.AddCheck("self", () => HealthCheckResult.Healthy()).AddCosmosDb(connectionString: cosmosDBConnectionString, name: "CosmosDB-check", failureStatus: HealthStatus.Degraded, tags: new string[]{"cosmosdb"});
services.AddHealthChecksUI(setupSettings: setup =>
{
setup.AddHealthCheckEndpoint("Basic healthcheck", "http://localhost:63812/healthcheck");
}
);
return services;
}
При проверке следующего URL:
http://localhost:63812/healthcheck
Результаты:
{
"status": "Healthy",
"totalDuration": "00:00:00.0277870",
"entries": {
"self": {
"data": {},
"duration": "00:00:00.0000026",
"status": "Healthy"
},
"cosmosDB-check": {
"data": {},
"duration": "00:00:00.0276920",
"status": "Healthy"
}
}
}
Но при проверке HealthCheckUI я не вижу CosmosDB в качестве зависимости на панели инструментов: http://localhost:63812/healthchecks-ui#/healthchecks
Может кто-нибудь помочь мне узнать, как решить эту проблему?