# slow-sql-monitor **Repository Path**: peng6008/slow-sql-monitor ## Basic Information - **Project Name**: slow-sql-monitor - **Description**: 超轻量级SQL监控组件,10秒钟开启慢SQL监控日志!简单!快速!易拓展!无侵入!完全开源!再也不怕数据库性能调优啦! - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 3 - **Created**: 2024-04-02 - **Last Updated**: 2025-03-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: SQL监控 ## README # 慢SQL监控组件 ![输入图片说明](dashbaord.png) ## Usage ### Spring boot ```java @SpringBootApplication // 开启慢SQL监控 @EnableSlowSqlMonitor public class SpringbootApplication { public static void main(String[] args) { SpringApplication.run(SpringbootApplication.class, args); } } ``` application.yml ```yaml slow-sql-monitor: slow-millis: 1000 # 单位毫秒 ``` pom.xml ```xml io.github.zzusp slow-sql-monitor-spring-boot-autoconfigure 1.0.2 io.github.zzusp slow-sql-monitor-pool-druid 1.0.2 io.github.zzusp slow-sql-monitor-pool-hikari 1.0.2 ``` 自定义拦截器(将拦截器注册为Bean对象,即可自动加载) ```java import org.springframework.stereotype.Component; import com.slowsql.plugin.Interceptor; import com.slowsql.stat.SlowSqlStat; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Component public class CustomInterceptor implements Interceptor { private final static Logger logger = LoggerFactory.getLogger(CustomInterceptor.class); public CustomInterceptor() { } @Override public void beforeExecute(SlowSqlStat slowSqlStat) { // 在SQL执行之前,执行一些操作。为避免影响性能,请务必异步处理!!! } @Override public void afterExecute(SlowSqlStat slowSqlStat) { // 在SQL执行之后,执行一些操作。为避免影响性能,请务必异步处理!!! } @Override public void closeExecute(SlowSqlStat slowSqlStat) { // 在SQL执行结束,执行一些操作。为避免影响性能,请务必异步处理!!! if (slowSqlStat.isSlowSql()) { // 如果为慢SQL,执行一些操作。为避免影响性能,请务必异步处理!!! } } } ``` #### Spring boot & Elasticsearch ```java @SpringBootApplication // 开启慢SQL监控 @EnableSlowSqlMonitor public class SpringbootApplication { public static void main(String[] args) { SpringApplication.run(SpringbootApplication.class, args); } } ``` application.yml ```yaml slow-sql-monitor: slow-millis: 1000 log-slow-sql: false elasticsearch: enabled: true uris: https://127.0.0.1:9200 username: elastic password: 123456 sendMillis: 0 ``` ```xml io.github.zzusp slow-sql-monitor-spring-boot-autoconfigure 1.0.2 io.github.zzusp slow-sql-monitor-pool-hikari 1.0.2 io.github.zzusp slow-sql-monitor-spring-boot-elasticsearch 1.0.2 org.elasticsearch.client elasticsearch-rest-client 7.17.15 jakarta.json jakarta.json-api 2.0.1 ``` ### Spring ```java @Configuration public class AppConfig { @Bean public SlowSqlMonitorBeanProcessor slowSqlMonitor() { SlowSqlConfig config = new SlowSqlConfig(); config.setSlowMillis(1000L); // 自定义拦截器 CustomInterceptor interceptor = new CustomInterceptor(); slowSqlConfig.getInterceptorChain().addInterceptor(interceptor); return new SlowSqlMonitorBeanProcessor(config); } } ``` pom.xml ```xml io.github.zzusp slow-sql-monitor-spring 1.0.2 io.github.zzusp slow-sql-monitor-pool-druid 1.0.2 io.github.zzusp slow-sql-monitor-pool-hikari 1.0.2 ``` ### Without Spring ```java public class SqlMonitor { public DataSource dataSource() throws Exception { Properties properties = new Properties(); properties.setProperty("driverClassName", "com.mysql.jdbc.Driver"); properties.setProperty("url", ""); properties.setProperty("username", ""); properties.setProperty("password", ""); DataSource dataSource = DruidDataSourceFactory.createDataSource(properties); // 监控配置 SlowSqlConfig slowSqlConfig = new SlowSqlConfig(); slowSqlConfig.setSlowMillis(1000L); // 自定义拦截器 CustomInterceptor interceptor = new CustomInterceptor(); slowSqlConfig.getInterceptorChain().addInterceptor(interceptor); return new SlowSqlDataSource((DataSource) bean, slowSqlConfig); } // use the dataSource } ``` pom.xml ```xml io.github.zzusp slow-sql-monitor 1.0.2 io.github.zzusp slow-sql-monitor-pool-druid 1.0.2 io.github.zzusp slow-sql-monitor-pool-hikari 1.0.2 ```