示例#1
0
        private static void ConfigureUi(ISolariBuilder builder, IoOptions options)
        {
            if (!options.EnableUi)
            {
                return;
            }

            builder.Services.AddHealthChecksUI(a =>
            {
                a.DisableDatabaseMigrations();
                a.SetEvaluationTimeInSeconds(options.Interval);
                ConfigureHealthEndpoints(builder, a, options);
                ConfigureWebHooks(a, options);
            })
            .AddInMemoryStorage();
            builder.AddBuildAction(new BuildAction("HealthCheckUI")
            {
                Action = provider =>
                {
                    var app = provider.GetService <IApplicationBuilder>();
                    if (app == null)
                    {
                        return;
                    }
                    app.UseHealthChecksUI();
                }
            });
        }
        public static IEndpointRouteBuilder MapIo(this IEndpointRouteBuilder builder)
        {
            IoOptions options = builder.ServiceProvider.GetService <IOptions <IoOptions> >().Value;

            if (!options.Enabled)
            {
                return(builder);
            }
            if (options.EnableUi)
            {
                builder.MapHealthChecks(options.HealthEndpoint, new HealthCheckOptions
                {
                    Predicate      = _ => true,
                    ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
                });
                builder.MapHealthChecksUI();
                return(builder);
            }

            builder.MapHealthChecks(options.HealthEndpoint, new HealthCheckOptions
            {
                Predicate = _ => true
            });
            return(builder);
        }
示例#3
0
 public MonitorOptions()
 {
     IoOptions = new IoOptions
     {
         DurationInMinutes = 1
     };
     Action = MonitorActions.DiskIo;
 }
示例#4
0
        public static void ConfigureWebHooks(Settings settings, IoOptions options)
        {
            if (options.WebHooks == null || !options.WebHooks.Any())
            {
                return;
            }

            options.WebHooks.ForEach(a => settings.AddWebhookNotification(a.Name, a.Uri, a.Payload, a.RestoredPayload));
        }
示例#5
0
        public static void ConfigureHealthEndpoints(ISolariBuilder builder, Settings settings, IoOptions options)
        {
            if (options.Endpoints == null || !options.Endpoints.Any())
            {
                settings.AddHealthCheckEndpoint(builder.GetAppOptions().ApplicationName, options.HealthEndpoint);
                return;
            }

            options.Endpoints.ForEach(a => settings.AddHealthCheckEndpoint(a.Name, a.Uri));
        }
示例#6
0
        private static void ConfigureAspNetHealthCheckInfrastructure(ISolariBuilder builder, IoOptions options,
                                                                     Action <IHealthChecksBuilder> addChecks)
        {
            IHealthChecksBuilder healthChecks = builder.Services.AddHealthChecks();

            addChecks?.Invoke(healthChecks);
        }