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