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}")));
        }
Beispiel #2
0
        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);
        }
Beispiel #4
0
 /// <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));
 }