示例#1
0
        private IEnumerable <BucketTimerValueSource> SetupBucketTimers()
        {
            const int count = 5;

            var meterValue = new MeterValue(
                count,
                1,
                2,
                3,
                4,
                TimeUnit.Seconds,
                new[]
            {
                new MeterValue.SetItem("item", 0.5, new MeterValue(1, 2, 3, 4, 5, TimeUnit.Seconds, new MeterValue.SetItem[0]))
            });
            var histogramValue = new BucketHistogramValue(count, 1, new Dictionary <double, double> {
                { 1, 1 }
            });

            var timerValue = new BucketTimerValue(meterValue, histogramValue, 0, TimeUnit.Nanoseconds);
            var timer      = new BucketTimerValueSource(
                BucketTimerNameDefault,
                ConstantValue.Provider(timerValue),
                Unit.Requests,
                TimeUnit.Seconds,
                TimeUnit.Milliseconds,
                Tags);

            return(new[] { timer });
        }
示例#2
0
        private MetricsContextValueSource CreateValueSource(
            string context,
            GaugeValueSource gauges                     = null,
            CounterValueSource counters                 = null,
            MeterValueSource meters                     = null,
            HistogramValueSource histograms             = null,
            BucketHistogramValueSource bucketHistograms = null,
            TimerValueSource timers                     = null,
            BucketTimerValueSource bucketTimers         = null,
            ApdexValueSource apdexScores                = null)
        {
            var gaugeValues           = gauges != null ? new[] { gauges } : Enumerable.Empty <GaugeValueSource>();
            var counterValues         = counters != null ? new[] { counters } : Enumerable.Empty <CounterValueSource>();
            var meterValues           = meters != null ? new[] { meters } : Enumerable.Empty <MeterValueSource>();
            var histogramValues       = histograms != null ? new[] { histograms } : Enumerable.Empty <HistogramValueSource>();
            var bucketHistogramValues = bucketHistograms != null ? new[] { bucketHistograms } : Enumerable.Empty <BucketHistogramValueSource>();
            var timerValues           = timers != null ? new[] { timers } : Enumerable.Empty <TimerValueSource>();
            var bucketTimerValues     = bucketTimers != null ? new[] { bucketTimers } : Enumerable.Empty <BucketTimerValueSource>();
            var apdexScoreValues      = apdexScores != null ? new[] { apdexScores } : Enumerable.Empty <ApdexValueSource>();

            return(new MetricsContextValueSource(
                       context,
                       gaugeValues,
                       counterValues,
                       meterValues,
                       histogramValues,
                       bucketHistogramValues,
                       timerValues,
                       bucketTimerValues,
                       apdexScoreValues));
        }
示例#3
0
        public static BucketTimerMetric ToSerializableMetric(this BucketTimerValueSource source)
        {
            var histogramData = new BucketTimerMetric.BucketHistogramData
            {
                Sum     = source.Value.Histogram.Sum,
                Buckets = source.Value.Histogram.Buckets.ToDictionary(x => x.Key, x => x.Value)
            };

            var rateData = new BucketTimerMetric.RateData
            {
                MeanRate          = source.Value.Rate.MeanRate,
                OneMinuteRate     = source.Value.Rate.OneMinuteRate,
                FiveMinuteRate    = source.Value.Rate.FiveMinuteRate,
                FifteenMinuteRate = source.Value.Rate.FifteenMinuteRate
            };

            return(new BucketTimerMetric
            {
                Name = source.Name,
                Count = source.Value.Rate.Count,
                ActiveSessions = source.Value.ActiveSessions,
                Rate = rateData,
                Histogram = histogramData,
                Unit = source.Unit.Name,
                RateUnit = source.RateUnit.Unit(),
                DurationUnit = source.DurationUnit.Unit(),
                Tags = source.Tags.ToDictionary()
            });
        }
示例#4
0
        /// <inheritdoc />
        public bool IsBucketTimerMatch(BucketTimerValueSource timer)
        {
            if (_types != null && !_types.Contains(MetricType.Timer))
            {
                return(false);
            }

            return(IsMetricNameMatch(timer.Name) && IsTagMatch(timer.Tags));
        }
        /// <inheritdoc />
        public ITimer BucketTimer <T>(BucketTimerOptions options, MetricTags tags, Func <T> builder)
            where T : IBucketTimerMetric
        {
            var allTags    = AllTags(MetricTags.Concat(options.Tags, tags));
            var metricName = allTags.AsMetricName(options.Name);

            return(_bucketTimers.GetOrAdd(
                       metricName,
                       () =>
            {
                Logger.Trace("Adding Timer {Name} - {@Options} {MesurementUnit} {DurationUnit} {RateUnit} {@Tags}", metricName, options, options.MeasurementUnit.ToString(), options.DurationUnit, options.RateUnit, allTags.ToDictionary());

                var timer = builder();
                var valueSource = new BucketTimerValueSource(
                    metricName,
                    timer,
                    options.MeasurementUnit,
                    options.RateUnit,
                    options.DurationUnit,
                    allTags);
                return Tuple.Create((ITimer)timer, valueSource);
            }));
        }
示例#6
0
 public static IEnumerable <Metric> ToPrometheusMetrics(
     this BucketTimerValueSource metric,
     Func <string, string> labelNameFormatter)
 {
     return(BucketHistogramValueToHistogram(metric.Value.Histogram, metric.Tags, labelNameFormatter));
 }
示例#7
0
 public static IEnumerable <Metric> ToPrometheusMetrics(this BucketTimerValueSource metric)
 {
     return(BucketHistogramValueToHistogram(metric.Value.Histogram, metric.Tags));
 }
 /// <inheritdoc />
 public bool IsBucketTimerMatch(BucketTimerValueSource timer)
 {
     return(true);
 }