public void addSampling(String name, Sampling sampling, boolean convert) { final Snapshot snapshot = sampling.getSnapshot(); maybeAdd(MEDIAN, name, convertDuration(snapshot.getMedian(), convert)); maybeAdd(PCT_75, name, convertDuration(snapshot.get75thPercentile(), convert)); maybeAdd(PCT_95, name, convertDuration(snapshot.get95thPercentile(), convert)); maybeAdd(PCT_98, name, convertDuration(snapshot.get98thPercentile(), convert)); maybeAdd(PCT_99, name, convertDuration(snapshot.get99thPercentile(), convert)); maybeAdd(PCT_999, name, convertDuration(snapshot.get999thPercentile(), convert)); if (!omitComplexGauges) { final double sum = snapshot.size() * snapshot.getMean(); final long count = (long) snapshot.size(); if (count > 0) { SourceInformation info = SourceInformation.from(sourceRegex, name); MultiSampleGaugeMeasurement measurement; try { measurement = MultiSampleGaugeMeasurement.builder(addPrefix(info.name)) .setSource(info.source) .setCount(count) .setSum(convertDuration(sum, convert)) .setMax(convertDuration(snapshot.getMax(), convert)) .setMin(convertDuration(snapshot.getMin(), convert)) .build(); } catch (IllegalArgumentException e) { log.warn("Could not create gauge", e); return; } addMeasurement(measurement); } } }
private void collectHistogramReports( List<DBObject> docs, SortedMap<String, Histogram> histograms, Date timestamp) { if (histograms.isEmpty()) return; for (Map.Entry<String, Histogram> entry : histograms.entrySet()) { final BasicDBObject report = getBasicDBObject(timestamp, entry.getKey(), "histogram"); final Histogram histogram = entry.getValue(); final Snapshot s = histogram.getSnapshot(); report.put("count", s.size()); report.put("75th_percentile", s.get75thPercentile()); report.put("95th_percentile", s.get95thPercentile()); report.put("98th_percentile", s.get98thPercentile()); report.put("99th_percentile", s.get99thPercentile()); report.put("999th_percentile", s.get999thPercentile()); report.put("max", s.getMax()); report.put("min", s.getMin()); report.put("mean", s.getMean()); report.put("median", s.getMedian()); report.put("std_dev", s.getStdDev()); docs.add(report); } }
public int size() { return s.size(); }