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))); }
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); }