diff --git a/service/config/sample.yml b/service/config/sample.yml
index dc949644f..7fe9a03c5 100644
--- a/service/config/sample.yml
+++ b/service/config/sample.yml
@@ -91,3 +91,7 @@ apn: # Apple Push Notifications configuration
gcm: # GCM Configuration
senderId:
apiKey:
+
+micrometer: # Micrometer metrics config
+ uri: "https://metrics.example.com/"
+ apiToken:
diff --git a/service/pom.xml b/service/pom.xml
index cd3803948..695c10a27 100644
--- a/service/pom.xml
+++ b/service/pom.xml
@@ -74,6 +74,11 @@
${resilience4j.version}
+
+ io.micrometer
+ micrometer-registry-wavefront
+ 1.5.1
+
com.amazonaws
diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java
index c77316279..a627dc9b1 100644
--- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java
+++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java
@@ -58,6 +58,11 @@ public class WhisperServerConfiguration extends Configuration {
@JsonProperty
private CdnConfiguration cdn;
+ @NotNull
+ @Valid
+ @JsonProperty
+ private MicrometerConfiguration micrometer;
+
@NotNull
@Valid
@JsonProperty
@@ -272,6 +277,10 @@ public class WhisperServerConfiguration extends Configuration {
return cdn;
}
+ public MicrometerConfiguration getMicrometerConfiguration() {
+ return micrometer;
+ }
+
public UnidentifiedDeliveryConfiguration getDeliveryCertificate() {
return unidentifiedDelivery;
}
diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java
index 690129f67..7950721ff 100644
--- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java
+++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java
@@ -40,6 +40,9 @@ import io.dropwizard.db.PooledDataSourceFactory;
import io.dropwizard.jdbi3.JdbiFactory;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
+import io.micrometer.core.instrument.Clock;
+import io.micrometer.core.instrument.Metrics;
+import io.micrometer.wavefront.WavefrontMeterRegistry;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.eclipse.jetty.servlets.CrossOriginFilter;
import org.jdbi.v3.core.Jdbi;
@@ -194,6 +197,8 @@ public class WhisperServerService extends Application