private void collectMeterReports(
     List<DBObject> docs, SortedMap<String, Meter> meters, Date timestamp) {
   if (meters.isEmpty()) return;
   for (Map.Entry<String, Meter> entry : meters.entrySet()) {
     final BasicDBObject report = getBasicDBObject(timestamp, entry.getKey(), "meter");
     final Meter v = entry.getValue();
     report.put("count", v.getCount());
     report.put("1-minute-rate", v.getOneMinuteRate());
     report.put("5-minute-rate", v.getFiveMinuteRate());
     report.put("15-minute-rate", v.getFifteenMinuteRate());
     report.put("mean-rate", v.getMeanRate());
     docs.add(report);
   }
 }
  protected Map<String, Object> buildMeterMap(Meter m) {
    Map<String, Object> metrics = Maps.newHashMap();

    if (m == null) {
      return metrics;
    }

    Map<String, Object> rate = Maps.newHashMap();
    rate.put("one_minute", m.getOneMinuteRate());
    rate.put("five_minute", m.getFiveMinuteRate());
    rate.put("fifteen_minute", m.getFifteenMinuteRate());
    rate.put("total", m.getCount());
    rate.put("mean", m.getMeanRate());

    metrics.put("rate_unit", "events/second");
    metrics.put("rate", rate);

    return metrics;
  }