簡體   English   中英

ASP.NET Core Web API中的AppMetrics運行狀況檢查

[英]AppMetrics health checks in asp.net core web api

我想在asp.net核心Web API應用程序上從AppMetrics庫應用運行狀況檢查。 我嘗試了多種方法,但均未成功。

在Program.cs中

public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseHealth()
            .UseStartup<Startup>()
            .Build();

在Startup.cs中

public void ConfigureServices(IServiceCollection services)
    {
        services.AddSingleton<HealthCheck, SampleHealthCheck>();

        var metrics = new HealthBuilder()
            .HealthChecks.AddCheck(new SampleHealthCheck())
            .HealthChecks.AddCheck("DatabaseConnected", 
                () => new ValueTask<HealthCheckResult>(HealthCheckResult.Healthy("Database Connection OK")))
            .HealthChecks.RegisterFromAssembly(services)
            .Build();

        services.AddHealth(metrics);
        services.AddHealthEndpoints();
        services.AddMvc();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseHealthAllEndpoints();
        app.UseMvc();
    }

我仍然收到的錯誤如下所示:

    System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
  at at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
  at at System.Reflection.RuntimeModule.GetDefinedTypes()
  at at System.Reflection.RuntimeAssembly.get_DefinedTypes()
  at App.Metrics.Health.Extensions.DependencyInjection.Internal.DefaultHealthCheckTypeProvider.<>c.<get_HealthCheckTypes>b__5_0(Assembly a) in C:\projects\microsoftextensions\src\App.Metrics.Health.Extensions.DependencyInjection\Internal\DefaultHealthCheckTypeProvider.cs:25
  at at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.MoveNext()
  at at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
  at App.Metrics.Health.Extensions.DependencyInjection.Internal.HealthChecksAsServices.AddHealthChecksAsServices(IServiceCollection services, IEnumerable`1 types) in C:\projects\microsoftextensions\src\App.Metrics.Health.Extensions.DependencyInjection\Internal\HealthChecksAsServices.cs:27
  at App.Metrics.Health.Extensions.DependencyInjection.Internal.HealthChecksAsServices.AddHealthChecksAsServices(IServiceCollection services, IEnumerable`1 assemblies) in C:\projects\microsoftextensions\src\App.Metrics.Health.Extensions.DependencyInjection\Internal\HealthChecksAsServices.cs:53
  at Microsoft.Extensions.DependencyInjection.ServiceCollectionHealthCheckBuilderExtensions.RegisterFromAssembly(IHealthCheckBuilder healthCheckBuilder, IServiceCollection services, DependencyContext dependencyContext) in C:\projects\microsoftextensions\src\App.Metrics.Health.Extensions.DependencyInjection\ServiceCollectionHealthCheckBuilderExtensions.cs:34
  at Microsoft.AspNetCore.Hosting.HealthAspNetWebHostBuilderExtensions.<>c__DisplayClass5_0.<ConfigureHealth>b__0(WebHostBuilderContext context, IServiceCollection services) in C:\projects\aspnetcorehealth\src\App.Metrics.AspNetCore.Health.Hosting\HealthAspNetWebHostBuilderExtensions.cs:113
  at at Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildCommonServices(AggregateException& hostingStartupErrors)
  at at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()
  at WebApiAppMetrics.Program.BuildWebHost(String[] args) in C:\DEV\AspnetWebApiAppMetricsPlayground\AspnetWebApiAppMetricsPlayground\WebApiAppMetrics\Program.cs:24
  at WebApiAppMetrics.Program.Main(String[] args) in D:\_TEST_\AspnetWebApiAppMetricsPlayground\AspnetWebApiAppMetricsPlayground\WebApiAppMetrics\Program.cs:20

請按照以下步驟操作演示:

  1. 創建一個.Net Core 2.1 Web項目
  2. 安裝包App.Metrics.AspNetCore.Health
  3. Program.cs

     public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .ConfigureHealthWithDefaults( builder => { builder.HealthChecks.AddCheck("DatabaseConnected", () => new ValueTask<HealthCheckResult>(HealthCheckResult.Healthy("Database Connection OK"))); }) .UseHealth() .UseStartup<Startup>(); } 
  4. 訪問https://localhost:44343/health檢查結果。

對於App.Metrics.AspNetCore.HealthUseHealth() ,它會自動掃描執行程序集以及依賴於App.Metrics。*的任何引用程序集,以進行運行狀況檢查並進行注冊。

對於SampleHealthCheck ,如果您繼承自HealthCheck ,則無需明確注冊它。 AppMetrics將為您注冊。

參考健康

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM