Actuaotr是spring boot项目中非常强大的一个功能,有助于对应用程序进行监控和管理,通过restful api请求来监管、审计、收集应用的运行情况,针对微服务而言它是必不可少的一个环节。
spring-boot-actuator中已经内置了非常多的Endpoints(health、info、beans、httptrace、shutdown)等等,同时也允许我们自己扩展自己的端点.
但是这样监控也有一些问题:第一,所有的监控都需要调用固定的接口来查看,如果全面查看应用状态需要调用很多接口,并且接口返回的 JSON 信息不方便运营人员理解;第二,如果 Spring Boot 应用集群非常大,每个应用都需要调用不同的接口来查看监控信息,操作非常繁琐低效。在这样的背景下,就诞生了另外一个开源软件:Spring Boot Admin。
Spring Boot Admin 是一个管理和监控 Spring Boot 应用程序的开源软件,每个应用都认为是一个客户端,通过 HTTP 或者使用 Eureka 注册到 admin server 中进行展示,Spring Boot Admin UI 部分使用 Vue.js 将数据展示在前端。
当然,如果就一个SpringBoot应用,使用Spring Boot Admin就显得多余了点,可以查看《SpringBoot入门建站全系列(二十九)Actuator服务监控及SpringBootMonitor单机监控页面》,这篇文章使用改造后的SpringBootMonitor对单机进行监控。
下面讲述Spring Boot Admin的使用方法。
因为使用Spring Boot Admin,需要建立一个监控中心AdminServer,收集各个客户端上送的监控信息,因此,首先要建好AdminServer。
需要引入spring-boot-starter-web和spring-boot-admin-starter-server.
依赖如下:
<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>
<version>2.1.5</version>
</dependency>
这里使用yaml文件写配置,配置文件application.yml:
application.yml:
server:
port: 8888
spring:
application:
name: AdminServer
这里,只需要配置端口和应用名即可。
使用main直接启动即可。需要使用注解@EnableConfigServer开启监控数据收集服务。
ConfigServerApplication:
package cn.pomit.springbootwork.config.server;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
需要引入spring-boot-starter-web和spring-boot-starter-actuator、spring-boot-admin-starter-client.
依赖如下:
<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.5</version>
</dependency>
这里使用yaml文件写配置application.yml:
application.yml:
server:
port: 8111
spring:
application:
name: AdminClient
boot:
admin:
client:
url: http://localhost:8888
management:
endpoints:
web:
exposure:
#加载所有的端点,默认只加载了info、health
include: '*'
这里面,包含了端口、应用名、监控中心信息。
AdminClientApplication :
package cn.pomit.springbootwork.admin.client;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class AdminClientApplication {
public static void main(String[] args) {
SpringApplication.run(AdminClientApplication.class, args);
}
}
访问监控服务的地址:http://127.0.0.1:8888/#/applications, 注意,这个地址是AdminServer的,不是客户端的。
在这里插入图片描述
如上图所示,开启中的应用有一个,就是AdminClient。点击对应应用,可以进入详情界面:
在这里插入图片描述