From 913d96de2f13ce36d25d73b0e44c5bb9bc855c86 Mon Sep 17 00:00:00 2001 From: Jeff Theriault Date: Sat, 6 Jun 2015 15:03:14 -0600 Subject: [PATCH] Improved Graphite reporting --- actors/metrics/pom.xml | 3 +-- .../ea/orbit/actors/metrics/MetricsManager.java | 2 +- .../config/reporters/GangliaReporterConfig.java | 9 ++------- .../config/reporters/GraphiteReporterConfig.java | 16 ++++++++-------- .../metrics/config/reporters/ReporterConfig.java | 15 ++++++++++++++- .../config/reporters/Slf4jReporterConfig.java | 7 +------ .../src/main/java/com/ea/orbit/actors/Stage.java | 5 ++++- .../src/main/resources/conf/orbit.yaml | 6 +++++- .../chat-actors/src/main/resources/logback.xml | 2 +- 9 files changed, 37 insertions(+), 28 deletions(-) diff --git a/actors/metrics/pom.xml b/actors/metrics/pom.xml index 38ec5f342..3049eb256 100644 --- a/actors/metrics/pom.xml +++ b/actors/metrics/pom.xml @@ -44,7 +44,7 @@ 0.3.2-SNAPSHOT - 3.1.0 + 3.1.2 @@ -65,7 +65,6 @@ io.dropwizard.metrics metrics-graphite ${metrics.version} - true diff --git a/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/MetricsManager.java b/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/MetricsManager.java index 3bc758b56..4b416982b 100644 --- a/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/MetricsManager.java +++ b/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/MetricsManager.java @@ -61,7 +61,7 @@ public class MetricsManager public synchronized void initializeMetrics(String uniqueId) { - if (!isInitialized) + if (!isInitialized && reporterConfigs != null) { for (ReporterConfig reporterConfig : reporterConfigs) { diff --git a/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/config/reporters/GangliaReporterConfig.java b/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/config/reporters/GangliaReporterConfig.java index 280cb19bd..6cd550a9b 100644 --- a/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/config/reporters/GangliaReporterConfig.java +++ b/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/config/reporters/GangliaReporterConfig.java @@ -68,20 +68,15 @@ public void setPort(final int port) } @Override - public void enableReporter(MetricRegistry registry, String uniqueId) + public void enableReporter(MetricRegistry registry, String runtimeId) { - if (getPrefix() == null || getPrefix().isEmpty()) - { - setPrefix(uniqueId); - } - try { final GMetric ganglia = new GMetric(host, port, GMetric.UDPAddressingMode.MULTICAST,1); final GangliaReporter reporter = GangliaReporter.forRegistry(registry) .convertRatesTo(getRateTimeUnit()) .convertDurationsTo(getDurationTimeUnit()) - .prefixedWith(getPrefix()) + .prefixedWith(buildUniquePrefix(runtimeId)) .build(ganglia); reporter.start(getPeriod(), getPeriodTimeUnit()); diff --git a/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/config/reporters/GraphiteReporterConfig.java b/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/config/reporters/GraphiteReporterConfig.java index c35bdf85a..5a44b6c53 100644 --- a/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/config/reporters/GraphiteReporterConfig.java +++ b/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/config/reporters/GraphiteReporterConfig.java @@ -28,6 +28,9 @@ package com.ea.orbit.actors.metrics.config.reporters; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.graphite.Graphite; import com.codahale.metrics.graphite.GraphiteReporter; @@ -36,7 +39,7 @@ public class GraphiteReporterConfig extends ReporterConfig { - + private static final Logger logger = LoggerFactory.getLogger(GraphiteReporterConfig.class); private String host; private int port; @@ -61,18 +64,15 @@ public void setPort(final int port) } @Override - public void enableReporter(MetricRegistry registry, String uniqueId) + public void enableReporter(MetricRegistry registry, String runtimeId) { - if (getPrefix() == null || getPrefix().isEmpty()) - { - setPrefix(uniqueId); - } - + String uniquePrefix = buildUniquePrefix(runtimeId); + logger.info("Registering with Graphite under prefix: " + uniquePrefix); final Graphite graphite = new Graphite(new InetSocketAddress(host, port)); final GraphiteReporter reporter = GraphiteReporter.forRegistry(registry) .convertRatesTo(getRateTimeUnit()) .convertDurationsTo(getDurationTimeUnit()) - .prefixedWith(getPrefix()) + .prefixedWith(uniquePrefix) .build(graphite); reporter.start(getPeriod(), getPeriodTimeUnit()); diff --git a/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/config/reporters/ReporterConfig.java b/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/config/reporters/ReporterConfig.java index f42be47b1..49ec14734 100644 --- a/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/config/reporters/ReporterConfig.java +++ b/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/config/reporters/ReporterConfig.java @@ -108,5 +108,18 @@ protected TimeUnit getPeriodTimeUnit() return TimeUnit.valueOf(getRateUnit()); } - public void enableReporter(MetricRegistry registry, String uniqueId) {}; + public void enableReporter(MetricRegistry registry, String runtimeId) {}; + + protected String buildUniquePrefix(String runtimeId) + { + StringBuilder uniquePrefix = new StringBuilder(); + if (getPrefix() != null && !getPrefix().isEmpty()) + { + uniquePrefix.append(getPrefix()); + uniquePrefix.append("."); + } + uniquePrefix.append(runtimeId); + + return uniquePrefix.toString(); + } } diff --git a/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/config/reporters/Slf4jReporterConfig.java b/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/config/reporters/Slf4jReporterConfig.java index 920634e8f..ff5726c5a 100644 --- a/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/config/reporters/Slf4jReporterConfig.java +++ b/actors/metrics/src/main/java/com/ea/orbit/actors/metrics/config/reporters/Slf4jReporterConfig.java @@ -46,13 +46,8 @@ public void setLoggerName(final String loggerName) } @Override - public void enableReporter(MetricRegistry registry, String uniqueId) + public void enableReporter(MetricRegistry registry, String runtimeId) { - if (getPrefix() == null || getPrefix().isEmpty()) - { - setPrefix(uniqueId); - } - final Slf4jReporter reporter = Slf4jReporter.forRegistry(registry) .convertRatesTo(getRateTimeUnit()) .convertDurationsTo(getDurationTimeUnit()) diff --git a/actors/stage/src/main/java/com/ea/orbit/actors/Stage.java b/actors/stage/src/main/java/com/ea/orbit/actors/Stage.java index 3f514421f..304666771 100644 --- a/actors/stage/src/main/java/com/ea/orbit/actors/Stage.java +++ b/actors/stage/src/main/java/com/ea/orbit/actors/Stage.java @@ -248,7 +248,10 @@ public Task start() if (metricsManager != null) { - metricsManager.initializeMetrics(runtimeIdentity()); + String cleanRuntimeId = runtimeIdentity().replaceAll("[\\[\\]\\.\\\\/]", ""); //strip illegal characters + cleanRuntimeId = cleanRuntimeId.replace("Orbit",""); + cleanRuntimeId = getClusterName() + "." + getNodeName() + "." + cleanRuntimeId; + metricsManager.initializeMetrics(cleanRuntimeId); metricsManager.registerExportedMetrics(execution); } diff --git a/samples/chat/chat-actors/src/main/resources/conf/orbit.yaml b/samples/chat/chat-actors/src/main/resources/conf/orbit.yaml index bf4b31c80..9958de152 100644 --- a/samples/chat/chat-actors/src/main/resources/conf/orbit.yaml +++ b/samples/chat/chat-actors/src/main/resources/conf/orbit.yaml @@ -41,7 +41,11 @@ orbit.components: - com.ea.orbit.actors.server.ServerModule orbit.metrics.reporters: + - !!com.ea.orbit.actors.metrics.config.reporters.GraphiteReporterConfig + period: 1 + periodUnit: 'SECONDS' + host: graphite-int.fieldflux.ca + port: 2003 - !!com.ea.orbit.actors.metrics.config.reporters.Slf4jReporterConfig period: 1 periodUnit: 'SECONDS' - loggerName: metrics diff --git a/samples/chat/chat-actors/src/main/resources/logback.xml b/samples/chat/chat-actors/src/main/resources/logback.xml index a95f98642..f2874b444 100644 --- a/samples/chat/chat-actors/src/main/resources/logback.xml +++ b/samples/chat/chat-actors/src/main/resources/logback.xml @@ -6,7 +6,7 @@ - + \ No newline at end of file