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