Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控,Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。虽然Druid监控平台原则上可以对整个SpringBoot项目进行监控,但是他最好的使用范围还是在数据访问层,使用Druid搭建监控检测平台,可以有效的帮助我们实施SQL语句的优化!
Spring Boot Actuator 是 Spring Boot 的一个子项目,它提供了生产级的应用功能,帮助你监控和管理 Spring Boot 应用。使用 Actuator,你可以获取应用运行时的信息,例如:健康状况、度量、环境信息等,Actuator 是SpringBoot自身为我们提供的监控整个项目的工具。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/2204db?serverTimezone=GMT
username: root
password:
#使用Druid数据源
type: com.alibaba.druid.pool.DruidDataSource
#stat:做统计的过滤去
#wall:防火墙
filters: stat,wall
@Configuration
public class DruidConfig {
//1.注入数据源
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource(){
return new DruidDataSource();
}
//2.配置servlet
@Bean
public ServletRegistrationBean registrationBean(){
//1.创建servlet注册类
ServletRegistrationBean<StatViewServlet> servletRegistrationBean = new ServletRegistrationBean<StatViewServlet>();
//2.创建制作页面的servlet
StatViewServlet statViewServlet = new StatViewServlet();
//3.绑定servlet
servletRegistrationBean.setServlet(statViewServlet);
servletRegistrationBean.setUrlMappings(Arrays.asList("/druid/*"));
//4.参数绑定
Map<String,String> maps = new HashMap<String,String>();
maps.put(StatViewServlet.PARAM_NAME_USERNAME,"admin");
maps.put(StatViewServlet.PARAM_NAME_PASSWORD,"123");
maps.put(StatViewServlet.PARAM_NAME_ALLOW,"");//白名单
maps.put(StatViewServlet.PARAM_NAME_DENY,"");//黑名单
servletRegistrationBean.setInitParameters(maps);
return servletRegistrationBean;
}
//3.配置filter
@Bean
public FilterRegistrationBean filterRegistrationBean(){
FilterRegistrationBean<WebStatFilter> bean = new FilterRegistrationBean<WebStatFilter>();
bean.setFilter(new WebStatFilter());
//所有请求进行监控处理
bean.setUrlPatterns(Arrays.asList("/*"));
Map<String, String> initPrams = new HashMap<>();
//添加不需要忽略的格式信息
initPrams.put(WebStatFilter.PARAM_NAME_EXCLUSIONS, "*.js,*.css,/druid/*");
bean.setInitParameters(initPrams);
return bean;
}
}
项目启动后访问http://localhost:8080/druid访问监控平台,根据配置类中的账号密码登录即可;
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
#info信息配置
info.name=杨树林
info.sex=男
#开启健康状态完整信息
management.endpoint.health.show-details=always
#将所有的监控endpoints暴露出来,能看到全局的监控,比如容器中的bean
management.endpoints.web.exposure.include=*
actuator能帮助我们对于项目的整体信息做一个监控检测,但是Json格式的信息终究难以阅读,针对整个问题,SpringBoot也为我们提供了解决方案——Spring Boot Admin。
Spring Boot Admin可以帮我们actuator监控的结果收集过来,然后用图像报表的方式呈现给我们,就相当于为actuator提供了一个可视化的图形界面,让我们不必再去面对枯燥的Json。
Spring Boot Admin 有两个角色,客户端(Client)和服务端(Server);
应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册;
Spring Boot Admin Server 的UI界面将Spring Boot Admin Client的Actuator Endpoint上的一些
监控信息。
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
③ 在引导类上启用监控功能@EnableAdminServer
2. admin-client:
① 创建 admin-client 模块
② 导入依赖坐标 admin-starter-client
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.2.0</version>
</dependency>
③ 配置相关信息:server地址等
spring.boot.admin.client.url=http://localhost:8081
④ 启动server和client服务,访问server
访问配置的端口http://localhost:8081即可进入Admin服务器: