SpringBoot监控
一. SpringBoot-Actuator1.1什么是ActuatorActuator是spring boot的一个附加功能,可帮助你在应用程序生产环境时监视和管理应用程序。 可以使用HTTP的各种请求来监管,审计,收集应用的运行情况。Spring Boot Actuator提供了对单个Spring Boot的监控,信息包含:应用状态、内存、线程、堆栈等等,比较全面的监控了Spring Boot
一. SpringBoot-Actuator
1.1什么是Actuator
Actuator是spring boot的一个附加功能,可帮助你在应用程序生产环境时监视和管理应用程序。 可以使用HTTP的各种请求来监管,审计,收集应用的运行情况。Spring Boot Actuator提供了对单个 Spring Boot的监控,信息包含:应用状态、内存、线程、堆栈等等,比较全面的监控了Spring Boot应用的整个生命周期。特别对于微服务管理十分有意义。
Actuator 的 REST 接口
Actuator 监控分成两类:原生端点和用户自定义端点;自定义端点主要是指扩展性,用户可以根据自己的实际应用,定义一些比较关心的指标,在运行期进行监控。
原生端点是在应用程序里提供众多 Web 接口,通过它们了解应用程序运行时的内部状况。
原生端点又可以分成三类:
应用配置类:可以查看应用在运行期的静态信息:例如自动配置信息、加载的 springbean 信息、yml 文件配置信息、环境信息、请求映射信息;
度量指标类:主要是运行期的动态信息,例如堆栈、请求链、一些健康指标、metrics 信息 等;
操作控制类:主要是指 shutdown,用户可以发送一个请求将应用的监控功能关闭。 Actuator 提供了 13 个接口,具体如下表所示。
1.2.Actuator的使用
使用Actuator功能与springBoot使用其他功能一样简单,只需要在pom.xml中添加如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
修改配置文件
server:
port: 8888
info:
app:
name: spring-boot-actuator
version: 1.0
test: test
management:
endpoints:
web:
exposure:
include: '*' #可以打开所有的监控点
endpoint:
health:
show-details: always #展示细节,除了always之外还有when-authorized、never,默认值是never
shutdown:
enabled: true #开启优雅关机
修改配置文件后重启服务后,访问相关接口,就可以查看相关信心,也可以使用post请求访问shutdown接口实现优雅关节,这里就不做过多演示了。有兴趣的小伙伴可以去官网查看
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
二.Spring Boot Admin
2.1什么是Spring Boot Admin
对于spring actuator而言,最大的缺点在于是以json形式来进行展示,为了更好的进行监控 显示,我们来介绍一个更加方便的工具:spring boot admin。
Spring Boot Admin:可视化后台管理系统
Spring Boot Admin 是一个针对spring-boot的actuator接口进行UI美化封装的监控工具。他可以 返回在列表中浏览所有被监控spring-boot项目的基本信息比如:Spring容器管理的所有的bean、 详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表 和命中率)等,Threads 线程管理,Environment 管理等。
利用springbootadmin进行监控的架构图如下:
springbootadmin监控
通俗点,就是我们如果有n个springboot业务系统需要监控的话,那么需要一个额外的
springbootadmin应用来进行监控这些client,client和server之间需要做一点配置即可。
2.2SpringBootAdmin的使用
2.2.1搭建Server端
a.添加相关启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
b.修改yml中的端口号
server:
port: 8081
c.在启动类中开启服务端
@EnableAdminServer
@SpringBootApplication
public class SpringbootadminserverApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootadminserverApplication.class, args);
}
}
d.启动服务端
2.2.2搭建客户端
a.添加相关启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.1.0</version>
</dependency>
b.编写application.yml
server:
port: 8080
#自定义配置信息用于"/actuator/info"读取
info:
name: 老王
age: 100
phone: 110
#通过下面的配置启用所有的监控端点,默认情况下,这些端点是禁用的;
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: always
## 将Client作为服务注册到Server,通过Server来监听项目的运行情况
spring:
boot:
admin:
client:
url: http://localhost:8081
##application实例名
application:
name: spring-boot-admin-client
c.编写demo.java
@RestController
public class demo {
@RequestMapping("/index")
public String index() {
return "这是 index";
}
@RequestMapping("/home")
public String home() {
return "这是 home";
}
}
d.启动Client
秒后刷新,可以看到 client 端已注册到 server。
查看 client 详细信息:
更多推荐
所有评论(0)