# SpringBoot 监控

<span alt='solid'> 概述 </span>:

SpringBoot 自带监控功能 Actuator,可以帮助实现对程序内部运行情况监控,比如监控状况,Bean 加载情况,配置属性,日志信息等。

使用步骤:

  1. 导入依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    或者在创建 SpringBoot 的时候进行勾选该依赖

    image-20230914090657267

  2. 访问:http://localhost:8080/acruator

访问路径后返回了一些 json 字符串,我们去找一个网站解析一下

image-20230914091151109

json 字符串解析后的格式

image-20230914091254472

访问路径 http://localhost:8080/actuator/health

表示当前应用正常 DOWN 就是失败了有问题了,默认没有开启完整信息的,因为不是很安全

image-20230914091616106

在 application.yml 配置文件中开启完整信息

# 开启健康检查的完整信息
management:
   endpoint:
     health:
       show-details: always

访问结果:

image-20230914092454794

导入 redis 的坐标

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

然后 redis 本机没有启动,它默认会链接本机的 redis 但是没有启动就会报错。我们查看 SpringBoot 监控的情况中 redis 是处于什么状态

image-20230914094309384

其它的配置

# 将所有的监控 endpoint 暴漏出来 可以理解为:一个 endpoints 就是一个 url
management:
  endpoints:
    web:
      exposure:
        include: "*" #这里需要注意 * 号需要加上双引号包裹起来,否则启动报错

访问结果:

image-20230914100445727

# SpringBootAdmin

SpringBootAdmin 是一个开源社区项目,用于管理和监控 SpringBoot 应用程序。

SpringBootAdmin 有两个角色,客户端 (Client) 和服务端 (Server)。

应用程序作为 SpringBootAdminClient 向为 SpringBootAdminServer 注册

SpringBootAdminServer 的 UI 界面将 SpringBootAdminClient 的 ActuatorEndpoint 上的一些监控信息

这个东西的使用有两端,所以我们要创建两端

image-20230914101003770

创建 admin-server 模块

image-20230914101337604

server 依赖包含了 actuator 所以不用选择了

因为本机的端口号默认是 8080,需要将两端的端口号分别开来否则就会出问题:

server 的 yml 配置文件

server:
  port: 8081

client 的 yml 配置文件

# 执行 admin-server 地址
spring:
  boot:
    admin:
      client:
        url: "http://localhost:8081"
management:
  endpoint:
    health:
      show-details: always # 健康检查的完整信息
  endpoints:
    web:
      exposure:
        include: "*" # 开启所有配置

启动 server 的启动类

然后再启动 client 的启动类

image-20230914104325433

启动之后我们直接访问 server 就可以看到 client 中的所有信息了。

image-20230914104507076

点击应用墙就可以看到启动的时间

image-20230914104622026

点击后就可以看到里面的详细信息

image-20230914104700110

里面有健康信息和其它的一些信息

image-20230914104727301

在 client 模块中添加一个 UserController 控制类

@RestController
public class UserController {
    @GetMapping("/str")
    public String getStr() {
        return "Hello,World";
    }
}

重启代码