Проверка работоспособности ткани обслуживания

Есть ли встроенная проверка работоспособности сервисной ткани? У меня есть гостевой исполняемый файл, написанный на NET Core 2.2 и использующий в нем функцию проверки работоспособности. Например, у меня есть простая проверка работоспособности, которая возвращает нездоровое состояние:

        services
            .AddHealthChecks()
            .AddCheck<DocumentDbHealthCheck>("cosmos-database");

    internal class DocumentDbHealthCheck : IHealthCheck
    {
        public Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default(CancellationToken))
        {
            return Task.FromResult(HealthCheckResult.Unhealthy());
        }
    }

Я подключил это с помощью:

app.UseHealthChecks(@"/foo/bar/v1/healthcheck");

Однако, когда я запускаю локально мой экземпляр сервисной фабрики, состояние работоспособно, я ожидал, что это будет ошибочно / нездорово.

Возможно ли, чтобы сервисная структура попала в маршрут проверки работоспособности API?

1 ответ

Healthcheck, представленный на AspNetCore, представляет собой механизм возврата данных о состоянии некоторой службы, он не влияет на фактическое состояние службы.

В Service Fabric, если вы хотите сообщить о работоспособности из службы в систему работоспособности Service Fabric, вы можете использовать ReportReplicaHealth() API. как то так:

HealthInformation healthInformation = new HealthInformation("ServiceCode", "StateDictionary", HealthState.Error);
this.Partition.ReportReplicaHealth(healthInformation);

Это будет показано в SF Explorer как ошибка.

Вы также можете сообщать о проблемах, используя FabricClient, как описано здесь, в этом случае вы создадите сервис для мониторинга других сервисов, а затем сообщите об их статусе, так называемом Watchdog.

AFAIK, Service Fabric не имеет механизма HTTP Probe для проверки работоспособности службы, она использует внутренние метрики, сообщаемые службой непосредственно в подсистему работоспособности.

Если вы планируете использовать его для проверки работоспособности службы перед отправкой ей запроса, вы можете использовать http-зонды балансировщика нагрузки или просто поместить его за прокси-сервер, который обрабатывает сбои, и перенаправить запрос на действительный узел, например встроенный обратный прокси, как описано здесь.

Другие вопросы по тегам