diff --git a/client-adapter/launcher/src/main/java/com/alibaba/otter/canal/adapter/launcher/config/DruidConfig.java b/client-adapter/launcher/src/main/java/com/alibaba/otter/canal/adapter/launcher/config/DruidConfig.java new file mode 100644 index 00000000..748844e8 --- /dev/null +++ b/client-adapter/launcher/src/main/java/com/alibaba/otter/canal/adapter/launcher/config/DruidConfig.java @@ -0,0 +1,23 @@ +package com.alibaba.otter.canal.adapter.launcher.config; + +import java.util.HashMap; +import java.util.Map; + +import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.alibaba.druid.support.http.StatViewServlet; + +@Configuration +public class DruidConfig { + + @Bean + public ServletRegistrationBean statViewServlet(){ + ServletRegistrationBean bean = new ServletRegistrationBean<>( new StatViewServlet(),"/druid/*"); + Map initParams = new HashMap<>(); + initParams.put("allow",""); + bean.setInitParameters(initParams); + return bean; + } +} diff --git a/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/RdbAdapter.java b/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/RdbAdapter.java index 38a23302..be77ab49 100644 --- a/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/RdbAdapter.java +++ b/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/RdbAdapter.java @@ -2,6 +2,7 @@ package com.alibaba.otter.canal.client.adapter.rdb; import java.sql.Connection; import java.sql.SQLException; +import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -13,6 +14,7 @@ import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.alibaba.druid.filter.stat.StatFilter; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.util.JdbcUtils; import com.alibaba.otter.canal.client.adapter.OuterAdapter; @@ -136,6 +138,14 @@ public class RdbAdapter implements OuterAdapter { // array.add("set names utf8mb4;"); // dataSource.setConnectionInitSqls(array); + if ("true".equals(properties.getOrDefault("druid.stat.enable", "true"))) { + StatFilter statFilter = new StatFilter(); + statFilter.setSlowSqlMillis(Long.parseLong(properties.getOrDefault("druid.stat.slowSqlMillis", "1000"))); + statFilter.setMergeSql(true); + statFilter.setLogSlowSql(true); + dataSource.setProxyFilters(Collections.singletonList(statFilter)); + } + try { dataSource.init(); } catch (SQLException e) {