diff --git a/service/config/sample.yml b/service/config/sample.yml index 762801921..d87c79c4e 100644 --- a/service/config/sample.yml +++ b/service/config/sample.yml @@ -224,10 +224,6 @@ cdn: bucket: cdn # S3 Bucket name region: us-west-2 # AWS region -datadog: - apiKey: secret://datadog.apiKey - environment: dev - unidentifiedDelivery: certificate: secret://unidentifiedDelivery.certificate privateKey: secret://unidentifiedDelivery.privateKey diff --git a/service/pom.xml b/service/pom.xml index f3c27fba0..ecc6cf235 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -255,7 +255,7 @@ io.micrometer - micrometer-registry-datadog + micrometer-registry-statsd org.coursera diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java index d3279dc6e..45f322f59 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java @@ -27,7 +27,7 @@ import org.whispersystems.textsecuregcm.configuration.BraintreeConfiguration; import org.whispersystems.textsecuregcm.configuration.CdnConfiguration; import org.whispersystems.textsecuregcm.configuration.ClientReleaseConfiguration; import org.whispersystems.textsecuregcm.configuration.CommandStopListenerConfiguration; -import org.whispersystems.textsecuregcm.configuration.DatadogConfiguration; +import org.whispersystems.textsecuregcm.configuration.DogstatsdConfiguration; import org.whispersystems.textsecuregcm.configuration.DirectoryV2Configuration; import org.whispersystems.textsecuregcm.configuration.DynamoDbClientConfiguration; import org.whispersystems.textsecuregcm.configuration.DynamoDbTables; @@ -106,7 +106,7 @@ public class WhisperServerConfiguration extends Configuration { @NotNull @Valid @JsonProperty - private DatadogConfiguration datadog; + private DogstatsdConfiguration dogstatsd = new DogstatsdConfiguration(); @NotNull @Valid @@ -416,8 +416,8 @@ public class WhisperServerConfiguration extends Configuration { return cdn; } - public DatadogConfiguration getDatadogConfiguration() { - return datadog; + public DogstatsdConfiguration getDatadogConfiguration() { + return dogstatsd; } public UnidentifiedDeliveryConfiguration getDeliveryCertificate() { diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DatadogConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DatadogConfiguration.java deleted file mode 100644 index 4c2c7ac17..000000000 --- a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DatadogConfiguration.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2013 Signal Messenger, LLC - * SPDX-License-Identifier: AGPL-3.0-only - */ - -package org.whispersystems.textsecuregcm.configuration; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.micrometer.datadog.DatadogConfig; -import java.time.Duration; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import org.whispersystems.textsecuregcm.configuration.secrets.SecretString; - -public class DatadogConfiguration implements DatadogConfig { - - @JsonProperty - @NotNull - private SecretString apiKey; - - @JsonProperty - @NotNull - private Duration step = Duration.ofSeconds(10); - - @JsonProperty - @NotBlank - private String environment; - - @JsonProperty - @Min(1) - private int batchSize = 5_000; - - @Override - public String apiKey() { - return apiKey.value(); - } - - @Override - public Duration step() { - return step; - } - - public String getEnvironment() { - return environment; - } - - @Override - public int batchSize() { - return batchSize; - } - - @Override - public String hostTag() { - return "host"; - } - - @Override - public String get(final String key) { - return null; - } -} diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DogstatsdConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DogstatsdConfiguration.java new file mode 100644 index 000000000..9103c2a32 --- /dev/null +++ b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DogstatsdConfiguration.java @@ -0,0 +1,35 @@ +/* + * Copyright 2013 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.whispersystems.textsecuregcm.configuration; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.micrometer.statsd.StatsdConfig; +import io.micrometer.statsd.StatsdFlavor; +import java.time.Duration; +import javax.validation.constraints.NotNull; + +public class DogstatsdConfiguration implements StatsdConfig { + + @JsonProperty + @NotNull + private Duration step = Duration.ofSeconds(10); + + @Override + public Duration step() { + return step; + } + + @Override + public StatsdFlavor flavor() { + return StatsdFlavor.DATADOG; + } + + @Override + public String get(final String key) { + // We have no Micrometer key/value pairs to report, so always return `null` + return null; + } +} diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsUtil.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsUtil.java index 23dea4224..553f9045a 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsUtil.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsUtil.java @@ -14,10 +14,9 @@ import io.micrometer.core.instrument.Metrics; import io.micrometer.core.instrument.Tags; import io.micrometer.core.instrument.config.MeterFilter; import io.micrometer.core.instrument.distribution.DistributionStatisticConfig; -import io.micrometer.datadog.DatadogMeterRegistry; +import io.micrometer.statsd.StatsdMeterRegistry; import java.util.concurrent.TimeUnit; import org.whispersystems.textsecuregcm.WhisperServerConfiguration; -import org.whispersystems.textsecuregcm.WhisperServerVersion; import org.whispersystems.textsecuregcm.util.Constants; import org.whispersystems.textsecuregcm.util.HostnameUtil; @@ -45,17 +44,11 @@ public class MetricsUtil { SharedMetricRegistries.add(Constants.METRICS_NAME, environment.metrics()); { - final DatadogMeterRegistry datadogMeterRegistry = new DatadogMeterRegistry( + final StatsdMeterRegistry dogstatsdMeterRegistry = new StatsdMeterRegistry( config.getDatadogConfiguration(), io.micrometer.core.instrument.Clock.SYSTEM); - datadogMeterRegistry.config().commonTags( - Tags.of( - "service", "chat", - "host", HostnameUtil.getLocalHostname(), - "version", WhisperServerVersion.getServerVersion(), - "env", config.getDatadogConfiguration().getEnvironment())); - configureMeterFilters(datadogMeterRegistry.config()); - Metrics.addRegistry(datadogMeterRegistry); + configureMeterFilters(dogstatsdMeterRegistry.config()); + Metrics.addRegistry(dogstatsdMeterRegistry); } environment.lifecycle().manage(new MicrometerRegistryManager(Metrics.globalRegistry));