Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions suripu-research/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@
<version>1.2.2</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.yammer.metrics</groupId>
<artifactId>metrics-graphite</artifactId>
<version>2.2.0</version>
</dependency>
</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.kinesis.AmazonKinesisAsyncClient;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableMap;
import com.hello.suripu.core.ObjectGraphRoot;
import com.hello.suripu.core.bundles.KinesisLoggerBundle;
import com.hello.suripu.core.clients.AmazonDynamoDBClientFactory;
import com.hello.suripu.core.configuration.DynamoDBTableName;
import com.hello.suripu.core.configuration.KinesisLoggerConfiguration;
import com.hello.suripu.core.configuration.QueueName;
import com.hello.suripu.core.db.AccessTokenDAO;
Expand All @@ -18,13 +20,14 @@
import com.hello.suripu.core.db.DeviceDAO;
import com.hello.suripu.core.db.DeviceDataDAO;
import com.hello.suripu.core.db.FeatureStore;
import com.hello.suripu.core.db.UserLabelDAO;
import com.hello.suripu.core.db.TrackerMotionDAO;
import com.hello.suripu.core.db.UserLabelDAO;
import com.hello.suripu.core.db.util.JodaArgumentFactory;
import com.hello.suripu.core.db.util.PostgresIntegerArrayArgumentFactory;
import com.hello.suripu.core.filters.CacheFilterFactory;
import com.hello.suripu.core.logging.DataLogger;
import com.hello.suripu.core.logging.KinesisLoggerFactory;
import com.hello.suripu.core.metrics.RegexMetricPredicate;
import com.hello.suripu.core.oauth.OAuthAuthenticator;
import com.hello.suripu.core.oauth.OAuthProvider;
import com.hello.suripu.core.oauth.stores.PersistentAccessTokenStore;
Expand All @@ -43,11 +46,15 @@
import com.yammer.dropwizard.jdbi.ImmutableSetContainerFactory;
import com.yammer.dropwizard.jdbi.OptionalContainerFactory;
import com.yammer.dropwizard.jdbi.bundles.DBIExceptionsBundle;
import com.yammer.metrics.Metrics;
import com.yammer.metrics.reporting.GraphiteReporter;
import org.skife.jdbi.v2.DBI;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;
import java.util.TimeZone;
import java.util.concurrent.TimeUnit;

/**
* Created by pangwu on 3/2/15.
Expand Down Expand Up @@ -104,6 +111,27 @@ public void run(final SuripuResearchConfiguration configuration, final Environme
clientConfiguration.withConnectionTimeout(200); // in ms
clientConfiguration.withMaxErrorRetry(1);

if(configuration.getMetricsEnabled()) {
final String graphiteHostName = configuration.getGraphite().getHost();
final String apiKey = configuration.getGraphite().getApiKey();
final Integer interval = configuration.getGraphite().getReportingIntervalInSeconds();

final String env = (configuration.getDebug()) ? "dev" : "prod";

final String prefix = String.format("%s.%s.%s", apiKey, env, "suripu-research");

final List<String> metrics = configuration.getGraphite().getIncludeMetrics();
final RegexMetricPredicate predicate = new RegexMetricPredicate(metrics);
final Joiner joiner = Joiner.on(", ");
LOGGER.info("Logging the following metrics: {}", joiner.join(metrics));

GraphiteReporter.enable(Metrics.defaultRegistry(), interval, TimeUnit.SECONDS, graphiteHostName, 2003, prefix, predicate);

LOGGER.info("Metrics enabled.");
} else {
LOGGER.warn("Metrics not enabled.");
}

final AWSCredentialsProvider awsCredentialsProvider = new DefaultAWSCredentialsProviderChain();
final AmazonKinesisAsyncClient kinesisClient = new AmazonKinesisAsyncClient(awsCredentialsProvider, clientConfiguration);

Expand All @@ -112,7 +140,7 @@ public void run(final SuripuResearchConfiguration configuration, final Environme
final DataLogger activityLogger = kinesisLoggerFactory.get(QueueName.ACTIVITY_STREAM);

final AmazonDynamoDBClientFactory featureStoreDynamoDBClientFactory = AmazonDynamoDBClientFactory.create(awsCredentialsProvider);
final AmazonDynamoDB featureDynamoDB = featureStoreDynamoDBClientFactory.getForEndpoint(configuration.getFeaturesDynamoDBConfiguration().getEndpoint());
final AmazonDynamoDB featureDynamoDB = featureStoreDynamoDBClientFactory.getInstrumented(DynamoDBTableName.FEATURES, FeatureStore.class);
final String featureNamespace = (configuration.getDebug()) ? "dev" : "prod";
final FeatureStore featureStore = new FeatureStore(featureDynamoDB, "features", featureNamespace);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.fasterxml.jackson.annotation.JsonProperty;
import com.hello.suripu.core.configuration.DynamoDBConfiguration;
import com.hello.suripu.core.configuration.GraphiteConfiguration;
import com.hello.suripu.core.configuration.KinesisConfiguration;
import com.hello.suripu.core.configuration.KinesisLoggerConfiguration;
import com.yammer.dropwizard.config.Configuration;
Expand Down Expand Up @@ -50,6 +51,25 @@ public Boolean getDebug() {
return debug;
}

@Valid
@NotNull
@JsonProperty("metrics_enabled")
private Boolean metricsEnabled;

public Boolean getMetricsEnabled() {
return metricsEnabled;
}


@Valid
@NotNull
@JsonProperty("graphite")
private GraphiteConfiguration graphite;

public GraphiteConfiguration getGraphite() {
return graphite;
}

@Valid
@NotNull
@JsonProperty("kinesis")
Expand Down
9 changes: 9 additions & 0 deletions suripu-research/suripu-research.dev.yml.example
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
metrics_enabled: false
debug: true
graphite:
host: carbon.hostedgraphite.com
api_key: 7509c0ff-4db5-4cae-91ee-6e78ff13b336
reporting_interval_in_seconds: 30
include_metrics:
- org.skife
- xx-responses
- com.hello

sensors_db:
# the name of your JDBC driver
Expand Down
9 changes: 9 additions & 0 deletions suripu-research/suripu-research.prod.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
metrics_enabled: true
debug: false
graphite:
host: carbon.hostedgraphite.com
api_key: 7509c0ff-4db5-4cae-91ee-6e78ff13b336
reporting_interval_in_seconds: 30
include_metrics:
- org.skife
- xx-responses
- com.hello

sensors_db:
driverClass: org.postgresql.Driver
Expand Down
9 changes: 9 additions & 0 deletions suripu-research/suripu-research.staging.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
metrics_enabled: false
debug: false
graphite:
host: carbon.hostedgraphite.com
api_key: 7509c0ff-4db5-4cae-91ee-6e78ff13b336
reporting_interval_in_seconds: 30
include_metrics:
- org.skife
- xx-responses
- com.hello

sensors_db:
driverClass: org.postgresql.Driver
Expand Down