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