Add a hostname-aware reporter factory.
This commit is contained in:
parent
c634185b6f
commit
eb1b073385
6
pom.xml
6
pom.xml
|
@ -35,6 +35,7 @@
|
||||||
<commons-csv.version>1.8</commons-csv.version>
|
<commons-csv.version>1.8</commons-csv.version>
|
||||||
<commons-io.version>2.9.0</commons-io.version>
|
<commons-io.version>2.9.0</commons-io.version>
|
||||||
<dropwizard.version>2.0.22</dropwizard.version>
|
<dropwizard.version>2.0.22</dropwizard.version>
|
||||||
|
<dropwizard-metrics-datadog.version>1.1.13</dropwizard-metrics-datadog.version>
|
||||||
<guava.version>30.1.1-jre</guava.version>
|
<guava.version>30.1.1-jre</guava.version>
|
||||||
<jaxb.version>2.3.1</jaxb.version>
|
<jaxb.version>2.3.1</jaxb.version>
|
||||||
<jedis.version>2.9.0</jedis.version>
|
<jedis.version>2.9.0</jedis.version>
|
||||||
|
@ -171,6 +172,11 @@
|
||||||
<artifactId>commons-csv</artifactId>
|
<artifactId>commons-csv</artifactId>
|
||||||
<version>${commons-csv.version}</version>
|
<version>${commons-csv.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.coursera</groupId>
|
||||||
|
<artifactId>dropwizard-metrics-datadog</artifactId>
|
||||||
|
<version>${dropwizard-metrics-datadog.version}</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.glassfish.jaxb</groupId>
|
<groupId>org.glassfish.jaxb</groupId>
|
||||||
<artifactId>jaxb-runtime</artifactId>
|
<artifactId>jaxb-runtime</artifactId>
|
||||||
|
|
|
@ -226,7 +226,10 @@
|
||||||
<groupId>io.micrometer</groupId>
|
<groupId>io.micrometer</groupId>
|
||||||
<artifactId>micrometer-registry-datadog</artifactId>
|
<artifactId>micrometer-registry-datadog</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.coursera</groupId>
|
||||||
|
<artifactId>dropwizard-metrics-datadog</artifactId>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
<groupId>com.fasterxml.jackson.core</groupId>
|
||||||
<artifactId>jackson-core</artifactId>
|
<artifactId>jackson-core</artifactId>
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
/*
|
||||||
|
* This is derived from Coursera's dropwizard datadog reporter.
|
||||||
|
* https://github.com/coursera/metrics-datadog
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.whispersystems.textsecuregcm.metrics;
|
||||||
|
|
||||||
|
import com.codahale.metrics.MetricRegistry;
|
||||||
|
import com.codahale.metrics.ScheduledReporter;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||||
|
import io.dropwizard.metrics.BaseReporterFactory;
|
||||||
|
import java.util.EnumSet;
|
||||||
|
import java.util.List;
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import org.coursera.metrics.datadog.DatadogReporter;
|
||||||
|
import org.coursera.metrics.datadog.DatadogReporter.Expansion;
|
||||||
|
import org.coursera.metrics.datadog.DefaultMetricNameFormatterFactory;
|
||||||
|
import org.coursera.metrics.datadog.DynamicTagsCallbackFactory;
|
||||||
|
import org.coursera.metrics.datadog.MetricNameFormatterFactory;
|
||||||
|
import org.coursera.metrics.datadog.transport.AbstractTransportFactory;
|
||||||
|
import org.whispersystems.textsecuregcm.util.HostnameUtil;
|
||||||
|
|
||||||
|
@JsonTypeName("signal-datadog")
|
||||||
|
public class SignalDatadogReporterFactory extends BaseReporterFactory {
|
||||||
|
|
||||||
|
@JsonProperty
|
||||||
|
private List<String> tags = null;
|
||||||
|
|
||||||
|
@Valid
|
||||||
|
@JsonProperty
|
||||||
|
private DynamicTagsCallbackFactory dynamicTagsCallback = null;
|
||||||
|
|
||||||
|
@JsonProperty
|
||||||
|
private String prefix = null;
|
||||||
|
|
||||||
|
@Valid
|
||||||
|
@NotNull
|
||||||
|
@JsonProperty
|
||||||
|
private MetricNameFormatterFactory metricNameFormatter = new DefaultMetricNameFormatterFactory();
|
||||||
|
|
||||||
|
@Valid
|
||||||
|
@NotNull
|
||||||
|
@JsonProperty
|
||||||
|
private AbstractTransportFactory transport = null;
|
||||||
|
|
||||||
|
private static final EnumSet<Expansion> EXPANSIONS = EnumSet.of(
|
||||||
|
Expansion.COUNT,
|
||||||
|
Expansion.MIN,
|
||||||
|
Expansion.MAX,
|
||||||
|
Expansion.MEAN,
|
||||||
|
Expansion.MEDIAN,
|
||||||
|
Expansion.P75,
|
||||||
|
Expansion.P95,
|
||||||
|
Expansion.P99,
|
||||||
|
Expansion.P999
|
||||||
|
);
|
||||||
|
|
||||||
|
public ScheduledReporter build(MetricRegistry registry) {
|
||||||
|
return DatadogReporter.forRegistry(registry)
|
||||||
|
.withTransport(transport.build())
|
||||||
|
.withHost(HostnameUtil.getLocalHostname())
|
||||||
|
.withTags(tags)
|
||||||
|
.withPrefix(prefix)
|
||||||
|
.withExpansions(EXPANSIONS)
|
||||||
|
.withMetricNameFormatter(metricNameFormatter.build())
|
||||||
|
.withDynamicTagCallback(dynamicTagsCallback != null ? dynamicTagsCallback.build() : null)
|
||||||
|
.filter(getFilter())
|
||||||
|
.convertDurationsTo(getDurationUnit())
|
||||||
|
.convertRatesTo(getRateUnit())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1 +1,2 @@
|
||||||
org.whispersystems.textsecuregcm.metrics.JsonMetricsReporterFactory
|
org.whispersystems.textsecuregcm.metrics.JsonMetricsReporterFactory
|
||||||
|
org.whispersystems.textsecuregcm.metrics.SignalDatadogReporterFactory
|
||||||
|
|
Loading…
Reference in New Issue