All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.englishtown.vertx.metrics.Utils Maven / Gradle / Ivy

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 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 values, boolean jmxReporter) {
        return create(verticle, registry, values, jmxReporter, null);
    }

    public static JmxReporter create(Verticle verticle, MetricRegistry registry, Map 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;

    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy