示例#1
0
        /// <summary>
        /// Gets response time and status codes count (OPTIONAL) for every request.
        /// </summary>
        /// <param name="app"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public static IApplicationBuilder UseCactusMetric(this IApplicationBuilder app, MetricMiddlewareConfig config = null)
        {
            if (config == null)
            {
                config = new MetricMiddlewareConfig();
            }

            app.UseMiddleware <MetricMiddleware>(config);
            return(app);
        }
        public MetricMiddleware(RequestDelegate next, MetricMiddlewareConfig config)
        {
            _next   = next;
            _config = config;

            ProceedRequestTimeHistogram = Metrics.CreateHistogram("server_proceed_request_time_ms",
                                                                  "Time for proceeding request in milliseconds",
                                                                  new HistogramConfiguration()
            {
                LabelNames = new[] { "method", "endpoint" },
                Buckets    = _config.ProceedRequestTimeBuckets
            });

            if (!_config.ExcludeStatusCodeMetric)
            {
                StatusCodeCounter = Metrics.CreateCounter("server_status_code_count", "Server status codes count",
                                                          "code", "method", "endpoint");
            }
        }