diff --git a/examples/showcase/pom.xml b/examples/showcase/pom.xml
index 211c2f63..705f5391 100644
--- a/examples/showcase/pom.xml
+++ b/examples/showcase/pom.xml
@@ -31,6 +31,10 @@
org.springside
springside-extension
+
+ org.springside
+ springside-metrics
+
@@ -209,16 +213,6 @@
-
-
- com.codahale.metrics
- metrics-core
-
-
- com.codahale.metrics
- metrics-graphite
-
-
org.javasimon
diff --git a/examples/showcase/src/main/java/org/springside/examples/showcase/demos/metrics/MetricsManager.java b/examples/showcase/src/main/java/org/springside/examples/showcase/demos/metrics/MetricsManager.java
new file mode 100644
index 00000000..dc73249a
--- /dev/null
+++ b/examples/showcase/src/main/java/org/springside/examples/showcase/demos/metrics/MetricsManager.java
@@ -0,0 +1,29 @@
+package org.springside.examples.showcase.demos.metrics;
+
+import java.net.InetSocketAddress;
+import java.util.concurrent.TimeUnit;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+
+import org.springside.modules.metrics.MetricRegistry;
+import org.springside.modules.metrics.report.ConsoleReporter;
+import org.springside.modules.metrics.report.GraphiteReporter;
+import org.springside.modules.metrics.report.ReportScheduler;
+
+public class MetricsManager {
+
+ private ReportScheduler scheduler;
+
+ @PostConstruct
+ public void start() {
+ GraphiteReporter graphiteReporter = new GraphiteReporter(new InetSocketAddress("localhost", 2003));
+ scheduler = new ReportScheduler(MetricRegistry.INSTANCE, new ConsoleReporter(), graphiteReporter);
+ scheduler.start(10, TimeUnit.SECONDS);
+ }
+
+ @PreDestroy
+ public void stop() {
+ scheduler.stop();
+ }
+}
diff --git a/examples/showcase/src/main/java/org/springside/examples/showcase/demos/metrics/MetricsReporterManager.java b/examples/showcase/src/main/java/org/springside/examples/showcase/demos/metrics/MetricsReporterManager.java
deleted file mode 100644
index daa0efcf..00000000
--- a/examples/showcase/src/main/java/org/springside/examples/showcase/demos/metrics/MetricsReporterManager.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.springside.examples.showcase.demos.metrics;
-
-import java.net.InetSocketAddress;
-import java.util.concurrent.TimeUnit;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import com.codahale.metrics.JmxReporter;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.graphite.Graphite;
-import com.codahale.metrics.graphite.GraphiteReporter;
-
-public class MetricsReporterManager {
-
- private static Logger logger = LoggerFactory.getLogger(MetricsReporterManager.class);
-
- @Autowired
- private MetricRegistry metricRegistry;
-
- private GraphiteReporter graphiteReporter;
- private JmxReporter jmxReporter;
-
- @PostConstruct
- public void start() {
- Graphite graphite = new Graphite(new InetSocketAddress("localhost", 2003));
- graphiteReporter = GraphiteReporter.forRegistry(metricRegistry).prefixedWith("metrics").build(graphite);
- graphiteReporter.start(30, TimeUnit.SECONDS);
-
- jmxReporter = JmxReporter.forRegistry(metricRegistry).build();
- jmxReporter.start();
-
- logger.info("Started Metrics Reporter");
- }
-
- @PreDestroy
- public void stop() {
- graphiteReporter.stop();
- jmxReporter.stop();
-
- logger.info("Stopped Metrics Reporter");
- }
-}
diff --git a/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/rest/UserRestController.java b/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/rest/UserRestController.java
index 5e13ae91..844e81f6 100644
--- a/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/rest/UserRestController.java
+++ b/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/rest/UserRestController.java
@@ -14,9 +14,9 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.springside.examples.showcase.entity.User;
import org.springside.examples.showcase.service.AccountEffectiveService;
import org.springside.modules.mapper.BeanMapper;
-
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.Timer;
+import org.springside.modules.metrics.Execution;
+import org.springside.modules.metrics.Execution.ExecutionTimer;
+import org.springside.modules.metrics.MetricRegistry;
/**
* Shiro的配置文件中对/api/secure/**进行拦截,要求authBasic认证.
@@ -31,14 +31,11 @@ public class UserRestController {
@Autowired
private AccountEffectiveService accountService;
- @Autowired
- private MetricRegistry metricRegistry;
-
- private Timer metrics;
+ private Execution executionMetrics;
@PostConstruct
public void register() {
- metrics = metricRegistry.timer("Rest_GetUser");
+ executionMetrics = MetricRegistry.INSTANCE.execution("Rest_GetUser");
}
/**
@@ -50,7 +47,7 @@ public class UserRestController {
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ResponseBody
public UserDTO getUser(@PathVariable("id") Long id) {
- final Timer.Context metricsContext = metrics.time();
+ final ExecutionTimer exectuionTimer = executionMetrics.start();
try {
User user = accountService.getUser(id);
@@ -65,7 +62,7 @@ public class UserRestController {
dto.setTeamId(user.getTeam().getId());
return dto;
} finally {
- metricsContext.stop();
+ exectuionTimer.stop();
}
}
}
diff --git a/examples/showcase/src/main/resources/monitor/applicationContext-metrics.xml b/examples/showcase/src/main/resources/monitor/applicationContext-metrics.xml
index c01e5c9c..527db073 100644
--- a/examples/showcase/src/main/resources/monitor/applicationContext-metrics.xml
+++ b/examples/showcase/src/main/resources/monitor/applicationContext-metrics.xml
@@ -3,10 +3,6 @@
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
- Yammer Coda Hale's Metrics监控配置
-
-
-
-
-
+ Metrics监控配置
+
\ No newline at end of file
diff --git a/modules/metrics/install.bat b/modules/metrics/install.bat
new file mode 100644
index 00000000..d726fa0a
--- /dev/null
+++ b/modules/metrics/install.bat
@@ -0,0 +1,6 @@
+@echo off
+echo [INFO] Install jar to local repository.
+
+cd %~dp0
+call mvn clean install -Dmaven.test.skip=true
+pause
\ No newline at end of file
diff --git a/modules/metrics/src/main/java/org/springside/modules/metrics/report/GraphiteReporter.java b/modules/metrics/src/main/java/org/springside/modules/metrics/report/GraphiteReporter.java
index 05a53977..42582771 100644
--- a/modules/metrics/src/main/java/org/springside/modules/metrics/report/GraphiteReporter.java
+++ b/modules/metrics/src/main/java/org/springside/modules/metrics/report/GraphiteReporter.java
@@ -79,6 +79,8 @@ public class GraphiteReporter implements Reporter {
private void reportCounter(String name, CounterMetric counter, long timestamp) throws IOException {
send(MetricRegistry.name(prefix, name, "count"), format(counter.count), timestamp);
+ send(MetricRegistry.name(prefix, name, "lastRate"), format(counter.lastRate), timestamp);
+ send(MetricRegistry.name(prefix, name, "meanRate"), format(counter.meanRate), timestamp);
}
private void reportHistogram(String name, HistogramMetric histogram, long timestamp) throws IOException {
@@ -93,6 +95,8 @@ public class GraphiteReporter implements Reporter {
private void reportExecution(String name, ExecutionMetric execution, long timestamp) throws IOException {
send(MetricRegistry.name(prefix, name, "count"), format(execution.counter.count), timestamp);
+ send(MetricRegistry.name(prefix, name, "lastRate"), format(execution.counter.lastRate), timestamp);
+ send(MetricRegistry.name(prefix, name, "meanRate"), format(execution.counter.meanRate), timestamp);
send(MetricRegistry.name(prefix, name, "min"), format(execution.histogram.min), timestamp);
send(MetricRegistry.name(prefix, name, "max"), format(execution.histogram.max), timestamp);
diff --git a/modules/metrics/src/main/java/org/springside/modules/metrics/report/ReportScheduler.java b/modules/metrics/src/main/java/org/springside/modules/metrics/report/ReportScheduler.java
index aee64361..cd5c42a8 100644
--- a/modules/metrics/src/main/java/org/springside/modules/metrics/report/ReportScheduler.java
+++ b/modules/metrics/src/main/java/org/springside/modules/metrics/report/ReportScheduler.java
@@ -75,16 +75,16 @@ public class ReportScheduler {
}
}
}, period, period, unit);
- logger.info("metric reporter started.");
+ logger.info("metric reporters started.");
}
public void stop() {
executor.shutdownNow();
try {
if (executor.awaitTermination(1, TimeUnit.SECONDS)) {
- logger.info("metric reporter stopped.");
+ logger.info("metric reporters stopped.");
} else {
- logger.info("metric reporter can stopped in 1 seconds, force stopped");
+ logger.info("metric reporters can't stopped in 1 seconds, force stopped");
}
} catch (InterruptedException ignored) {
// do nothing
diff --git a/modules/parent/pom.xml b/modules/parent/pom.xml
index 0c8a119f..c6d5217c 100644
--- a/modules/parent/pom.xml
+++ b/modules/parent/pom.xml
@@ -27,7 +27,6 @@
4.3.1.Final
1.1.5
1.3.8
- 3.0.1
3.4.0
2.3.0
1.7.5
@@ -93,6 +92,11 @@
springside-extension
${springside.version}
+
+ org.springside
+ springside-metrics
+ ${springside.version}
+
@@ -415,18 +419,6 @@
-
-
- com.codahale.metrics
- metrics-core
- ${metrics.version}
-
-
- com.codahale.metrics
- metrics-graphite
- ${metrics.version}
-
-
org.javasimon