尝试在asp.net核心中配置metrics.net

本文关键字:net 配置 metrics 核心 asp | 更新日期: 2023-09-27 18:07:48

我有一个asp.net核心web应用程序,我想使用metrics.net。

之前,我像这样配置度量和所有权:

Metric.Config
            .WithInternalMetrics()
            .WithOwin(middleware => app.Use(middleware), config => config
                .WithRequestMetricsConfig(c => c.WithErrorsMeter()
                                                .WithActiveRequestCounter()
                                                .WithPostAndPutRequestSizeHistogram()
                                                .WithRequestTimer()
                                            , new[] {
                                                    new Regex("(?i)^metrics"),
                                                    new Regex("(?i)^health"),
                                                    new Regex("(?i)^json")
                                                    }
                                            )
                .WithMetricsEndpoint(endpointConfig =>
                {
                    endpointConfig
                        .MetricsTextEndpoint(enabled: false);                            
                })
            );

我怎么能做一些类似的asp.net核心?

尝试在asp.net核心中配置metrics.net

我们必须使用Microsoft.AspnetCore.Owin包中的app.UseOwin,并将正确的中间件连接到管道。

Metric.Config.WithInternalMetrics()
            .WithOwin(middleware => app.UseOwin(pipeline => pipeline(next => Engage(middleware, next))), config => config
                .WithRequestMetricsConfig(c => c.WithAllOwinMetrics()
                                            , new[] {
                                                    new Regex("(?i)^metrics"),
                                                    new Regex("(?i)^health"),
                                                    new Regex("(?i)^json")
                                                    }
                                            )
                .WithMetricsEndpoint(endpointConfig =>
                {
                    endpointConfig
                        .MetricsJsonEndpoint(enabled: true)
                        .MetricsEndpoint(enabled: true)
                        .MetricsHealthEndpoint(enabled: true)
                        .MetricsTextEndpoint(enabled: false)
                        .MetricsPingEndpoint(enabled: false);
                })
            );

和像这样的Engage函数

  private static Func<IDictionary<string, object>, Task> Engage(dynamic middleware, Func<IDictionary<string, object>, Task> next)
    {
        return env => {
            middleware.Initialize(next);
            return middleware.Invoke(env);
        };
    }

Metrics.NET有一个。net标准端口。指标的API已经按照。net核心方法重新编写