From f58d1d2f6fe86b3f99da83a8fbca2d2c205f6617 Mon Sep 17 00:00:00 2001 From: wenshao Date: Wed, 14 Aug 2013 10:22:54 +0800 Subject: [PATCH] improve monitor support --- pom.xml | 19 +++ .../druid/support/monitor/MonitorContext.java | 26 +++++ .../druid/support/monitor/MonitorService.java | 110 ++++++++++++++++++ .../druid/support/monitor/dao/MonitorDao.java | 17 +++ .../monitor/dao/MonitorDaoJdbcImpl.java | 27 +++++ 5 files changed, 199 insertions(+) create mode 100644 src/main/java/com/alibaba/druid/support/monitor/MonitorContext.java create mode 100644 src/main/java/com/alibaba/druid/support/monitor/MonitorService.java create mode 100644 src/main/java/com/alibaba/druid/support/monitor/dao/MonitorDao.java create mode 100644 src/main/java/com/alibaba/druid/support/monitor/dao/MonitorDaoJdbcImpl.java diff --git a/pom.xml b/pom.xml index 205f526653..21ba1ea794 100644 --- a/pom.xml +++ b/pom.xml @@ -526,5 +526,24 @@ 2.0.2 test + + + org.javasimon + javasimon-spring + 3.3.0 + test + + + org.javasimon + javasimon-jdbc4 + 3.3.0 + test + + + org.javasimon + javasimon-javaee + 3.3.0 + test + diff --git a/src/main/java/com/alibaba/druid/support/monitor/MonitorContext.java b/src/main/java/com/alibaba/druid/support/monitor/MonitorContext.java new file mode 100644 index 0000000000..ec9e1b9842 --- /dev/null +++ b/src/main/java/com/alibaba/druid/support/monitor/MonitorContext.java @@ -0,0 +1,26 @@ +package com.alibaba.druid.support.monitor; + +import java.util.Date; + +public class MonitorContext { + + private String appName; + private Date collectTime; + + public String getAppName() { + return appName; + } + + public void setAppName(String appName) { + this.appName = appName; + } + + public Date getCollectTime() { + return collectTime; + } + + public void setCollectTime(Date collectTime) { + this.collectTime = collectTime; + } + +} diff --git a/src/main/java/com/alibaba/druid/support/monitor/MonitorService.java b/src/main/java/com/alibaba/druid/support/monitor/MonitorService.java new file mode 100644 index 0000000000..b97685a463 --- /dev/null +++ b/src/main/java/com/alibaba/druid/support/monitor/MonitorService.java @@ -0,0 +1,110 @@ +package com.alibaba.druid.support.monitor; + +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +import com.alibaba.druid.support.monitor.dao.MonitorDao; + +public class MonitorService { + + private final static long DEFAULT_TIME_BETWEEN_COLLECT = 60 * 5; + + private ScheduledExecutorService scheduler; + private int schedulerThreadSize = 1; + + private long timeBeetweenSqlCollect = DEFAULT_TIME_BETWEEN_COLLECT; + private long timeBeetweenSpringCollect = DEFAULT_TIME_BETWEEN_COLLECT; + private long timeBeetweenWebUriCollect = DEFAULT_TIME_BETWEEN_COLLECT; + private TimeUnit timeUnit = TimeUnit.SECONDS; + + private MonitorDao dao; + + public void start() { + if (scheduler == null) { + scheduler = new ScheduledThreadPoolExecutor(schedulerThreadSize); + } + + scheduler.scheduleAtFixedRate(new Runnable() { + @Override + public void run() { + collectSql(); + } + }, timeBeetweenSqlCollect, timeBeetweenSqlCollect, timeUnit); + + scheduler.scheduleAtFixedRate(new Runnable() { + @Override + public void run() { + collectSpringMethod(); + } + }, timeBeetweenSpringCollect, timeBeetweenSpringCollect, timeUnit); + + scheduler.scheduleAtFixedRate(new Runnable() { + @Override + public void run() { + collectWebURI(); + } + }, timeBeetweenWebUriCollect, timeBeetweenWebUriCollect, timeUnit); + } + + public ScheduledExecutorService getScheduler() { + return scheduler; + } + + public void setScheduler(ScheduledExecutorService scheduler) { + this.scheduler = scheduler; + } + + private void collectSql() { + + } + + private void collectSpringMethod() { + + } + + private void collectWebURI() { + + } + + public MonitorDao getDao() { + return dao; + } + + public void setDao(MonitorDao dao) { + this.dao = dao; + } + + public long getTimeBeetweenSqlCollect() { + return timeBeetweenSqlCollect; + } + + public void setTimeBeetweenSqlCollect(long timeBeetweenSqlCollect) { + this.timeBeetweenSqlCollect = timeBeetweenSqlCollect; + } + + public long getTimeBeetweenSpringCollect() { + return timeBeetweenSpringCollect; + } + + public void setTimeBeetweenSpringCollect(long timeBeetweenSpringCollect) { + this.timeBeetweenSpringCollect = timeBeetweenSpringCollect; + } + + public long getTimeBeetweenWebUriCollect() { + return timeBeetweenWebUriCollect; + } + + public void setTimeBeetweenWebUriCollect(long timeBeetweenWebUriCollect) { + this.timeBeetweenWebUriCollect = timeBeetweenWebUriCollect; + } + + public TimeUnit getTimeUnit() { + return timeUnit; + } + + public void setTimeUnit(TimeUnit timeUnit) { + this.timeUnit = timeUnit; + } + +} diff --git a/src/main/java/com/alibaba/druid/support/monitor/dao/MonitorDao.java b/src/main/java/com/alibaba/druid/support/monitor/dao/MonitorDao.java new file mode 100644 index 0000000000..b50751e9b9 --- /dev/null +++ b/src/main/java/com/alibaba/druid/support/monitor/dao/MonitorDao.java @@ -0,0 +1,17 @@ +package com.alibaba.druid.support.monitor.dao; + +import java.util.List; + +import com.alibaba.druid.stat.JdbcSqlStatValue; +import com.alibaba.druid.support.http.stat.WebURIStatValue; +import com.alibaba.druid.support.monitor.MonitorContext; +import com.alibaba.druid.support.spring.stat.SpringMethodStatValue; + +public interface MonitorDao { + + void saveSql(MonitorContext ctx, List sqlList); + + void saveSpringMethod(MonitorContext ctx, List methodList); + + void saveWebURI(MonitorContext ctx, List uriList); +} diff --git a/src/main/java/com/alibaba/druid/support/monitor/dao/MonitorDaoJdbcImpl.java b/src/main/java/com/alibaba/druid/support/monitor/dao/MonitorDaoJdbcImpl.java new file mode 100644 index 0000000000..1a1683eed2 --- /dev/null +++ b/src/main/java/com/alibaba/druid/support/monitor/dao/MonitorDaoJdbcImpl.java @@ -0,0 +1,27 @@ +package com.alibaba.druid.support.monitor.dao; + +import java.util.List; + +import com.alibaba.druid.stat.JdbcSqlStatValue; +import com.alibaba.druid.support.http.stat.WebURIStatValue; +import com.alibaba.druid.support.monitor.MonitorContext; +import com.alibaba.druid.support.spring.stat.SpringMethodStatValue; + +public class MonitorDaoJdbcImpl implements MonitorDao { + + @Override + public void saveSql(MonitorContext ctx, List sqlList) { + + } + + @Override + public void saveSpringMethod(MonitorContext ctx, List methodList) { + + } + + @Override + public void saveWebURI(MonitorContext ctx, List uriList) { + + } + +}