diff --git a/service/config/sample.yml b/service/config/sample.yml index d87c79c4e..31509a126 100644 --- a/service/config/sample.yml +++ b/service/config/sample.yml @@ -224,6 +224,9 @@ cdn: bucket: cdn # S3 Bucket name region: us-west-2 # AWS region +dogstatsd: + environment: dev + unidentifiedDelivery: certificate: secret://unidentifiedDelivery.certificate privateKey: secret://unidentifiedDelivery.privateKey diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DogstatsdConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DogstatsdConfiguration.java index 9103c2a32..b2d8e0d92 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DogstatsdConfiguration.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DogstatsdConfiguration.java @@ -9,6 +9,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import io.micrometer.statsd.StatsdConfig; import io.micrometer.statsd.StatsdFlavor; import java.time.Duration; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; public class DogstatsdConfiguration implements StatsdConfig { @@ -17,11 +18,19 @@ public class DogstatsdConfiguration implements StatsdConfig { @NotNull private Duration step = Duration.ofSeconds(10); + @JsonProperty + @NotBlank + private String environment; + @Override public Duration step() { return step; } + public String getEnvironment() { + return environment; + } + @Override public StatsdFlavor flavor() { return StatsdFlavor.DATADOG; 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 cb28acf13..194d8c1a4 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsUtil.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsUtil.java @@ -11,13 +11,16 @@ import io.dropwizard.setup.Environment; import io.micrometer.core.instrument.Meter; import io.micrometer.core.instrument.MeterRegistry; 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.statsd.StatsdMeterRegistry; import java.util.concurrent.TimeUnit; import org.whispersystems.textsecuregcm.WhisperServerConfiguration; +import org.whispersystems.textsecuregcm.WhisperServerVersion; import org.whispersystems.textsecuregcm.push.PushLatencyManager; import org.whispersystems.textsecuregcm.util.Constants; +import org.whispersystems.textsecuregcm.util.HostnameUtil; public class MetricsUtil { @@ -46,6 +49,13 @@ public class MetricsUtil { final StatsdMeterRegistry dogstatsdMeterRegistry = new StatsdMeterRegistry( config.getDatadogConfiguration(), io.micrometer.core.instrument.Clock.SYSTEM); + dogstatsdMeterRegistry.config().commonTags( + Tags.of( + "service", "chat", + "host", HostnameUtil.getLocalHostname(), + "version", WhisperServerVersion.getServerVersion(), + "env", config.getDatadogConfiguration().getEnvironment())); + configureMeterFilters(dogstatsdMeterRegistry.config()); Metrics.addRegistry(dogstatsdMeterRegistry); }