Example #1
0
        public Task WriteAsync(
            Stream output,
            HealthStatus healthStatus,
            CancellationToken cancellationToken = default)
        {
            if (output == null)
            {
                throw new ArgumentNullException(nameof(output));
            }

            var serilizer = JsonSerializer.Create(_serializerSettings);

            using (var streamWriter = new StreamWriter(output))
            {
                using (var textWriter = new JsonTextWriter(streamWriter))
                {
                    serilizer.Serialize(textWriter, healthStatus);
                }
            }

#if NETSTANDARD1_6
            return(Task.CompletedTask);
#else
            return(AppMetricsHealthTaskHelper.CompletedTask());
#endif
        }
Example #2
0
        public Task WriteAsync(
            Stream output,
            HealthStatus healthStatus,
            CancellationToken cancellationToken = default)
        {
            if (output == null)
            {
                throw new ArgumentNullException(nameof(output));
            }

            var serializer = new HealthStatusSerializer();

            using (var stringWriter = new StreamWriter(output, _options.Encoding))
            {
                using (var textWriter = new HealthStatusTextWriter(stringWriter, _options.Separator, _options.Padding))
                {
                    serializer.Serialize(textWriter, healthStatus);
                }
            }

#if !NETSTANDARD1_6
            return(AppMetricsHealthTaskHelper.CompletedTask());
#else
            return(Task.CompletedTask);
#endif
        }
Example #3
0
        public Task FormatAsync(Stream output, HealthStatus status, CancellationToken cancellationToken = default)
        {
#if NETSTANDARD1_6
            return(Task.CompletedTask);
#else
            return(AppMetricsHealthTaskHelper.CompletedTask());
#endif
        }
Example #4
0
        /// <inheritdoc />
        public Task ReportAsync(HealthOptions options, HealthStatus status, CancellationToken cancellationToken = default)
        {
            if (!_healthAsMetricsOptions.Enabled || !options.Enabled)
            {
                Logger.Trace($"Health Status Reporter `{this}` disabled, not reporting.");

#if NETSTANDARD1_6
                return(Task.CompletedTask);
#else
                return(AppMetricsHealthTaskHelper.CompletedTask());
#endif
            }

            Logger.Trace($"Health Status Reporter `{this}` reporting health status.");

            foreach (var healthResult in status.Results)
            {
                var tags = new MetricTags(HealthReportingConstants.TagKeys.HealthCheckName, healthResult.Name);

                if (healthResult.Check.Status == HealthCheckStatus.Degraded)
                {
                    _metrics.Measure.Gauge.SetValue(ApplicationHealthMetricRegistry.Checks, tags, HealthConstants.HealthScore.degraded);
                }
                else if (healthResult.Check.Status == HealthCheckStatus.Unhealthy)
                {
                    _metrics.Measure.Gauge.SetValue(ApplicationHealthMetricRegistry.Checks, tags, HealthConstants.HealthScore.unhealthy);
                }
                else if (healthResult.Check.Status == HealthCheckStatus.Healthy)
                {
                    _metrics.Measure.Gauge.SetValue(ApplicationHealthMetricRegistry.Checks, tags, HealthConstants.HealthScore.healthy);
                }
            }

            var overallHealthStatus = HealthConstants.HealthScore.healthy;

            if (status.Status == HealthCheckStatus.Unhealthy)
            {
                overallHealthStatus = HealthConstants.HealthScore.unhealthy;
            }
            else if (status.Status == HealthCheckStatus.Degraded)
            {
                overallHealthStatus = HealthConstants.HealthScore.degraded;
            }

            _metrics.Measure.Gauge.SetValue(ApplicationHealthMetricRegistry.HealthGauge, overallHealthStatus);

            Logger.Trace($"Health Status Reporter `{this}` successfully reported health status.");

#if NETSTANDARD1_6
            return(Task.CompletedTask);
#else
            return(AppMetricsHealthTaskHelper.CompletedTask());
#endif
        }