protected override Task <HealthCheckResult> CheckAsync(CancellationToken token = default(CancellationToken)) { if (!_options.ApdexTrackingEnabled) { return(Task.FromResult(HealthCheckResult.Ignore())); } var apdex = _metrics.Value.Snapshot.GetApdexValue(_context, _metricName); if (apdex.Score < 0.5) { return(Task.FromResult(HealthCheckResult.Unhealthy($"Frustrating. Score: {apdex.Score}"))); } if (apdex.Score >= 0.5 && apdex.Score < 0.75) { return(Task.FromResult(HealthCheckResult.Degraded($"Tolerating. Score: {apdex.Score}"))); } return(Task.FromResult(HealthCheckResult.Healthy($"Satisfied. Score {apdex.Score}"))); }
protected override Task <HealthCheckResult> CheckAsync(CancellationToken token = default(CancellationToken)) { if (!_options.ApdexTrackingEnabled) { return(Task.FromResult(HealthCheckResult.Ignore())); } var metricsContext = _metrics.Value.Advanced.Data.ReadContext(AspNetMetricsRegistry.Contexts.HttpRequests.ContextName); var apdex = metricsContext.ApdexValueFor(AspNetMetricsRegistry.Contexts.HttpRequests.ApdexScores.ApdexMetricName); if (apdex.Score < 0.5) { return(Task.FromResult(HealthCheckResult.Unhealthy($"Frustrating. Score: {apdex.Score}"))); } if (apdex.Score >= 0.5 && apdex.Score < 0.75) { return(Task.FromResult(HealthCheckResult.Degraded($"Tolerating. Score: {apdex.Score}"))); } return(Task.FromResult(HealthCheckResult.Healthy($"Satisfied. Score {apdex.Score}"))); }
public static IHealthCheckRegistry AddHttpGetCheck( this IHealthCheckRegistry registry, string name, Uri uri, TimeSpan timeout) { registry.Register( name, async cancellationToken => { using (var tokenWithTimeout = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken)) { tokenWithTimeout.CancelAfter(timeout); var response = await HttpClient.GetAsync(uri, tokenWithTimeout.Token).ConfigureAwait(false); return(response.IsSuccessStatusCode ? HealthCheckResult.Healthy($"OK. {uri}") : HealthCheckResult.Unhealthy($"FAILED. {uri} status code was {response.StatusCode}")); } }); return(registry); }
/// <summary> /// Create a failure (degraded or unhealthy) status response. /// </summary> /// <param name="message">Status message.</param> /// <param name="degradedOnError"> /// If true, create a degraded status response. /// Otherwise create an unhealthy status response. (default: false) /// </param> /// <returns>Failure status response.</returns> private static HealthCheckResult HealthCheckResultOnError(string message, bool degradedOnError) { return(degradedOnError ? HealthCheckResult.Degraded(message) : HealthCheckResult.Unhealthy(message)); }