コード例 #1
0
        public static IHistogram Histogram(App.Metrics.IMetrics context, string name, Units unit, SamplingTypes samplingType, List <KeyValuePair <string, string> > tags = null)
        {
            var options = new App.Metrics.Histogram.HistogramOptions
            {
                MeasurementUnit = unit.GetUnit(),
                Name            = name,
                Tags            = tags.GetTags()
            };

            switch (samplingType)
            {
            case SamplingTypes.FavorRecent:
                options.Reservoir = () => new App.Metrics.ReservoirSampling.ExponentialDecay.DefaultForwardDecayingReservoir(1024, 0.015, 0);
                break;

            case SamplingTypes.LongTerm:
                options.Reservoir = () => new App.Metrics.ReservoirSampling.Uniform.DefaultAlgorithmRReservoir(1024);
                break;

            case SamplingTypes.SlidingWindow:
                options.Reservoir = () => new App.Metrics.ReservoirSampling.SlidingWindow.DefaultSlidingWindowReservoir(1024);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(samplingType), samplingType, null);
            }
            return(new Histogram(context.Provider.Histogram.Instance(options)));
        }
コード例 #2
0
        private static void MeasureLength(IMetrics metrics, string shortSha)
        {
            var length      = shortSha.Length;
            var startsWith  = shortSha.First().ToString();
            var measurement = new App.Metrics.Histogram.HistogramOptions
            {
                Name            = "ShortShaKeyLength",
                MeasurementUnit = Unit.Bytes,
                Tags            = new MetricTags("starts with", startsWith)
            };

            metrics?.Measure?.Histogram.Update(measurement, length);
        }