Add configuration for Datadog UDP transport
This commit is contained in:
parent
2d132128e1
commit
f53743d287
|
@ -24,6 +24,9 @@ metrics:
|
|||
- "service:chat"
|
||||
transport:
|
||||
apiKey: secret://datadog.apiKey
|
||||
udpTransport:
|
||||
statsdHost: localhost
|
||||
port: 8125
|
||||
excludesAttributes:
|
||||
- m1_rate
|
||||
- m5_rate
|
||||
|
|
|
@ -19,7 +19,9 @@ import io.dropwizard.util.Duration;
|
|||
import java.util.ArrayList;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import org.coursera.metrics.datadog.DatadogReporter;
|
||||
import org.coursera.metrics.datadog.DatadogReporter.Expansion;
|
||||
|
@ -27,6 +29,8 @@ import org.coursera.metrics.datadog.DefaultMetricNameFormatterFactory;
|
|||
import org.coursera.metrics.datadog.DynamicTagsCallbackFactory;
|
||||
import org.coursera.metrics.datadog.MetricNameFormatterFactory;
|
||||
import org.coursera.metrics.datadog.transport.HttpTransport;
|
||||
import org.coursera.metrics.datadog.transport.Transport;
|
||||
import org.coursera.metrics.datadog.transport.UdpTransport;
|
||||
import org.whispersystems.textsecuregcm.WhisperServerVersion;
|
||||
import org.whispersystems.textsecuregcm.configuration.secrets.SecretString;
|
||||
import org.whispersystems.textsecuregcm.util.HostnameUtil;
|
||||
|
@ -54,6 +58,11 @@ public class SignalDatadogReporterFactory extends BaseReporterFactory {
|
|||
@JsonProperty("transport")
|
||||
private HttpTransportConfig httpTransportConfig;
|
||||
|
||||
@Valid
|
||||
@NotNull
|
||||
@JsonProperty("udpTransport")
|
||||
private UdpTransportConfig udpTransportConfig;
|
||||
|
||||
private static final EnumSet<Expansion> EXPANSIONS = EnumSet.of(
|
||||
Expansion.COUNT,
|
||||
Expansion.MIN,
|
||||
|
@ -80,8 +89,12 @@ public class SignalDatadogReporterFactory extends BaseReporterFactory {
|
|||
}
|
||||
}
|
||||
|
||||
final boolean useUdpTransport = Optional.ofNullable(System.getenv("SIGNAL_USE_DATADOG_UDP_TRANSPORT")).isPresent();
|
||||
final Transport transport =
|
||||
useUdpTransport ? udpTransportConfig.udpTransport() : httpTransportConfig.httpTransport();
|
||||
|
||||
return DatadogReporter.forRegistry(registry)
|
||||
.withTransport(httpTransportConfig.httpTransport())
|
||||
.withTransport(transport)
|
||||
.withHost(HostnameUtil.getLocalHostname())
|
||||
.withTags(tagsWithVersion)
|
||||
.withPrefix(prefix)
|
||||
|
@ -115,4 +128,14 @@ public class SignalDatadogReporterFactory extends BaseReporterFactory {
|
|||
.build();
|
||||
}
|
||||
}
|
||||
|
||||
public record UdpTransportConfig(@NotNull String statsdHost, @Min(1) int port) {
|
||||
|
||||
public UdpTransport udpTransport() {
|
||||
return new UdpTransport.Builder()
|
||||
.withStatsdHost(statsdHost)
|
||||
.withPort(port)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue