コード例 #1
0
        private static void WriteHistogram(StringBuilder sb, HistogramMetric histogram)
        {
            var percentiles = histogram.Percentiles(0.5, 0.75, 0.95, 0.98, 0.99, 0.999);

            sb.AppendFormat("               min = {0:F2}\n", histogram.Min);
            sb.AppendFormat("               max = {0:F2}\n", histogram.Max);
            sb.AppendFormat("              mean = {0:F2}\n", histogram.Mean);
            sb.AppendFormat("            stddev = {0:F2}\n", histogram.StdDev);
            sb.AppendFormat("            median = {0:F2}\n", percentiles[0]);
            sb.AppendFormat("              75%% <= {0:F2}\n", percentiles[1]);
            sb.AppendFormat("              95%% <= {0:F2}\n", percentiles[2]);
            sb.AppendFormat("              98%% <= {0:F2}\n", percentiles[3]);
            sb.AppendFormat("              99%% <= {0:F2}\n", percentiles[4]);
            sb.AppendFormat("            99.9%% <= {0:F2}\n", percentiles[5]);
        }
コード例 #2
0
        private static void WriteHistogram(TextWriter writer, HistogramMetric histogram)
        {
            var percentiles = histogram.Percentiles(0.5, 0.75, 0.95, 0.98, 0.99, 0.999);

            writer.Write("               min = %{0:2}\n", histogram.Min);
            writer.Write("               max = %{0:2}\n", histogram.Max);
            writer.Write("              mean = %{0:2}\n", histogram.Mean);
            writer.Write("            stddev = %{0:2}\n", histogram.StdDev);
            writer.Write("            median = %{0:2}\n", percentiles[0]);
            writer.Write("              75%% <= %{0:2}\n", percentiles[1]);
            writer.Write("              95%% <= %{0:2}\n", percentiles[2]);
            writer.Write("              98%% <= %{0:2}\n", percentiles[3]);
            writer.Write("              99%% <= %{0:2}\n", percentiles[4]);
            writer.Write("            99.9%% <= %{0:2}\n", percentiles[5]);
        }
コード例 #3
0
        private void LogHistogram(IRequest request, MetricName metricName, HistogramMetric metric, long timestamp)
        {
            LogGauge(request, metricName.Name + "." + HistogramMetrics.Max.GetDatadogName(), metric.SampleMax, timestamp);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.Min.GetDatadogName(), metric.SampleMin, timestamp);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.Mean.GetDatadogName(), metric.SampleMean, timestamp);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.StdDev.GetDatadogName(), metric.StdDev, timestamp);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.Count.GetDatadogName(), metric.SampleCount, timestamp);

            double[] percentResults = metric.Percentiles(_histogramPercentages);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.At75thPercentile.GetDatadogName(), percentResults[0], timestamp);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.At95thPercentile.GetDatadogName(), percentResults[1], timestamp);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.At98thPercentile.GetDatadogName(), percentResults[2], timestamp);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.At99thPercentile.GetDatadogName(), percentResults[3], timestamp);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.At999thPercentile.GetDatadogName(), percentResults[4], timestamp);

            metric.Clear();
        }
        public void HistogramPercentages()
        {
            Metrics         metrics         = new Metrics();
            HistogramMetric histogramMetric = metrics.Histogram("test", "HealthMetrics.Test.HistogramMetrics");

            for (int x = 1; x <= 100; x++)
            {
                histogramMetric.Update(x);
            }

            double[] percentials = { 0.75, 0.99, 0.999 };

            double[] results = histogramMetric.Percentiles(percentials);

            Assert.IsNotNull(results);
            Assert.AreEqual(3, results.Length);

            Assert.AreEqual(75, results[0], 1);
            Assert.AreEqual(99, results[1], 1);
            Assert.AreEqual(99, results[2], 1);
        }
コード例 #5
0
        public static HistogramData GetHistogramData(this HistogramMetric histogram, double[] percentiles)
        {
            var percentileValues = histogram.Percentiles(percentiles);

            return(new HistogramData
            {
                Counter = histogram.Count,
                Max = histogram.Max,
                Mean = histogram.Mean,
                Min = histogram.Min,
                Stdev = histogram.StdDev,
                Percentiles = new Dictionary <string, double>
                {
                    { string.Format("{0}%", percentiles[0]), percentileValues[0] },
                    { string.Format("{0}%", percentiles[1]), percentileValues[1] },
                    { string.Format("{0}%", percentiles[2]), percentileValues[2] },
                    { string.Format("{0}%", percentiles[3]), percentileValues[3] },
                    { string.Format("{0}%", percentiles[4]), percentileValues[4] },
                    { string.Format("{0}%", percentiles[5]), percentileValues[5] },
                }
            });
        }
コード例 #6
0
        private static HistogramData CreateHistogramData(HistogramMetric histogram)
        {
            double[] percentiles = histogram.Percentiles(0.5, 0.75, 0.95, 0.99, 0.999, 0.9999);

            return(new HistogramData
            {
                Counter = histogram.Count,
                Max = histogram.Max,
                Mean = histogram.Mean,
                Min = histogram.Min,
                Stdev = histogram.StdDev,
                Percentiles = new Dictionary <string, double>
                {
                    { "50%", percentiles[0] },
                    { "75%", percentiles[1] },
                    { "95%", percentiles[2] },
                    { "99%", percentiles[3] },
                    { "99.9%", percentiles[4] },
                    { "99.99%", percentiles[5] },
                }
            });
        }