文章目录
- 前言
- Druid监控平台的基础使用
- actuator基础使用
- Admin可视化图形监控
前言
Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控,Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。虽然Druid监控平台原则上可以对整个SpringBoot项目进行监控,但是他最好的使用范围还是在数据访问层,使用Druid搭建监控检测平台,可以有效的帮助我们实施SQL语句的优化!
Spring Boot Actuator 是 Spring Boot 的一个子项目,它提供了生产级的应用功能,帮助你监控和管理 Spring Boot 应用。使用 Actuator,你可以获取应用运行时的信息,例如:健康状况、度量、环境信息等,Actuator 是SpringBoot自身为我们提供的监控整个项目的工具。
Druid监控平台的基础使用
- 添加Druid相关数据源坐标
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
- 在配置文件中配置Druid过滤器
Druid的实现原理在于通过过滤器的信息拦截,从而达到统计监控的功能。
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
- 配置类中配置组件信息
StatViewServlet:Druid为我们提供的监控页面Servlet,稍作配置就可以使用;
WebFilter:真正做拦截统计的过滤去,监控平台实现的核心;
@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访问监控平台,根据配置类中的账号密码登录即可;
actuator基础使用
- 添加actuator依赖坐标
<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=*
- 访问http://localhost:8080/actuator后可以通过json.cn查看json
注意:使用时一定要先访问一个普通接口,否则不开启监控,报错404
actuator能监控到的信息很多,具体访问只需要在路径下加相应的子路径即可;
Admin可视化图形监控
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上的一些
监控信息。
- admin-server:
① 创建 admin-server 模块
② 导入依赖坐标 admin-starter-server
<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服务器: