Пример #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
        public static BucketTimerValueSource FromSerializableMetric(this BucketTimerMetric source)
        {
            var rateUnit     = source.RateUnit.FromUnit();
            var durationUnit = source.DurationUnit.FromUnit();

            var rateValue = new MeterValue(
                source.Count,
                source.Rate.MeanRate,
                source.Rate.OneMinuteRate,
                source.Rate.FiveMinuteRate,
                source.Rate.FifteenMinuteRate,
                rateUnit);

            var histogramValue = new BucketHistogramValue(
                source.Count,
                source.Histogram.Sum,
                new ReadOnlyDictionary <double, double>(source.Histogram.Buckets));

            var timerValue = new BucketTimerValue(rateValue, histogramValue, source.ActiveSessions, durationUnit);

            return(new BucketTimerValueSource(
                       source.Name,
                       ConstantValue.Provider(timerValue),
                       source.Unit,
                       rateUnit,
                       durationUnit,
                       source.Tags.FromDictionary()));
        }
        public static void AddBucketTimerValues(
            this BucketTimerValue timer,
            IDictionary <string, object> values,
            IDictionary <string, string> fields)
        {
            if (values == null)
            {
                return;
            }

            fields.TryAddValuesForKey(values, BucketHistogramFields.Count.ToString(), timer.Histogram.Count);
            fields.TryAddValuesForKey(values, BucketHistogramFields.Sum.ToString(), timer.Histogram.Sum);
            foreach (var bucket in timer.Histogram.Buckets)
            {
                if (double.IsPositiveInfinity(bucket.Key))
                {
                    values[$"{BucketHistogramFields.Bucket}Inf"] = bucket.Value;
                }
                else
                {
                    values[$"{BucketHistogramFields.Bucket}{bucket.Key}"] = bucket.Value;
                }
            }
        }