一、什么是Actuator
Actuator是spring boot的一个附加功能,可帮助你在应用程序生产环境时监视和管理应用程序。可以使用HTTP的各种请求来监管,审计,收集应用的运行情况。Spring Boot Actuator提供了对单个Spring Boot的监控,信息包含:应用状态、内存、线程、堆栈等等,比较全面的监控了Spring Boot应用的整个生命周期。特别对于微服务管理十分有意义。
缺点:没有可视化界面。
解决:后面将要讲到的Admin-UI解决弥补这一缺陷
实例:
pom.xml
<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>
application.yml
server:
port: 8080
#自定义配置信息用于"/actuator/info"读取
info:
name: 老王
age: 100
phone: 110
#通过下面的配置启用所有的监控端点,默认情况下,这些端点是禁用的;
management:
endpoints:
web:
exposure:
include: "*"
app.java
@RestController
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
@RequestMapping("/index")
public String index() {
return "这是 index";
}
@RequestMapping("/home")
public String home() {
return "这是 home";
}
}
运行:
说明: 默认情况下,在不配置启用所有监控站点时,只拥有3个接口的监控权限,把 application.yml改成:
server:
port: 8080
#自定义配置信息用于"/actuator/info"读取
info:
name: 老王
age: 100
phone: 110
#通过下面的配置启用所有的监控端点,默认情况下,这些端点是禁用的;
#management:
# endpoints:
# web:
# exposure:
# include: "*"
二、什么是Spring Boot Admin
Spring Boot Admin 是一个针对spring-boot的actuator接口进行UI美化封装的监控工具。他可以返回在列表中浏览所有被监控spring-boot项目的基本信息比如:Spring容器管理的所有的bean、详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,Threads 线程管理,Environment 管理等。
Spring Boot Admin 是由Client端和Server端组成,在 Spring Boot 项目中,Spring Boot Admin 作为 Server 端,其他的要被监控的应用作为 Client 端, 基于这种的配置如下步骤:
2.1 搭建Server端
pom.xml
<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-server</artifactId>
<version>2.0.0</version>
</dependency>
applicaiton.yml
server:
port: 8081
app.java
@RestController
@EnableAdminServer
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
启动服务端:
这时不没有数据。
2.1 搭建client端
pom.xml
<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.0.0</version>
</dependency>
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
app.java
@RestController
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
@RequestMapping("/index")
public String index() {
return "这是 index";
}
@RequestMapping("/home")
public String home() {
return "这是 home";
}
}
启动 client……
几秒后刷新,可以看到 client 端已注册到 server。
查看 client 详细信息: