Add the host tag to datadog metric reporting
This commit is contained in:
parent
b93c5a9daa
commit
dee040318a
|
@ -22,6 +22,7 @@ import com.amazonaws.auth.AWSStaticCredentialsProvider;
|
||||||
import com.amazonaws.auth.BasicAWSCredentials;
|
import com.amazonaws.auth.BasicAWSCredentials;
|
||||||
import com.amazonaws.services.s3.AmazonS3;
|
import com.amazonaws.services.s3.AmazonS3;
|
||||||
import com.amazonaws.services.s3.AmazonS3Client;
|
import com.amazonaws.services.s3.AmazonS3Client;
|
||||||
|
import com.amazonaws.util.EC2MetadataUtils;
|
||||||
import com.codahale.metrics.SharedMetricRegistries;
|
import com.codahale.metrics.SharedMetricRegistries;
|
||||||
import com.codahale.metrics.jdbi3.strategies.DefaultNameStrategy;
|
import com.codahale.metrics.jdbi3.strategies.DefaultNameStrategy;
|
||||||
import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
||||||
|
@ -252,6 +253,7 @@ public class WhisperServerService extends Application<WhisperServerConfiguration
|
||||||
{
|
{
|
||||||
final MicrometerConfiguration micrometerDatadogConfig = micrometerConfigurationByName.get("datadog");
|
final MicrometerConfiguration micrometerDatadogConfig = micrometerConfigurationByName.get("datadog");
|
||||||
|
|
||||||
|
final String instanceId = EC2MetadataUtils.getInstanceId();
|
||||||
Metrics.addRegistry(new DatadogMeterRegistry(new DatadogConfig() {
|
Metrics.addRegistry(new DatadogMeterRegistry(new DatadogConfig() {
|
||||||
@Override
|
@Override
|
||||||
public String get(final String key) {
|
public String get(final String key) {
|
||||||
|
@ -262,6 +264,11 @@ public class WhisperServerService extends Application<WhisperServerConfiguration
|
||||||
public String apiKey() {
|
public String apiKey() {
|
||||||
return micrometerDatadogConfig.getApiKey();
|
return micrometerDatadogConfig.getApiKey();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String hostTag() {
|
||||||
|
return instanceId;
|
||||||
|
}
|
||||||
}, Clock.SYSTEM));
|
}, Clock.SYSTEM));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
package org.whispersystems.textsecuregcm.metrics;
|
||||||
|
|
||||||
|
import com.amazonaws.util.EC2MetadataUtils;
|
||||||
|
import com.codahale.metrics.MetricRegistry;
|
||||||
|
import com.codahale.metrics.ScheduledReporter;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||||
|
import io.dropwizard.metrics.BaseReporterFactory;
|
||||||
|
import org.coursera.metrics.datadog.DatadogReporter;
|
||||||
|
import org.coursera.metrics.datadog.DefaultMetricNameFormatterFactory;
|
||||||
|
import org.coursera.metrics.datadog.DynamicTagsCallbackFactory;
|
||||||
|
import org.coursera.metrics.datadog.MetricNameFormatterFactory;
|
||||||
|
import org.coursera.metrics.datadog.transport.AbstractTransportFactory;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import java.util.EnumSet;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@SuppressWarnings("FieldMayBeFinal")
|
||||||
|
@JsonTypeName("signaldatadog")
|
||||||
|
public class SignalDatadogReporterFactory extends BaseReporterFactory {
|
||||||
|
|
||||||
|
@JsonProperty
|
||||||
|
private List<String> tags = null;
|
||||||
|
|
||||||
|
@Valid
|
||||||
|
@JsonProperty
|
||||||
|
private DynamicTagsCallbackFactory dynamicTagsCallback = null;
|
||||||
|
|
||||||
|
@JsonProperty
|
||||||
|
private String prefix = null;
|
||||||
|
|
||||||
|
@Valid
|
||||||
|
@NotNull
|
||||||
|
@JsonProperty
|
||||||
|
private EnumSet<DatadogReporter.Expansion> expansions = DatadogReporter.Expansion.ALL;
|
||||||
|
|
||||||
|
@Valid
|
||||||
|
@NotNull
|
||||||
|
@JsonProperty
|
||||||
|
private MetricNameFormatterFactory metricNameFormatter = new DefaultMetricNameFormatterFactory();
|
||||||
|
|
||||||
|
@Valid
|
||||||
|
@NotNull
|
||||||
|
@JsonProperty
|
||||||
|
private AbstractTransportFactory transport = null;
|
||||||
|
|
||||||
|
public ScheduledReporter build(MetricRegistry registry) {
|
||||||
|
return DatadogReporter.forRegistry(registry)
|
||||||
|
.withTransport(transport.build())
|
||||||
|
.withHost(EC2MetadataUtils.getInstanceId())
|
||||||
|
.withTags(tags)
|
||||||
|
.withPrefix(prefix)
|
||||||
|
.withExpansions(expansions)
|
||||||
|
.withMetricNameFormatter(metricNameFormatter.build())
|
||||||
|
.withDynamicTagCallback(dynamicTagsCallback != null ? dynamicTagsCallback.build() : null)
|
||||||
|
.filter(getFilter())
|
||||||
|
.convertDurationsTo(getDurationUnit())
|
||||||
|
.convertRatesTo(getRateUnit())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1 +1,2 @@
|
||||||
org.whispersystems.textsecuregcm.metrics.JsonMetricsReporterFactory
|
org.whispersystems.textsecuregcm.metrics.JsonMetricsReporterFactory
|
||||||
|
org.whispersystems.textsecuregcm.metrics.SignalDatadogReporterFactory
|
||||||
|
|
Loading…
Reference in New Issue