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

com.automattic.elasticsearch.statsd.StatsdReporter Maven / Gradle / Ivy

package com.automattic.elasticsearch.statsd;

import com.timgroup.statsd.StatsDClient;
import org.elasticsearch.common.logging.ESLogger;
import org.elasticsearch.common.logging.ESLoggerFactory;

public abstract class StatsdReporter {

    private static final String DEFAULT_JOINER = ".";
    private static final ESLogger logger = ESLoggerFactory.getLogger(StatsdReporter.class.getName());
    private StatsDClient statsdClient;

    public StatsdReporter setStatsDClient(StatsDClient statsdClient) {
        this.statsdClient = statsdClient;
        return this;
    }

    public abstract void run();

    protected void sendGauge(String name, String valueName, long value) {
        this.statsdClient.gauge(this.join(name, valueName), value);
    }

    protected void sendGauge(String name, String valueName, double value) {
        this.statsdClient.gauge(this.join(name, valueName), value);
    }

    protected void sendCount(String name, String valueName, long value) {
        this.statsdClient.count(this.join(name, valueName), value);
    }

    protected void sendTime(String name, String valueName, long value) {
        this.statsdClient.time(this.join(name, valueName), value);
    }

    protected String sanitizeString(String s) {
        return s.replace(' ', '-');
    }

    protected String buildMetricName(String name) {
        return this.sanitizeString(name);
    }

    private String join(String... parts) {
        if (parts == null) {
            return null;
        }
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < parts.length; i++) {
            builder.append(parts[i]);
            if (i < parts.length - 1) {
                builder.append(DEFAULT_JOINER);
            }
        }
        return builder.toString();
    }

    protected void logException(Exception e) {
        logger.warn("Error writing to StatsD", e);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy