meanSum += h.mean(); double[] val = hist.getSnapshot().getValues(); for (double d : val) { values.add(d);
public LatencyMetric(T h) { Snapshot s = h.getSnapshot(); _min = h.min(); _max = h.max(); _mean = h.mean(); if (null != s) { _percentile95 = s.get95thPercentile(); _percentile99 = s.get99thPercentile(); _percentile999 = s.get999thPercentile(); } else { _percentile95 = -1; _percentile99 = -1; _percentile999 = -1; } _histogram = h; }
private static void writeSampling(Sampling metric, JsonGenerator json) throws IOException { final Snapshot snapshot = metric.getSnapshot(); json.writeNumberField("median", snapshot.getMedian()); json.writeNumberField("p75", snapshot.get75thPercentile()); json.writeNumberField("p95", snapshot.get95thPercentile()); json.writeNumberField("p98", snapshot.get98thPercentile()); json.writeNumberField("p99", snapshot.get99thPercentile()); json.writeNumberField("p999", snapshot.get999thPercentile()); }
/** * Retrieve values for pre-defined stats (median/p75/p95/p99/p999) from a {@link Sampling} metric (e.g. histogram) * * @param sampling metric to retrieve stats from * @param convertNanToZero simulate {@link com.yammer.metrics.core.Histogram} histogram behavior when used with * {@link com.yammer.metrics.core.WavefrontHistogram} as input: * when "true", empty WavefrontHistogram reports zero values for all stats * @return sampling stats */ public static Map<String, Double> explodeSampling(Sampling sampling, boolean convertNanToZero) { final Snapshot snapshot = sampling.getSnapshot(); return ImmutableMap.<String, Double>builder() .put("median", sanitizeValue(snapshot.getMedian(), convertNanToZero)) .put("p75", sanitizeValue(snapshot.get75thPercentile(), convertNanToZero)) .put("p95", sanitizeValue(snapshot.get95thPercentile(), convertNanToZero)) .put("p99", sanitizeValue(snapshot.get99thPercentile(), convertNanToZero)) .put("p999", sanitizeValue(snapshot.get999thPercentile(), convertNanToZero)) .build(); }
/** * Retrieve values for pre-defined stats (median/p75/p95/p99/p999) from a {@link Sampling} metric (e.g. histogram) * * @param sampling metric to retrieve stats from * @param convertNanToZero simulate {@link com.yammer.metrics.core.Histogram} histogram behavior when used with * {@link com.yammer.metrics.core.WavefrontHistogram} as input: * when "true", empty WavefrontHistogram reports zero values for all stats * @return sampling stats */ public static Map<String, Double> explodeSampling(Sampling sampling, boolean convertNanToZero) { final Snapshot snapshot = sampling.getSnapshot(); return ImmutableMap.<String, Double>builder() .put("median", sanitizeValue(snapshot.getMedian(), convertNanToZero)) .put("p75", sanitizeValue(snapshot.get75thPercentile(), convertNanToZero)) .put("p95", sanitizeValue(snapshot.get95thPercentile(), convertNanToZero)) .put("p99", sanitizeValue(snapshot.get99thPercentile(), convertNanToZero)) .put("p999", sanitizeValue(snapshot.get999thPercentile(), convertNanToZero)) .build(); }
@Override protected void sendSampling(long epoch, String sanitizedName, Sampling metric) throws IOException { final Snapshot snapshot = metric.getSnapshot(); if (dimensions.contains(median)) sendFloat(epoch, sanitizedName, "median", snapshot.getMedian()); if (dimensions.contains(p75)) sendFloat(epoch, sanitizedName, "75percentile", snapshot.get75thPercentile()); if (dimensions.contains(p95)) sendFloat(epoch, sanitizedName, "95percentile", snapshot.get95thPercentile()); if (dimensions.contains(p98)) sendFloat(epoch, sanitizedName, "98percentile", snapshot.get98thPercentile()); if (dimensions.contains(p99)) sendFloat(epoch, sanitizedName, "99percentile", snapshot.get99thPercentile()); if (dimensions.contains(p999)) sendFloat(epoch, sanitizedName, "999percentile", snapshot.get999thPercentile()); }
private void pushSampling(MetricName name, Sampling sampling, Long epoch) { final Snapshot snapshot = sampling.getSnapshot(); pushGauge(name, snapshot.getMedian(), epoch, "median"); pushGauge(name, snapshot.get75thPercentile(), epoch, "75percentile"); pushGauge(name, snapshot.get95thPercentile(), epoch, "95percentile"); pushGauge(name, snapshot.get98thPercentile(), epoch, "98percentile"); pushGauge(name, snapshot.get99thPercentile(), epoch, "99percentile"); pushGauge(name, snapshot.get999thPercentile(), epoch, "999percentile"); }
protected void sendSampling(long epoch, String sanitizedName, Sampling metric) throws IOException { final Snapshot snapshot = metric.getSnapshot(); sendFloat(epoch, sanitizedName, "median", snapshot.getMedian()); sendFloat(epoch, sanitizedName, "75percentile", snapshot.get75thPercentile()); sendFloat(epoch, sanitizedName, "95percentile", snapshot.get95thPercentile()); sendFloat(epoch, sanitizedName, "98percentile", snapshot.get98thPercentile()); sendFloat(epoch, sanitizedName, "99percentile", snapshot.get99thPercentile()); sendFloat(epoch, sanitizedName, "999percentile", snapshot.get999thPercentile()); }
protected void sendSampling(String sanitizedName, Sampling metric) { final Snapshot snapshot = metric.getSnapshot(); sendToStatsD(sanitizedName + ".median", formatNumber(snapshot.getMedian())); sendToStatsD(sanitizedName + ".75percentile", formatNumber(snapshot.get75thPercentile())); sendToStatsD(sanitizedName + ".95percentile", formatNumber(snapshot.get95thPercentile())); sendToStatsD(sanitizedName + ".98percentile", formatNumber(snapshot.get98thPercentile())); sendToStatsD(sanitizedName + ".99percentile", formatNumber(snapshot.get99thPercentile())); sendToStatsD(sanitizedName + ".999percentile", formatNumber(snapshot.get999thPercentile())); }