11.springboot监控

目录

1.意义

2.监控方式

3.springboot admin 可视化监控平台

监控服务器开发

1.导入坐标

2.配置服务端口(防止端口冲突)

3.添加注解

4.启动

被监控配置

1.导入坐标

2.可监控配置

3.启动

4.监控原理

1.常用内置端点

2.重要端点

1.info 端点

2.health 端点

3.loggers 端点 

4.metrics 端点 

 5.自定义监控端点

常用注解:


1.意义

  • 监控服务状态是否宕机
  • 监控服务运行指标(内存、虚拟机、线程、请求)
  • 监控日志
  • 管理服务

2.监控方式

  • 一个服务器展示被监控的程序的运行信息
  • 在运行程序中设置主动上报服务器可监控、可监控的信息

3.springboot admin 可视化监控平台

        开源社区项目,用于管理和监控springboot应用程序。客户端注册到服务端后,通过http请求方式,服务端定期从客户端获取对应的信息,并通过ui界面展示对应信息。

监控服务器开发

1.导入坐标


    org.springframework.boot
    spring-boot-starter-web

    de.codecentric
    spring-boot-admin-starter-server
    2.7.3
 
  

版本要和你的springboot 版本一致

2.配置服务端口(防止端口冲突)

application.yml

server:
  port: 8080

3.添加注解

在引导类添加@EnableAdminServer注解来表明是admin server

@SpringBootApplication
@EnableAdminServer
public class Demo3SpringbootMybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(Demo3SpringbootMybatisApplication.class, args);
    }

}

4.启动

访问localhost:8080

11.springboot监控_第1张图片

被监控配置

1.导入坐标


    org.springframework.boot
    spring-boot-starter-web

    de.codecentric
    spring-boot-admin-starter-client
    2.7.3

同样版本应与spring boot对应

2.可监控配置

application.yml举例

spring:
  boot:
    admin:
      client:
        #监控服务器地址(一定要加http协议)
        url: http://localhost:8080
server:
  # 配置端口防止冲突
  port: 8081

#配置可监控信息
management:
  #对外开放某个监控点
  endpoint:
    #health必须开
    health:
      show-details: always
      enabled: true
    #其他
    beans:
      enabled: true
  
  endpoints:
    #对web开启的监控点
    web:
      exposure:
        include: "*"
    #对外开放所有监控点
    enabled-by-default: true

3.启动

即可在监控页面看到监控信息

4.监控原理

参考

因为http方式简单所有只介绍HTTP方式

  • Actuator提供了springboot生产就绪功能,通过端点的配置与访问,获取端点信息
  • 端点描述了一组监控信息,springboot提供了多个内置端点,也可以根据需要自定义端点信息
  • 访问当前所有端点信息:/actuator
  • 访问端点详细信息:/actuator/端点名称

1.常用内置端点

SpringBoot 中默认提供的常用内置端点如下: 

11.springboot监控_第2张图片 

         SpringBoot 中提供了非常多的默认端点监控,但是出于安全考虑,默认情况下有些端点并不是开启状态,如 shutdown 端点就是默认关闭的。

2.重要端点

1.info 端点

这是应用的说明信息等,需要自己在配置,信息自定义

application.yml方式

#配置可监控信息
management:
  #对外开放某个监控点
  endpoint:
    info:
      enabled: true
info:
  auth: zzx
  date: 09.17

        springboot版本太高是不显示的

配置类方式

@Component
public class InfoConfig implements InfoContributor {
    @Override
    public void contribute(Info.Builder builder) {
        //key,value方式
        builder.withDetail("name","zzx");
        builder.withDetail("地址","上海");
        //map方式
        Map info=new HashMap<>();
        info.put("date","09.17");
        builder.withDetails(info);
    }
}

        使用配置类可以动态添信息,可以显示出来

2.health 端点

         health 断点默认只是展示当前应用健康信息,不能自定义,但是我们可以通过另一个配置打开详细信息,这样不仅仅会监控当前应用,还会监控与当前应用相关的其他第三方应用,如 Redis。

application.yml方式

#配置可监控信息
management:
  #对外开放某个监控点
  endpoint:
    #health必须开
    health:
      show-details: always
      enabled: true

 配置类方式

可以进行健康检查,健康输出.....,不健康输出.....

@Component
public class HealthConfig extends AbstractHealthIndicator {
    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        boolean condition = true;
        if(condition) {
            //key,value方式
            builder.withDetail("name", "zzx");
            builder.withDetail("地址", "上海");
            //map方式
            Map info = new HashMap<>();
            info.put("date", "09.17");
            builder.withDetails(info);
            //状态设置
            builder.status(Status.UP);
        }else {
            builder.status(Status.DOWN);
        }
        
    }
}

3.loggers 端点 

        查看当前应用的日志级别等信息,可以临时修改 log 级别。

4.metrics 端点 

        metrics 是一个非常重要的监控端点,其监控内容覆盖了 JVM 内存、堆、类加载、处理器和 tomcat 容器等一些重要指标 。

        metrics端点 自定义指标

11.springboot监控_第3张图片

 5.自定义监控端点

常用注解:

  • @Endpoint:定义一个监控端点,同时支持 HTTP 和 JMX 两种方式。

  • @WebEndpoint:定义一个监控端点,只支持 HTTP 方式。

  • @JmxEndpoint:定义一个监控端点,只支持 JMX 方式。

以上三个注解作用在类上,表示当前类是一个监控端点,另外还有一些注解会用在方法和参数上: 

  • @ReadOperation:作用在方法上,可用来返回端点展示的信息(通过 Get 方法请求)。

  • @WriteOperation:作用在方法上,可用来修改端点展示的信息(通过 Post 方法请求)。

  • @DeleteOperation:作用在方法上,可用来删除对应端点信息(通过 Delete 方法请求)。

  • @Selector:作用在参数上,用来定位一个端点的具体指标路由。

@Component
@Endpoint(id = "pay", enableByDefault = true)
public class MyEndpoint {

    @ReadOperation
    public Object getPay(){
        //调用业务操作,获取信息,最终return
        Map payMap = new HashMap<>();
        payMap.put("1",103);
        payMap.put("2",315);
        payMap.put("3",666);
        return payMap;
    }

}

 

@Component 注解表示将该类交给 Spring 进行管理,或者也可以再定义一个 Configuration 类来加载该 Bean 也可以。

当然,如果我们需要提供给第三方使用,如果无法保证当前包名被扫描,则需要使用 SpringBoot 的自动装配机制将该类进行管理。

@ReadOperation 方法可以返回 String 或者 JSONObject 或者 Map 集合等。

参数上加了 @Selector 注解则表示访问断端点的时候可以直接访问子节点。

你可能感兴趣的:(java,spring,boot)