springboot(三)_使用springboot actuator与springboot admin对微服务进行监控

本系列的所有源码可以从github获取

SpringBoot Actuator

概念

SpringBoot Actuator 是包含一系列端点,这些端点可以实现对服务的监控,暴露出服务的实时状态。在微服务的架构中,可以帮助我们对系统有整体的把控。

快速入门

在pom.xml中引入 spring-boot-starter-actuator 依赖即可开启 actuator 监控,这里用到的代码是在 springboot(一)_快速上手springboot中搭建好的。

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

启动项目,在浏览器访问 http://localhost:8099/health ,我们可以看到返回了服务的当前状态。

1
{"status":"UP"}

Actuator 的一系列端点可以在官方网站查询,当然,有很多端点是默认敏感的,也就是没有通过安全校验无法访问,比如 /metrics 端点,访问回返回 404 错误。如果想要访问这些端点,可以配置 application.properties 。

1
endpoints.sensitive=false

Spring Boot 2.x 的配置稍有更改,可以参考官网。另外,shutdown 端点默认是不可用的,如果想要开启 shutdown 功能需要配置,并且shutdown是post请求。

1
endpoints.shutdown.enabled=true

端点提供了非常全面的监控,但是这样每次去请求接口非常麻烦,返回的json信息也不够直观。所以,需要使用Spring Boot Admin。

Spring Boot Admin

概念

Spring Boot Admin 是管理和监控 Spring Boot 应用的开源软件,它对 SpringBoot Actuator 进行了封装,可以在列表中浏览被监控的 Spring Boot 的信息。

admin-server

首先搭建一个 admin-server ,在项目的pom文件中添加

1
2
3
4
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>

spring-boot-admin-starter-server 已经包含了 ui 的依赖,不用另外引入,在启动类加上 @EnableAdminServer 注解

1
2
3
4
5
6
7
@SpringBootApplication
@EnableAdminServer
public class SpringBootAdminServerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootAdminServerApplication.class, args);
}
}

启动程序,访问 localhost:8080 ,可以看到我们的server端已经搭建好了

PMIH3t.md.png

admin-client

将 SpringBoot Actuator 用到的代码作为 client ,注释掉 actuator的依赖,引入 spring-boot-admin-starter-client 依赖

1
2
3
4
5
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>1.4.6</version>
</dependency>

配置文件

1
2
3
spring.boot.admin.url=http://localhost:8080
#关闭安全校验
management.security.enabled=false

重启项目,刷新 localhost:8080,client 端已经注册上来了PMoS4s.md.png

点击 details 能够看到详细的监控信息

PMoS4s.md.png