Ejemplo n.º 1
0
        /// <inheritdoc />
        public async Task ActionAfterFail(HealthyResponse result)
        {
            var configurations = HCRaygunConfigurations.Instance;

#if DEBUG
            if (configurations.AvoidSendInDebug)
            {
                return;
            }
#endif
            // build information
            var tags = configurations.Tags.ToList();
            tags.Add("sender : AspNetCore.AutoHealthCheck");

            var information = new Dictionary <string, string>
            {
                ["Body"]   = JsonConvert.SerializeObject(result),
                ["Sender"] = "AspNetCore.AutoHealthCheck"
            };

            await _raygunClient.Value.SendInBackground(
                new AspNetCoreAutoHealthCheckFailException(),
                tags,
                information)
            .ConfigureAwait(false);
        }
 /// <inheritdoc />
 public async Task ActionAfterFail(HealthyResponse result)
 {
     // only track fails if the mode is exception
     if (ApplicationInsightsPluginConfigurations.Instance.Mode == TrackMode.Exception)
     {
         await _telemetryServices.TrackException(result).ConfigureAwait(false);
     }
 }
        /// <inheritdoc />
        public Task TrackException(HealthyResponse result)
        {
            var telemetryClient = GetClient();

            telemetryClient.TrackException(
                new AspNetCoreAutoHealthCheckFailException(),
                GetProperties(result));

            return(Task.CompletedTask);
        }
        /// <inheritdoc />
        public Task TrackEvent(HealthyResponse result)
        {
            var configurations  = ApplicationInsightsPluginConfigurations.Instance;
            var telemetryClient = GetClient();

            telemetryClient.TrackEvent(
                configurations.EventName,
                GetProperties(result));

            return(Task.CompletedTask);
        }
 private static IDictionary <string, string> GetProperties(HealthyResponse result)
 {
     return(new Dictionary <string, string>
     {
         ["IsHealthy"] = result.Success.ToString(),
         ["Status"] = result.HttpStatus.ToString(),
         ["ElapsedTime"] = result.ElapsedSecondsTest.ToString(),
         ["UnhealthyProbes"] = result.UnhealthyProbes.Count.ToString(),
         ["UnhealthyEndpoints"] = result.UnhealthyEndpoints.Count.ToString(),
         ["MachineName"] = Environment.MachineName,
         ["Assembly"] = Assembly.GetEntryAssembly().GetName().Name
     });
 }
        /// <inheritdoc />
        public Task TrackAvailability(HealthyResponse result)
        {
            var configurations = ApplicationInsightsPluginConfigurations.Instance;
            var context        = _autoHealthCheckContextAccessor.Context;

            var telemetryClient = GetClient();

            telemetryClient.TrackAvailability(
                configurations.AvailabilityName,
                DateTimeOffset.UtcNow,
                TimeSpan.FromSeconds(result.ElapsedSecondsTest),
                context.Configurations.BaseUrl.ToString(),
                result.Success);

            return(Task.CompletedTask);
        }
Ejemplo n.º 7
0
        /// <inheritdoc />
        public async Task PersistBlobResult(
            HealthyResponse result)
        {
            var configurations = HealthCheckAzureStorageConfigurations.Instance;

            var storageAccount = CloudStorageAccount.Parse(configurations.AzureStorageConnectionString);
            var blobClient     = storageAccount.CreateCloudBlobClient();
            var container      = blobClient.GetContainerReference(configurations.ContainerName.ToLower());

            await container.CreateIfNotExistsAsync().ConfigureAwait(false);

            var jsonContent  = JsonConvert.SerializeObject(result);
            var subContainer = DateTime.UtcNow.ToString("MMddyyyy");
            var blockBlob    = container.GetBlockBlobReference($"{subContainer}/{result.HealthCheckId}.json");
            await blockBlob.UploadTextAsync(jsonContent).ConfigureAwait(false);
        }
        /// <inheritdoc />
        public async Task ActionAfterResult(HealthyResponse result)
        {
            var configurations = ApplicationInsightsPluginConfigurations.Instance;

            switch (configurations.Mode)
            {
            case TrackMode.Availability:
                await _telemetryServices.TrackAvailability(result).ConfigureAwait(false);

                break;

            case TrackMode.Event:
                await _telemetryServices.TrackEvent(result).ConfigureAwait(false);

                break;
            }
        }
Ejemplo n.º 9
0
        /// <inheritdoc />
        public async Task ActionAfterResult(HealthyResponse result)
        {
            var configurations = HealthCheckAzureStorageConfigurations.Instance;

            // avoid calling if only failed results needs to be tracked and the was successfully.
            if (configurations.OnlyTrackFailedResults && result.Success)
            {
                return;
            }

            if (string.IsNullOrWhiteSpace(configurations.AzureStorageConnectionString))
            {
                throw new InvalidOperationException(
                          "Please configure the azure storage connection string Property Name : AzureStorageConnectionString");
            }

            await _storageService.PersistBlobResult(result).ConfigureAwait(false);
        }
Ejemplo n.º 10
0
 public Task ActionAfterSuccess(HealthyResponse result)
 {
     return(Task.CompletedTask);
 }
Ejemplo n.º 11
0
 public Task ActionAfterFail(HealthyResponse result)
 {
     Debug.WriteLine(JsonConvert.SerializeObject(result));
     return(Task.CompletedTask);
 }
Ejemplo n.º 12
0
        public IActionResult Health()
        {
            var response = new HealthyResponse(true);

            return(this.StatusCode(response.Status, response));
        }