Support DataDog Reporting.

This commit is contained in:
Moxie Marlinspike 2014-02-21 09:14:05 -08:00
parent 6aaca59020
commit 67e5794722
4 changed files with 45 additions and 0 deletions

View File

@ -114,6 +114,12 @@
<artifactId>jetty-websocket</artifactId>
<version>8.1.14.v20131031</version>
</dependency>
<dependency>
<groupId>org.coursera</groupId>
<artifactId>metrics-datadog</artifactId>
<version>0.1.5</version>
</dependency>
</dependencies>
<build>

View File

@ -20,6 +20,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.yammer.dropwizard.config.Configuration;
import com.yammer.dropwizard.db.DatabaseConfiguration;
import org.whispersystems.textsecuregcm.configuration.ApnConfiguration;
import org.whispersystems.textsecuregcm.configuration.DataDogConfiguration;
import org.whispersystems.textsecuregcm.configuration.FederationConfiguration;
import org.whispersystems.textsecuregcm.configuration.GcmConfiguration;
import org.whispersystems.textsecuregcm.configuration.GraphiteConfiguration;
@ -84,6 +85,10 @@ public class WhisperServerConfiguration extends Configuration {
@JsonProperty
private GraphiteConfiguration graphite = new GraphiteConfiguration();
@Valid
@JsonProperty
private DataDogConfiguration datadog = new DataDogConfiguration();
@Valid
@JsonProperty
private WebsocketConfiguration websocket = new WebsocketConfiguration();
@ -135,4 +140,8 @@ public class WhisperServerConfiguration extends Configuration {
public GraphiteConfiguration getGraphiteConfiguration() {
return graphite;
}
public DataDogConfiguration getDataDogConfiguration() {
return datadog;
}
}

View File

@ -24,6 +24,9 @@ import com.yammer.dropwizard.config.HttpConfiguration;
import com.yammer.dropwizard.db.DatabaseConfiguration;
import com.yammer.dropwizard.jdbi.DBIFactory;
import com.yammer.dropwizard.migrations.MigrationsBundle;
import com.yammer.metrics.core.Clock;
import com.yammer.metrics.core.MetricPredicate;
import com.yammer.metrics.reporting.DatadogReporter;
import com.yammer.metrics.reporting.GraphiteReporter;
import net.spy.memcached.MemcachedClient;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
@ -164,6 +167,13 @@ public class WhisperServerService extends Service<WhisperServerConfiguration> {
config.getGraphiteConfiguration().getHost(),
config.getGraphiteConfiguration().getPort());
}
if (config.getDataDogConfiguration().isEnabled()) {
new DatadogReporter.Builder().withApiKey(config.getDataDogConfiguration().getApiKey())
.withVmMetricsEnabled(true)
.build()
.start(15, TimeUnit.SECONDS);
}
}
private Optional<NexmoSmsSender> initializeNexmoSmsSender(NexmoConfiguration configuration) {

View File

@ -0,0 +1,20 @@
package org.whispersystems.textsecuregcm.configuration;
import com.fasterxml.jackson.annotation.JsonProperty;
public class DataDogConfiguration {
@JsonProperty
private String apiKey;
@JsonProperty
private boolean enabled = false;
public String getApiKey() {
return apiKey;
}
public boolean isEnabled() {
return enabled && apiKey != null;
}
}