当前位置: 首页 > article >正文

SpringBoot监控

1、Spring Boot Actuator 监控

Spring Boot Actuator 可以帮助监控和管理 Spring Boot 应用,比如健康检查、审计、统计和 HTTP 追踪等。所有的这些特性可以通过 JMX 或者 HTTP endpoints 来获得。

1、Actuator 监控应用程序

启用 Actuator 的端点,只要在项目中引入 Actuator 的依赖即可:

<!-- SpringBoot项目监控: Spring Boot Actuator -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

运行应用并且尝试进入默认暴露的 HTTP endpoints

/actuator
/actuator/health
/actuator/info

应用默认使用 8080 端口,一旦应用启动,可以通过 localhost:8080/actuator 访问默认暴露的 HTTP endpoints:

image-20241107162202372

此时打开 http://localhost:8080/actuator/health 便会显示如下内容:

{"status":"UP"}

2、Actuator Endpoints

Spring Boot Actuator 的关键特性是在应用程序里提供众多接口(即 Endpoints),通过它们了解运行时的内部状况。

Actuator Endpoints 允许监视应用程序并与之交互。Spring Boot 包括许多内置端点,并允许定制自己的端点。例如,health endpoint 提供基本应用程序运行状况信息。

2.1 端点列表

beans显示应用程序中所有 Spring Bean 的完整列表。
caches暴露可用的缓存。
configprops显示所有 @ConfigurationProperties
env暴露 Spring 的属性 ConfigurableEnvironment
health显示应用程序运行状况信息。
info显示任意的应用程序信息。
metrics显示当前应用程序的“指标”信息。
mappings显示所有 @RequestMapping 路径列表。

如果应用程序是 Web 应用程序(Spring MVC,Spring WebFlux 或 Jersey),还可以使用以下附加端点:

image-20241107163222446

2.2 暴露所有 Endpoints

Web 默认仅开启几个 endpoints,若要暴露全部的 endpoints,那么需要在 application.yml 进行如下配置:

endpoints:
  web:
    exposure:
      include: '*'

2.3 默认开启所有监控端点

打开/关闭 Actuator Endpoint

management:
  endpoints:
    enabled-by-default: false    # 默认开启所有监控端点:true(此处关闭)

此时,通过 Web 访问就只剩 /actuator:

关闭默认开启所有监控端点后,我们可以分别暴露选择的端点(同时关闭 management.endpoints.web.exposure.include=*):

management:
  endpoints:
    enabled-by-default: false    # 默认开启所有监控端点:true(此处关闭)
  endpoint:
    health:
      enabled: true
    loggers:
      enabled: true
    mappings:
      enabled: true
    metrics:
      enabled: true

2.4 最常用的 Endpoint

Health:监控应用程序状况

/actuator/health endpoint 提供了关于应用健康的基础信息,一般用于云平台,平台会定时检查应用的健康状况,我们就需要 Health Endpoint 为平台返回当前应用的一系列组件健康状况的集合。

{"status":"UP"}

详细信息

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

image-20241107194326863

Metrics:运行时指标

/actuator/metrics/{name} endpoint 展示了几个有用的度量信息,比如 JVM 内存使用情况、系统 CPU 使用情况、打开的文件等等。

访问 http://localhost:8080/actuator/metrics 可以看到监控指标列表如下:

image-20241107165926249

想要获得某个度量的详细信息,你需要传递度量的名称到 URL 中,例如访问 localhost:8080/actuator/metrics/jvm.memory.used:

http://localhost:8080/actuator/metrics/jvm.memory.used

image-20241107170004961

Loggers:日志记录
/actuator/loggers endpoint 展示了应用的日志并且可以在运行时改变日志等级。

image-20241107170052114

2、Spring Boot Admin管理平台

Spring Boot Admin 是一个开源社区项目,用于管理和监控 Spring Boot 应用程序,提供可视化的 UI 界面展示项目中 Actuator Endpoints 的一些监控信息。

Spring Boot Admin 有两个角色:

客户端 (Spring Boot Admin Client) 和服务端 (Spring Boot Admin Server) ;

应用程序作为 Spring Boot Admin Client 收集数据 Spring Boot Admin Server 展示数据

1、收集数据

在指定的项目中添加依赖:spring-boot-admin-starter-client

<!-- 客户端依赖 数据采集 -->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.5.6</version>
</dependency>

添加配置:

spring:  
  boot:
    admin:
      client:
        url: http://localhost:9090  # 收集监控数据 在哪里展示

2、展示数据

1、创建一个springboot项目

2、添加依赖

<!-- 服务端监控 收集client的数据进行展示  UI 展示 actuator 的监控的数据   -->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>2.5.6</version>
</dependency>

启动类添加注解:@EnableAdminServer

@EnableAdminServer   
@SpringBootApplication
public class AdminApplication {
    public static void main(String[] args) {
        SpringApplication.run(AdminApplication.class,args);
    }
}

3、修改端口

server:
   port: 9090

4、效果图

访问路劲: localhost:9090/applications

image-20241107193757082

应用墙:

image-20241107193902130

JVM 展示

image-20241107193948596

3、JDK中自带的工具查看JVM 情况

JDK 自带了很多命令行甚至是图形界面工具,帮助查看 JVM 的一些信息。

image-20241107191931501

1、jps

使用 jps 命令得到 Java 进程列表

image-20241107192025836

2、jinfo

查看某个进程的详细信息

image-20241107192126936

3、jvisualvm

1、查看 jvm 参数

image-20241107192359134

2、监视面板可以看到JVM 的基本情况

image-20241107192423440

4、jconsole

jconsole 也是一个综合性图形界面监控工具,比 jvisualvm 更方便的一点是,可以用曲线的形式监控各种数据

image-20241107192704186

5、其他

命令行查看 :

jstat 工具允许以固定的监控频次输出 JVM 的各种监控指标,比如使用 -gcutil 输出 GC 和内存占用汇总信息,每隔 5 秒输出一次,输出 100 次:

image-20241107192937363

参数说明:

S0 表示 Survivor0 区占用百分比

S1 表示 Survivor1 区占用百分比

E 表示 Eden 区占用百分比

O 表示老年代占用百分比

M 表示元数据区占用百分比

YGC 表示年轻代回收次数

YGCT 表示年轻代回收耗时

FGC 表示老年代回收次数

FGCT 表示老年代回收耗时

jstack

通过命令行工具 jstack,也可以实现抓取线程栈的操作

image-20241107193313047


http://www.kler.cn/a/384627.html

相关文章:

  • 17、论文阅读:VMamba:视觉状态空间模型
  • [单例模式]
  • 硬件知识10 线性稳压电源——二极管稳压、射级跟随器稳压、集成电路稳压
  • MySQL存储目录与配置文件(ubunto下)
  • Windows磁盘管理右键无法删除卷,右键只有帮助选项按钮
  • ReactPress系列—Next.js 的动态路由使用介绍
  • vue3 pdf base64转成文件流打开
  • 阿里云函数计算GBK编码
  • 开源代码管理平台Gitlab如何本地化部署并实现公网环境远程访问私有仓库
  • 来咯来咯webSocket
  • JavaEE初阶---servlet篇(二)(smartTomcat的使用相关错误类型)
  • 【智能算法应用】哈里斯鹰算法优化二维栅格路径规划问题
  • CoEdge: 面向自动驾驶的协作式边缘计算系统,实现分布式实时深度学习任务的高效调度与资源优化
  • ruoyi-vue中的mybatis改为mybatis-plus
  • 【数据结构-合法括号字符串】【hard】【拼多多面试题】力扣32. 最长有效括号
  • 阿里云对象存储OSS
  • 恋爱脑学Rust之智能指针Rc,RefCell和Weak指针
  • 重构代码之添加参数
  • [单例模式]
  • 【设计模式系列】桥接模式(十三)
  • LLMs之PDF:zeroX(一款PDF到Markdown 的视觉模型转换工具)的简介、安装和使用方法、案例应用之详细攻略
  • uniapp中使用原生ajax上传文件并携带其他数据,实时展示上传进度
  • 外包干了2年,快要废了。。。
  • [Element] el-table修改滚动条上部分的背景色
  • 科比投篮预测——数据处理与分析
  • ES6的Proxy到底是什么?