SpringBoot——Actuator监控

一、引入依赖

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

二、监控配置

management:
  endpoints:
    enabled-by-default: false    # 用于开关监控端点,默认为true暴露所有端点信息
    web:
      exposure:
        include: '*' # 表示以web方式暴露所有监控端点 
  endpoint:    # 可以先禁用所有的监控端点,再打开单个端点,自定义的端点是默认打开的
    health:
      enabled: true    # 表示开关单个监控端点
      show-details: always # 展示详细信息
    info:
      enabled: true
    metrics:
      enabled: true

支持的暴露方式:

  • HTTP:默认只暴露healthinfo的端点
  • JMX:默认暴露所有端点
  • 除过health和info,剩下的端点都应该进行保护访问。如果引入SpringSecurity,则会默认配置安全访问规则

三、查看

访问 http://localhost:8080/actuator/**查看所有端点监控信息

四、自定义健康信息

继承AbstractHealthIndicator类,重写doHealthCheck方法

/**
 * 定制检查健康信息
 * @author cwj
 * @date 2021/9/10
 */
@Component
public class MyComHealthIndicator extends AbstractHealthIndicator{

    /**
     * 真实的检查方法
     * @param builder
     * @throws Exception
     */
    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        //获取连接进行测试
        Map<String,Object> map = new HashMap<>();
        if(1 == 1){
            builder.up();
            map.put("count",1);
            map.put("ms",100);
        }else{
            builder.status(Status.OUT_OF_SERVICE);
            map.put("err","连接超时");
            map.put("ms",3000);
        }
        //withDetail方法用于携带返回数据,可将数据写入端口信息中
        builder.withDetail("code",100).withDetails(map);

    }
}

五、自定义端点

使用@Endpoin注解表示该类是端点类

@Component
@Endpoint(id = "container") //container表示端点名
public class DockerEndpoint {

    //DockerInfo表示属性,所有方法不允许有参数
    @ReadOperation //表示端点的读操作
    public Map getDockerInfo(){
        return Collections.singletonMap("info","docker started.......");
    }

    @WriteOperation //表示端点的写操作
    public void writerDockerInfo(){
        System.out.println("docker restarted.....");
    }
}

测试: 端点自定义成功

SpringBoot——Actuator监控 

 六、监控的可视化工具

https://github.com/codecentric/spring-boot-admin

服务端

导入依赖

<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>

在启动类上加入@EnableAdminServer注解即可

访问服务端:http://localhost:9000/wallboard

客户端

导入依赖

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.4.3</version>
</dependency>

将客户端注册到服务端中

  boot:
    admin:
      client:
        url: http://localhost:9000    # 服务端的端口号
        instance:
          prefer-ip: true # 使用ip名注册
  application:
    name: springboot-thymeleaf # 设置客服端名称

展示

SpringBoot——Actuator监控

 

上一篇:从后端返回前端不序列化


下一篇:SpringMVC通过Ajax处理数据,出现406问题