SpringBoot实现Druid监控功能
用了这么久阿里的Druid数据源,今天才知道,原来Druid还能这么用!
(https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)中文官网
在官网上找的一句话,话不多说,直接实操
创建一个SpringBoot的Web项目,然后导入依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
一个是mysql的,一个是Druid的。然后配置yml(或者yaml,properties)
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
url: jdbc:mysql://localhost:3306/person?serverTimezone=UTC&useUnicode=true@characterEncoding=utf-8
type: com.alibaba.druid.pool.DruidDataSource
测试一下数据库连接是否成功,此处省略一张图
配置DruidConfig(配置之前先将log4j依赖导入)
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druidDateSource(){
return new DruidDataSource();
}
@Bean
public ServletRegistrationBean druidServletRegistrationBean(){
ServletRegistrationBean<Servlet> servletRegistrationBean = new ServletRegistrationBean<>(new StatViewServlet(),"/druid/*");
Map<String,String> initParams = new HashMap<>();
// 页面登录账号密码
initParams.put("loginUsername","admin");
initParams.put("loginPassword","123456");
//后台允许谁可以访问
//initParams.put("allow", "localhost"):表示只有本机可以访问
//initParams.put("allow", ""):为空或者为null时,表示允许所有访问
initParams.put("allow","");
//deny:Druid 后台拒绝谁访问
//initParams.put("aaa", "192.168.1.20");表示禁止此ip访问
servletRegistrationBean.setInitParameters(initParams);
return servletRegistrationBean;
}
//配置 Druid 监控 之 web 监控的 filter
// WebStatFilter:用于配置Web和Druid数据源之间的管理关联监控统计
@Bean
public FilterRegistrationBean webStatFilter() {
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
//exclusions:设置哪些请求进行过滤排除掉,从而不进行统计
Map<String, String> initParams = new HashMap<>();
// 排除哪些请求
initParams.put("exclusions", "*.js,*.css,/druid/*");
// 配置profileEnable能够监控单个url调用的sql列表。
initParams.put("profileEnable","true");
// session统计功能
initParams.put("sessionStatEnable","true");
bean.setInitParameters(initParams);
//"/*" 表示过滤所有请求
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}
}
创建一个Controller测试
@Controller
public class JdbcController {
@Autowired
JdbcTemplate jdbcTemplate;
@GetMapping("/emplist")
@ResponseBody
public List<Map<String,Object>> empList(){
String sql = "select * from book";
List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
return maps;
}
// 如果返回页面,需要导入thymeleaf依赖,在templates目录下创建页面
@RequestMapping("/hello")
public String hello(){
return "success";
}
}
启动项目,先访问一下sql,然后在访问一下页面
重点:访问localhost:8080/druid
用代码里写的用户名密码进行登录,我的是admin 123456
可以在不同的模块查看到刚刚测试的请求信息和一些监控到的信息。
更多使用,请参考官方文档(开头也有写)
https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98