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

com.palantir.atlasdb.CassandraTopologyValidationMetrics Maven / Gradle / Ivy

The newest version!
package com.palantir.atlasdb;

import com.codahale.metrics.Counter;
import com.codahale.metrics.Histogram;
import com.google.errorprone.annotations.CheckReturnValue;
import com.palantir.logsafe.Preconditions;
import com.palantir.tritium.metrics.registry.MetricName;
import com.palantir.tritium.metrics.registry.TaggedMetricRegistry;

/**
 * Metrics which provide insight on the cassandra topology validation check.
 */
public final class CassandraTopologyValidationMetrics {
    private static final String JAVA_VERSION = System.getProperty("java.version", "unknown");

    private static final String LIBRARY_NAME = "atlasdb";

    private static final String LIBRARY_VERSION = "0.1152.0";

    private static final MetricName validationFailuresMetricName = MetricName.builder()
            .safeName("com.palantir.atlasdb.cassandra.topology.validationFailures")
            .putSafeTags("libraryName", LIBRARY_NAME)
            .putSafeTags("libraryVersion", LIBRARY_VERSION)
            .putSafeTags("javaVersion", JAVA_VERSION)
            .build();

    private static final MetricName validationLatencyMetricName = MetricName.builder()
            .safeName("com.palantir.atlasdb.cassandra.topology.validationLatency")
            .putSafeTags("libraryName", LIBRARY_NAME)
            .putSafeTags("libraryVersion", LIBRARY_VERSION)
            .putSafeTags("javaVersion", JAVA_VERSION)
            .build();

    private final TaggedMetricRegistry registry;

    private CassandraTopologyValidationMetrics(TaggedMetricRegistry registry) {
        this.registry = registry;
    }

    public static CassandraTopologyValidationMetrics of(TaggedMetricRegistry registry) {
        return new CassandraTopologyValidationMetrics(Preconditions.checkNotNull(registry, "TaggedMetricRegistry"));
    }

    /**
     * Count of total failures when performing topology validation.
     */
    @CheckReturnValue
    public Counter validationFailures() {
        return registry.counter(validationFailuresMetricName());
    }

    public static MetricName validationFailuresMetricName() {
        return validationFailuresMetricName;
    }

    /**
     * Time taken to validate the topology.
     */
    @CheckReturnValue
    public Histogram validationLatency() {
        return registry.histogram(validationLatencyMetricName());
    }

    public static MetricName validationLatencyMetricName() {
        return validationLatencyMetricName;
    }

    @Override
    public String toString() {
        return "CassandraTopologyValidationMetrics{registry=" + registry + '}';
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy