Package com.englishtown.vertx.metrics

Source Code of com.englishtown.vertx.metrics.Utils

package com.englishtown.vertx.metrics;

import com.codahale.metrics.JmxReporter;
import com.codahale.metrics.MetricRegistry;
import org.vertx.java.core.json.JsonObject;
import org.vertx.java.platform.Verticle;

import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;

/**
* Metric utilities to set up defaults for a Verticle
*/
public class Utils {

    public static final String DEFAULT_METRIC_PREFIX = "et.metrics";

    // A JVM unique ID for when multiple verticle instances are running
    private static final AtomicInteger REPORTER_ID = new AtomicInteger(0);


    public static JmxReporter create(Verticle verticle, MetricRegistry registry, JsonObject config) {
        return create(verticle, registry, null, config);
    }

    public static JmxReporter create(Verticle verticle, MetricRegistry registry, boolean jmxReporter) {
        return create(verticle, registry, null, jmxReporter);
    }

    public static JmxReporter create(Verticle verticle, MetricRegistry registry, Map<String, Object> values, JsonObject config) {
        return create(verticle, registry, values, config.getBoolean("jmx-reporter", false), config.getString("jmx-reporter-domain"));
    }

    public static JmxReporter create(Verticle verticle, MetricRegistry registry, Map<String, Object> values, boolean jmxReporter) {
        return create(verticle, registry, values, jmxReporter, null);
    }

    public static JmxReporter create(Verticle verticle, MetricRegistry registry, Map<String, Object> values, boolean jmxReporter, String domain) {

        try {
            new VerticleGauges(verticle, registry, values);
        } catch (Throwable t) {
            verticle.getContainer().logger().warn("Error creating VerticleGauges", t);
        }
        try {
            new VertxEventLoopGauges(verticle.getVertx(), verticle.getContainer(), registry);
        } catch (Throwable t) {
            verticle.getContainer().logger().warn("Error creating VertxEventLoopGauges", t);
        }
        try {
            new VertxBackgroundPoolGauges(verticle.getVertx(), verticle.getContainer(), registry);
        } catch (Throwable t) {
            verticle.getContainer().logger().warn("Error creating VertxBackgroundPoolGauges", t);
        }

        if (domain == null || domain.isEmpty()) {
            domain = "et.metrics";
        }

        // Guarantee unique name
        domain += "-" + REPORTER_ID.incrementAndGet();

        if (jmxReporter) {
            JmxReporter reporter = JmxReporter
                    .forRegistry(registry)
                    .inDomain(domain)
                    .build();

            reporter.start();
            return reporter;
        }

        return null;

    }

}
TOP

Related Classes of com.englishtown.vertx.metrics.Utils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.