• 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

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

    4.启动

    访问localhost:8080

    被监控配置

    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 中默认提供的常用内置端点如下: 

     

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

    2.重要端点

    1.info 端点

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

    application.yml方式

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

            springboot版本太高是不显示的

    配置类方式

    1. @Component
    2. public class InfoConfig implements InfoContributor {
    3. @Override
    4. public void contribute(Info.Builder builder) {
    5. //key,value方式
    6. builder.withDetail("name","zzx");
    7. builder.withDetail("地址","上海");
    8. //map方式
    9. Map info=new HashMap<>();
    10. info.put("date","09.17");
    11. builder.withDetails(info);
    12. }
    13. }

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

    2.health 端点

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

    application.yml方式

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

     配置类方式

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

    1. @Component
    2. public class HealthConfig extends AbstractHealthIndicator {
    3. @Override
    4. protected void doHealthCheck(Health.Builder builder) throws Exception {
    5. boolean condition = true;
    6. if(condition) {
    7. //key,value方式
    8. builder.withDetail("name", "zzx");
    9. builder.withDetail("地址", "上海");
    10. //map方式
    11. Map info = new HashMap<>();
    12. info.put("date", "09.17");
    13. builder.withDetails(info);
    14. //状态设置
    15. builder.status(Status.UP);
    16. }else {
    17. builder.status(Status.DOWN);
    18. }
    19. }
    20. }

    3.loggers 端点 

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

    4.metrics 端点 

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

            metrics端点 自定义指标

     5.自定义监控端点

    常用注解:

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

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

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

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

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

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

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

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

    1. @Component
    2. @Endpoint(id = "pay", enableByDefault = true)
    3. public class MyEndpoint {
    4. @ReadOperation
    5. public Object getPay(){
    6. //调用业务操作,获取信息,最终return
    7. Map payMap = new HashMap<>();
    8. payMap.put("1",103);
    9. payMap.put("2",315);
    10. payMap.put("3",666);
    11. return payMap;
    12. }
    13. }

     

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

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

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

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

  • 相关阅读:
    【Java八股文总结】之面向对象
    批量使用cdo 修改分辨率的方法
    Shell脚本学习笔记
    centos7.6升级openssh9.3p1,openssl1.1.1t
    化工单元操作复习题(含答案)
    virtual box安装ubuntu
    【C/C++】C语言runtime调用技术
    Linux友人帐之命令
    Android studio中有报错,如何解决?
    5、Linux:如何将大文件切割成多份小文件
  • 原文地址:https://blog.csdn.net/m0_62520968/article/details/126905091