HealthCheckUI не отображает статус зависимостей, таких как CosmosDB - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть проект 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

enter image description here

Может кто-нибудь помочь мне узнать, как решить эту проблему?

1 Ответ

0 голосов
/ 12 ноября 2019

Как показывает описание на предоставленной вами картинке, похоже, что вы используете версию 3.0.x. Итак, если ваш проект является основным приложением asp.net 2.2, вам нужно использовать AspNetCore.HealthChecks.UI 2.2.X, а не версии 3.0.X.

Также измените

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    services.AddCustomHealthChecks(Configuration);
}

до

public void ConfigureServices(IServiceCollection services)
{
   services.AddCustomHealthChecks(Configuration);
}

Для получения дополнительной информации вы можете обратиться к Реализация проверок работоспособности в службах ASP.NET Core .

...