Example usage for org.apache.hadoop.metrics2 MetricsRecordBuilder addGauge

List of usage examples for org.apache.hadoop.metrics2 MetricsRecordBuilder addGauge

Introduction

In this page you can find the example usage for org.apache.hadoop.metrics2 MetricsRecordBuilder addGauge.

Prototype

public abstract MetricsRecordBuilder addGauge(MetricsInfo info, double value);

Source Link

Document

Add a double gauge metric

Usage

From source file:com.github.joshelser.dropwizard.metrics.hadoop.HadoopMetrics2Reporter.java

License:Apache License

/**
 * Consumes the current metrics collected by dropwizard and adds them to the {@code builder}.
 *
 * @param builder A record builder/*w ww  . j  a v a 2 s.c  o  m*/
 */
void snapshotAllMetrics(MetricsRecordBuilder builder) {
    try {
        // Pass through the gauges
        @SuppressWarnings("rawtypes")
        Iterator<Entry<String, Gauge>> gaugeIterator = dropwizardGauges.entrySet().iterator();
        while (gaugeIterator.hasNext()) {
            @SuppressWarnings("rawtypes")
            Entry<String, Gauge> gauge = gaugeIterator.next();
            final MetricsInfo info = Interns.info(gauge.getKey(), EMPTY_STRING);
            final Object o = gauge.getValue().getValue();

            // Figure out which gauge types metrics2 supports and call the right method
            if (o instanceof Integer) {
                builder.addGauge(info, (int) o);
            } else if (o instanceof Long) {
                builder.addGauge(info, (long) o);
            } else if (o instanceof Float) {
                builder.addGauge(info, (float) o);
            } else if (o instanceof Double) {
                builder.addGauge(info, (double) o);
            } else {
                LOG.trace("Ignoring Gauge ({}) with unhandled type: {}", gauge.getKey(), o.getClass());
            }
        }
    } finally {
        dropwizardGauges = EMPTY_GAUGE_MAP;
    }

    try {
        // Pass through the counters
        Iterator<Entry<String, Counter>> counterIterator = dropwizardCounters.entrySet().iterator();
        while (counterIterator.hasNext()) {
            Entry<String, Counter> counter = counterIterator.next();
            MetricsInfo info = Interns.info(counter.getKey(), EMPTY_STRING);
            builder.addCounter(info, counter.getValue().getCount());
        }
    } finally {
        dropwizardCounters = EMPTY_COUNTER_MAP;
    }

    try {
        // Pass through the histograms
        Iterator<Entry<String, Histogram>> histogramIterator = dropwizardHistograms.entrySet().iterator();
        while (histogramIterator.hasNext()) {
            final Entry<String, Histogram> entry = histogramIterator.next();
            final String name = entry.getKey();
            final Histogram histogram = entry.getValue();

            addSnapshot(builder, name, EMPTY_STRING, histogram.getSnapshot(), histogram.getCount());
        }
    } finally {
        dropwizardHistograms = EMPTY_HISTOGRAM_MAP;
    }

    try {
        // Pass through the meter values
        Iterator<Entry<String, Meter>> meterIterator = dropwizardMeters.entrySet().iterator();
        while (meterIterator.hasNext()) {
            final Entry<String, Meter> meterEntry = meterIterator.next();
            final String name = meterEntry.getKey();
            final Meter meter = meterEntry.getValue();

            addMeter(builder, name, EMPTY_STRING, meter.getCount(), meter.getMeanRate(),
                    meter.getOneMinuteRate(), meter.getFiveMinuteRate(), meter.getFifteenMinuteRate());
        }
    } finally {
        dropwizardMeters = EMPTY_METER_MAP;
    }

    try {
        // Pass through the timers (meter + histogram)
        Iterator<Entry<String, Timer>> timerIterator = dropwizardTimers.entrySet().iterator();
        while (timerIterator.hasNext()) {
            final Entry<String, Timer> timerEntry = timerIterator.next();
            final String name = timerEntry.getKey();
            final Timer timer = timerEntry.getValue();
            final Snapshot snapshot = timer.getSnapshot();

            // Add the meter info (mean rate and rate over time windows)
            addMeter(builder, name, EMPTY_STRING, timer.getCount(), timer.getMeanRate(),
                    timer.getOneMinuteRate(), timer.getFiveMinuteRate(), timer.getFifteenMinuteRate());

            // Count was already added via the meter
            addSnapshot(builder, name, EMPTY_STRING, snapshot);
        }
    } finally {
        dropwizardTimers = EMPTY_TIMER_MAP;
    }

    // Add in metadata about what the units the reported metrics are displayed using.
    builder.tag(RATE_UNIT_LABEL, getRateUnit());
    builder.tag(DURATION_UNIT_LABEL, getDurationUnit());
}

From source file:com.github.joshelser.dropwizard.metrics.hadoop.HadoopMetrics2Reporter.java

License:Apache License

/**
 * Add Dropwizard-Metrics rate information to a Hadoop-Metrics2 record builder, converting the
 * rates to the appropriate unit.//from   www  .j a v a 2  s  . c om
 *
 * @param builder A Hadoop-Metrics2 record builder.
 * @param name A base name for this record.
 * @param desc A description for the record.
 * @param count The number of measured events.
 * @param meanRate The average measured rate.
 * @param oneMinuteRate The measured rate over the past minute.
 * @param fiveMinuteRate The measured rate over the past five minutes
 * @param fifteenMinuteRate The measured rate over the past fifteen minutes.
 */
private void addMeter(MetricsRecordBuilder builder, String name, String desc, long count, double meanRate,
        double oneMinuteRate, double fiveMinuteRate, double fifteenMinuteRate) {
    builder.addGauge(Interns.info(name + "_count", EMPTY_STRING), count);
    builder.addGauge(Interns.info(name + "_mean_rate", EMPTY_STRING), convertRate(meanRate));
    builder.addGauge(Interns.info(name + "_1min_rate", EMPTY_STRING), convertRate(oneMinuteRate));
    builder.addGauge(Interns.info(name + "_5min_rate", EMPTY_STRING), convertRate(fiveMinuteRate));
    builder.addGauge(Interns.info(name + "_15min_rate", EMPTY_STRING), convertRate(fifteenMinuteRate));
}

From source file:com.github.joshelser.dropwizard.metrics.hadoop.HadoopMetrics2Reporter.java

License:Apache License

/**
 * Add Dropwizard-Metrics value-distribution data to a Hadoop-Metrics2 record building, converting
 * the durations to the appropriate unit.
 *
 * @param builder A Hadoop-Metrics2 record builder.
 * @param name A base name for this record.
 * @param desc A description for this record.
 * @param snapshot The distribution of measured values.
 * @param count The number of values which were measured.
 *//*from  ww  w .  j av  a 2s  . c om*/
private void addSnapshot(MetricsRecordBuilder builder, String name, String desc, Snapshot snapshot,
        long count) {
    builder.addGauge(Interns.info(name + "_count", desc), count);
    addSnapshot(builder, name, desc, snapshot);
}

From source file:com.github.joshelser.dropwizard.metrics.hadoop.HadoopMetrics2Reporter.java

License:Apache License

/**
 * Add Dropwizard-Metrics value-distribution data to a Hadoop-Metrics2 record building, converting
 * the durations to the appropriate unit.
 *
 * @param builder A Hadoop-Metrics2 record builder.
 * @param name A base name for this record.
 * @param desc A description for this record.
 * @param snapshot The distribution of measured values.
 *//*from   w ww.j a  va2  s.c  o m*/
private void addSnapshot(MetricsRecordBuilder builder, String name, String desc, Snapshot snapshot) {
    builder.addGauge(Interns.info(name + "_mean", desc), convertDuration(snapshot.getMean()));
    builder.addGauge(Interns.info(name + "_min", desc), convertDuration(snapshot.getMin()));
    builder.addGauge(Interns.info(name + "_max", desc), convertDuration(snapshot.getMax()));
    builder.addGauge(Interns.info(name + "_median", desc), convertDuration(snapshot.getMedian()));
    builder.addGauge(Interns.info(name + "_stddev", desc), convertDuration(snapshot.getStdDev()));

    builder.addGauge(Interns.info(name + "_75thpercentile", desc),
            convertDuration(snapshot.get75thPercentile()));
    builder.addGauge(Interns.info(name + "_95thpercentile", desc),
            convertDuration(snapshot.get95thPercentile()));
    builder.addGauge(Interns.info(name + "_98thpercentile", desc),
            convertDuration(snapshot.get98thPercentile()));
    builder.addGauge(Interns.info(name + "_99thpercentile", desc),
            convertDuration(snapshot.get99thPercentile()));
    builder.addGauge(Interns.info(name + "_999thpercentile", desc),
            convertDuration(snapshot.get999thPercentile()));
}

From source file:org.apache.accumulo.tserver.metrics.Metrics2TabletServerMetrics.java

License:Apache License

@Override
public void getMetrics(MetricsCollector collector, boolean all) {
    MetricsRecordBuilder builder = collector.addRecord(RECORD).setContext(CONTEXT);

    // Update each MutableMetric with the new value
    snapshot();//from w w  w  . j a  v  a 2  s .co  m

    // Add then all to the builder
    registry.snapshot(builder, all);

    // TODO Some day, MetricsRegistry will also support the MetricsGaugeDouble or allow us to instantiate it directly
    builder.addGauge(Interns.info(FILES_PER_TABLET, "Number of files per tablet"),
            util.getAverageFilesPerTablet());
    builder.addGauge(Interns.info(HOLD_TIME, "Time commits held"), util.getHoldTime());
}

From source file:org.apache.calcite.dropwizard.metrics.hadoop.HadoopMetrics2Reporter.java

License:Apache License

/**
 * Consumes the current metrics collected by dropwizard and adds them to the {@code builder}.
 *
 * @param builder A record builder//  w  w  w  .  j  a  v a  2 s  . c o m
 */
void snapshotAllMetrics(MetricsRecordBuilder builder) {
    // Pass through the gauges
    @SuppressWarnings("rawtypes")
    Iterator<Entry<String, Gauge>> gaugeIterator = dropwizardGauges.iterator();
    while (gaugeIterator.hasNext()) {
        @SuppressWarnings("rawtypes")
        Entry<String, Gauge> gauge = gaugeIterator.next();
        final MetricsInfo info = Interns.info(gauge.getKey(), EMPTY_STRING);
        final Object o = gauge.getValue().getValue();

        // Figure out which gauge types metrics2 supports and call the right method
        if (o instanceof Integer) {
            builder.addGauge(info, (int) o);
        } else if (o instanceof Long) {
            builder.addGauge(info, (long) o);
        } else if (o instanceof Float) {
            builder.addGauge(info, (float) o);
        } else if (o instanceof Double) {
            builder.addGauge(info, (double) o);
        } else {
            LOG.info("Ignoring Gauge ({}) with unhandled type: {}", gauge.getKey(), o.getClass());
        }

        gaugeIterator.remove();
    }

    // Pass through the counters
    Iterator<Entry<String, Counter>> counterIterator = dropwizardCounters.iterator();
    while (counterIterator.hasNext()) {
        Entry<String, Counter> counter = counterIterator.next();
        MetricsInfo info = Interns.info(counter.getKey(), EMPTY_STRING);
        LOG.info("Adding counter {} {}", info, counter.getValue().getCount());
        builder.addCounter(info, counter.getValue().getCount());
        counterIterator.remove();
    }

    // Pass through the histograms
    Iterator<Entry<String, Histogram>> histogramIterator = dropwizardHistograms.iterator();
    while (histogramIterator.hasNext()) {
        final Entry<String, Histogram> entry = histogramIterator.next();
        final String name = entry.getKey();
        final Histogram histogram = entry.getValue();

        addSnapshot(builder, name, EMPTY_STRING, histogram.getSnapshot(), histogram.getCount());

        histogramIterator.remove();
    }

    // Pass through the meter values
    Iterator<Entry<String, Meter>> meterIterator = dropwizardMeters.iterator();
    while (meterIterator.hasNext()) {
        final Entry<String, Meter> meterEntry = meterIterator.next();
        final String name = meterEntry.getKey();
        final Meter meter = meterEntry.getValue();

        addMeter(builder, name, EMPTY_STRING, meter.getCount(), meter.getMeanRate(), meter.getOneMinuteRate(),
                meter.getFiveMinuteRate(), meter.getFifteenMinuteRate());

        meterIterator.remove();
    }

    // Pass through the timers (meter + histogram)
    Iterator<Entry<String, Timer>> timerIterator = dropwizardTimers.iterator();
    while (timerIterator.hasNext()) {
        final Entry<String, Timer> timerEntry = timerIterator.next();
        final String name = timerEntry.getKey();
        final Timer timer = timerEntry.getValue();
        final Snapshot snapshot = timer.getSnapshot();

        // Add the meter info (mean rate and rate over time windows)
        addMeter(builder, name, EMPTY_STRING, timer.getCount(), timer.getMeanRate(), timer.getOneMinuteRate(),
                timer.getFiveMinuteRate(), timer.getFifteenMinuteRate());

        // Count was already added via the meter
        addSnapshot(builder, name, EMPTY_STRING, snapshot);

        timerIterator.remove();
    }

    // Add in metadata about what the units the reported metrics are displayed using.
    builder.tag(RATE_UNIT_LABEL, getRateUnit());
    builder.tag(DURATION_UNIT_LABEL, getDurationUnit());
}

From source file:org.apache.spark.network.yarn.YarnShuffleServiceMetrics.java

License:Apache License

/**
 * The metric types used in//from w  ww .  j  a v  a  2s  .  co m
 * {@link org.apache.spark.network.shuffle.ExternalShuffleBlockHandler.ShuffleMetrics}.
 * Visible for testing.
 */
public static void collectMetric(MetricsRecordBuilder metricsRecordBuilder, String name, Metric metric) {

    if (metric instanceof Timer) {
        Timer t = (Timer) metric;
        metricsRecordBuilder
                .addCounter(new ShuffleServiceMetricsInfo(name + "_count", "Count of timer " + name),
                        t.getCount())
                .addGauge(new ShuffleServiceMetricsInfo(name + "_rate15", "15 minute rate of timer " + name),
                        t.getFifteenMinuteRate())
                .addGauge(new ShuffleServiceMetricsInfo(name + "_rate5", "5 minute rate of timer " + name),
                        t.getFiveMinuteRate())
                .addGauge(new ShuffleServiceMetricsInfo(name + "_rate1", "1 minute rate of timer " + name),
                        t.getOneMinuteRate())
                .addGauge(new ShuffleServiceMetricsInfo(name + "_rateMean", "Mean rate of timer " + name),
                        t.getMeanRate());
    } else if (metric instanceof Meter) {
        Meter m = (Meter) metric;
        metricsRecordBuilder
                .addCounter(new ShuffleServiceMetricsInfo(name + "_count", "Count of meter " + name),
                        m.getCount())
                .addGauge(new ShuffleServiceMetricsInfo(name + "_rate15", "15 minute rate of meter " + name),
                        m.getFifteenMinuteRate())
                .addGauge(new ShuffleServiceMetricsInfo(name + "_rate5", "5 minute rate of meter " + name),
                        m.getFiveMinuteRate())
                .addGauge(new ShuffleServiceMetricsInfo(name + "_rate1", "1 minute rate of meter " + name),
                        m.getOneMinuteRate())
                .addGauge(new ShuffleServiceMetricsInfo(name + "_rateMean", "Mean rate of meter " + name),
                        m.getMeanRate());
    } else if (metric instanceof Gauge) {
        final Object gaugeValue = ((Gauge) metric).getValue();
        if (gaugeValue instanceof Integer) {
            metricsRecordBuilder.addGauge(getShuffleServiceMetricsInfo(name), (Integer) gaugeValue);
        } else if (gaugeValue instanceof Long) {
            metricsRecordBuilder.addGauge(getShuffleServiceMetricsInfo(name), (Long) gaugeValue);
        } else if (gaugeValue instanceof Float) {
            metricsRecordBuilder.addGauge(getShuffleServiceMetricsInfo(name), (Float) gaugeValue);
        } else if (gaugeValue instanceof Double) {
            metricsRecordBuilder.addGauge(getShuffleServiceMetricsInfo(name), (Double) gaugeValue);
        } else {
            throw new IllegalStateException(
                    "Not supported class type of metric[" + name + "] for value " + gaugeValue);
        }
    } else if (metric instanceof Counter) {
        Counter c = (Counter) metric;
        long counterValue = c.getCount();
        metricsRecordBuilder.addGauge(
                new ShuffleServiceMetricsInfo(name, "Number of " + "connections to shuffle service " + name),
                counterValue);
    }
}