# 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监控组件

## 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
```