Esempio n. 1
0
        static IApplicationBuilder UseRequestMetricCore(this IApplicationBuilder app, Action <RequestMetricOptions> init)
        {
            var options = new RequestMetricOptions();

            init(options);
            app.UseMiddleware <RequestMetricMiddleware>(Options.Create(options));

            return(app);
        }
Esempio n. 2
0
        public RequestMetricMiddleware(
            RequestDelegate next,
            IOptions <RequestMetricOptions> options,
            IMetricFactory <RequestMetricMiddleware> factory)
        {
            _next    = next;
            _options = options.Value;

            var labels = new List <string>();

            if (_options.IncludeStatusCode)
            {
                labels.Add("status_code");
            }

            if (_options.IncludeMethod)
            {
                labels.Add("method");
            }

            if (_options.IncludePath)
            {
                labels.Add("path");
            }

            if (_options.CustomLabels != null)
            {
                foreach (var customLabel in _options.CustomLabels)
                {
                    labels.Add(customLabel.Key);
                }
            }

            var helpTextEnd = string.Join(", ", labels);

            _labelsCount      = labels.Count;
            _requestDurations = factory.CreateSummary(_options.RequestDurationMetricName, opts =>
            {
                opts.Help       = DurationHelpText + helpTextEnd;
                opts.LabelNames = labels;
                if (_options.RequestDurationObjectives != null)
                {
                    opts.Objectives = _options.RequestDurationObjectives;
                }
            });
        }