This repository was archived by the owner on Jan 9, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 19
Spring Config Example with Proxy
John Watson edited this page Jan 22, 2020
·
3 revisions
import com.newrelic.telemetry.Attributes;
import io.micrometer.NewRelicRegistryConfig;
import io.micrometer.core.instrument.config.MeterFilter;
import io.micrometer.core.instrument.util.NamedThreadFactory;
import io.micrometer.core.ipc.http.HttpSender;
import io.micrometer.core.ipc.http.HttpUrlConnectionSender;
import io.micrometer.newrelic.NewRelicRegistry;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.Proxy.Type;
import java.net.UnknownHostException;
import java.time.Duration;
import org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@AutoConfigureBefore({
CompositeMeterRegistryAutoConfiguration.class,
SimpleMetricsExportAutoConfiguration.class
})
@AutoConfigureAfter(MetricsAutoConfiguration.class)
@ConditionalOnClass(NewRelicRegistry.class)
public class NewRelicMetricsExportAutoConfiguration {
@Bean
public NewRelicRegistryConfig newRelicConfig() {
return new NewRelicRegistryConfig() {
@Override
public String get(String key) {
return null;
}
@Override
public String apiKey() {
return System.getenv("INSIGHTS_INSERT_KEY");
}
@Override
public String uri() {
return System.getenv("METRIC_INGEST_URI");
}
@Override
public Duration step() {
return Duration.ofSeconds(5);
}
@Override
public String serviceName() {
return "SpringBootMetricsSample";
}
};
}
@Bean
public Proxy proxy() {
return new Proxy(Type.HTTP, new InetSocketAddress("myproxyhost", 5555));
}
@Bean
public NewRelicRegistry newRelicMeterRegistryWithProxy(NewRelicRegistryConfig config, Proxy proxy)
throws UnknownHostException {
HttpSender httpSender =
new HttpUrlConnectionSender(Duration.ofSeconds(1), Duration.ofSeconds(1), proxy);
NewRelicRegistry newRelicRegistry =
NewRelicRegistry.builder(config)
.httpSender(httpSender)
.commonAttributes(
new Attributes()
.put("host", InetAddress.getLocalHost().getHostName()))
.build();
newRelicRegistry.config().meterFilter(MeterFilter.ignoreTags("plz_ignore_me"));
newRelicRegistry.config().meterFilter(MeterFilter.denyNameStartsWith("jvm.threads"));
newRelicRegistry.start(new NamedThreadFactory("newrelic.micrometer.registry"));
return newRelicRegistry;
}
}