public void refresh() { // Refresh 1 min long oneMinSum = 0; long fiveMinSum = 0; long fifteenMinSum = 0; long meanSum = 0; int count = _meters.size(); _count = 0; for (T m : _meters) { oneMinSum += m.oneMinuteRate() * SECONDS_IN_ONE_MIN; fiveMinSum += m.fiveMinuteRate() * SECONDS_IN_FIVE_MIN; fifteenMinSum += m.fifteenMinuteRate() * SECONDS_IN_FIFTEEN_MIN; meanSum += m.meanRate() * m.count(); _count += m.count(); } _oneMinRate = oneMinSum / (count * SECONDS_IN_ONE_MIN * 1.0); _fiveMinRate = fiveMinSum / (count * SECONDS_IN_FIVE_MIN * 1.0); _fifteenMinRate = fifteenMinSum / (count * SECONDS_IN_FIFTEEN_MIN * 1.0); _meanRate = meanSum / _count; }
@Override public String eventType() { if (_meters.isEmpty()) { return null; } return _meters.get(0).eventType(); }
@Override public TimeUnit rateUnit() { if (_meters.isEmpty()) { return null; } return _meters.get(0).rateUnit(); }
@Override public void processMeter(MetricName metricName, Metered metered, Context context) { if (MetricsUtils.isInterested(metricName)) { LOG.trace("Processing metric {} of type Meter.", metricName); double value; if (context.reportingInterval() <= 60000L) { value = metered.oneMinuteRate(); } else if (context.reportingInterval() <= 300000) { value = metered.fiveMinuteRate(); } else { value = metered.fifteenMinuteRate(); } CruiseControlMetric ccm = MetricsUtils.toCruiseControlMetric(context.time(), context.brokerId(), metricName, value); context.reporter().sendCruiseControlMetric(ccm); } }
@Override public double getFifteenMinuteRate() { return metric.fifteenMinuteRate(); } }
@Override public double getOneMinuteRate() { return metric.oneMinuteRate(); }
@Override public double getFiveMinuteRate() { return metric.fiveMinuteRate(); }
@Override public long getCount() { return metric.count(); }
@Override public double getMeanRate() { return metric.meanRate(); }
@Override public void processMeter(MetricName metricName, Metered metered, Context context) { if (MetricsUtils.isInterested(metricName)) { LOG.trace("Processing metric {} of type Meter.", metricName); double value; if (context.reportingInterval() <= 60000L) { value = metered.oneMinuteRate(); } else if (context.reportingInterval() <= 300000) { value = metered.fiveMinuteRate(); } else { value = metered.fifteenMinuteRate(); } CruiseControlMetric ccm = MetricsUtils.toCruiseControlMetric(context.time(), context.brokerId(), metricName, value); context.reporter().sendCruiseControlMetric(ccm); } }
private static void writeMeteredFields(Metered metered, JsonGenerator json) throws IOException { json.writeStringField("unit", metered.rateUnit().toString().toLowerCase()); json.writeNumberField("count", metered.count()); json.writeNumberField("mean", metered.meanRate()); json.writeNumberField("m1", metered.oneMinuteRate()); json.writeNumberField("m5", metered.fiveMinuteRate()); json.writeNumberField("m15", metered.fifteenMinuteRate()); } }
@Override public TimeUnit getRateUnit() { return metric.rateUnit(); }
@Override public String getEventType() { return metric.eventType(); }
public static Map<String, Double> explodeMetered(Metered metered) { return ImmutableMap.<String, Double>builder() .put("count", new Long(metered.count()).doubleValue()) .put("mean", metered.meanRate()) .put("m1", metered.oneMinuteRate()) .put("m5", metered.fiveMinuteRate()) .put("m15", metered.fifteenMinuteRate()) .build(); }
@Override public void processMeter(MetricName name, Metered meter, Context context) throws Exception { final JsonGenerator json = context.json; json.writeStartObject(); { json.writeStringField("type", "meter"); json.writeStringField("event_type", meter.eventType()); writeMeteredFields(meter, json); } json.writeEndObject(); }
public static Map<String, Double> explodeMetered(Metered metered) { return ImmutableMap.<String, Double>builder() .put("count", new Long(metered.count()).doubleValue()) .put("mean", metered.meanRate()) .put("m1", metered.oneMinuteRate()) .put("m5", metered.fiveMinuteRate()) .put("m15", metered.fifteenMinuteRate()) .build(); }
@Override public void processMeter(MetricName name, Metered meter, PrintStream stream) { final String unit = abbrev(meter.rateUnit()); stream.printf(locale, " count = %d\n", meter.count()); stream.printf(locale, " mean rate = %2.2f %s/%s\n", meter.meanRate(), meter.eventType(), unit); stream.printf(locale, " 1-minute rate = %2.2f %s/%s\n", meter.oneMinuteRate(), meter.eventType(), unit); stream.printf(locale, " 5-minute rate = %2.2f %s/%s\n", meter.fiveMinuteRate(), meter.eventType(), unit); stream.printf(locale, " 15-minute rate = %2.2f %s/%s\n", meter.fifteenMinuteRate(), meter.eventType(), unit); }
@Override public void processMeter(MetricName name, Metered meter, Long timestamp) { Map<String, Double> fields = new HashMap<String, Double>(); fields.put("Count", Double.valueOf(meter.count())); fields.put("MeanRate", meter.meanRate()); fields.put("FifteenMinuteRate", meter.fifteenMinuteRate()); fields.put("FiveMinuteRate", meter.fiveMinuteRate()); fields.put("OneMinuteRate", meter.oneMinuteRate()); publish(createMeasurement(name, timestamp, fixedTags, fields)); }
@Override public void processMeter(MetricName name, Metered meter, Context context) throws IOException { final PrintStream stream = context.getStream( "# time,count,1 min rate,mean rate,5 min rate,15 min rate"); stream.append(new StringBuilder() .append(meter.count()).append(',') .append(meter.oneMinuteRate()).append(',') .append(meter.meanRate()).append(',') .append(meter.fiveMinuteRate()).append(',') .append(meter.fifteenMinuteRate()).toString()) .println(); stream.flush(); }
@Override public void processMeter(MetricName name, Metered meter, String x) throws IOException { final String sanitizedName = sanitizeName(name); final String rateUnits = meter.rateUnit().name(); final String rateUnit = rateUnits.substring(0, rateUnits.length() - 1).toLowerCase(Locale.US); final String unit = meter.eventType() + '/' + rateUnit; printLongField(sanitizedName + ".count", meter.count(), "metered", meter.eventType()); printDoubleField(sanitizedName + ".meanRate", meter.meanRate(), "metered", unit); printDoubleField(sanitizedName + ".1MinuteRate", meter.oneMinuteRate(), "metered", unit); printDoubleField(sanitizedName + ".5MinuteRate", meter.fiveMinuteRate(), "metered", unit); printDoubleField(sanitizedName + ".15MinuteRate", meter.fifteenMinuteRate(), "metered", unit); }