【发布时间】:2020-03-22 02:09:20
【问题描述】:
我在一组 Service Fabric 服务中添加了Microsoft.AspNetCore.Diagnostics.HealthChecks,其中一些具有 HTTP ServiceEndpoints,而另一些则没有。
对于那些没有服务端点的,如果我想添加一些IHealthCheck的实现并将它们添加到StartUp中的ServiceCollection中,如下所示:
services
.AddHealthChecks()
.AddCheck<DatabaseHealthCheck>("Database")
.AddCheck<Api1HealthCheck>("Dependency API 1")
.AddCheck<Api2HealthCheck>("Dependency API 2");
有没有一种方法可以在不调用服务本身的 HTTP 端点的情况下调用这些健康检查?
这些特定的服务在 RunAsync 方法中有一个类似这样的 while 循环,目前用于向日志输出心跳:
public async Task RunAsync(string appInstanceDesc, CancellationToken cancellationToken)
{
long iterations = 0;
var sleepTimeSpan = _config.PollingInterval.GetTimeSpan();
while (true)
{
if (cancellationToken.IsCancellationRequested)
{
_logger.LogInformation("Cancellation requested - shutting down");
break;
}
_logger?.LogDebug($"CR Heartbeat log iteration
{++iterations}{appInstanceDesc}");
Thread.Sleep(sleepTimeSpan);
}
}
有没有办法从该循环中调用HealthCheck 类,以便将其结果输出到日志中?
【问题讨论】:
标签: c# asp.net-core .net-core azure-service-fabric health-monitoring