Package fr.ippon.tatami.config

Source Code of fr.ippon.tatami.config.MetricsConfiguration

package fr.ippon.tatami.config;

import com.yammer.metrics.HealthChecks;
import com.yammer.metrics.reporting.GraphiteReporter;
import fr.ippon.tatami.config.metrics.CassandraHealthCheck;
import fr.ippon.tatami.config.metrics.JavaMailHealthCheck;
import fr.ippon.tatami.service.MailService;
import me.prettyprint.hector.api.Keyspace;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

import javax.annotation.PostConstruct;
import javax.inject.Inject;
import java.util.concurrent.TimeUnit;

@Configuration
public class MetricsConfiguration {

    private final Logger log = LoggerFactory.getLogger(MetricsConfiguration.class);

    @Inject
    private Environment env;

    @Inject
    private Keyspace keyspaceOperator;

    @Inject
    private MailService mailService;

    @PostConstruct
    public void initMetrics() {
        if (env.acceptsProfiles(Constants.SPRING_PROFILE_METRICS)) {
            log.debug("Initializing Metrics healthchecks");
            HealthChecks.register(new CassandraHealthCheck(keyspaceOperator));
            HealthChecks.register(new JavaMailHealthCheck(mailService));

            String graphiteHost = env.getProperty("tatami.metrics.graphite.host");
            if (graphiteHost != null) {
                log.debug("Initializing Metrics Graphite reporting");
                Integer graphitePort = env.getProperty("tatami.metrics.graphite.port", Integer.class);
                GraphiteReporter.enable(1,
                        TimeUnit.MINUTES,
                        graphiteHost,
                        graphitePort);
            } else {
                log.warn("Graphite server is not configured, unable to send any data to Graphite");
            }
        }
    }
}
TOP

Related Classes of fr.ippon.tatami.config.MetricsConfiguration

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.