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

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: trueloggers:enabled: truemappings:enabled: truemetrics: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.mrgr.cn/news/67974.html

相关文章:

  • 游戏提示错误:xinput1_3.dll缺失?四种修复错误的xinput1_3.dll文件
  • 腾讯轻量云服务器docker拉取不到镜像的问题:拉取超时
  • DolphinDB 与南方科技大学联合授课啦!
  • Uniapp全局文件执行顺序详解
  • 使用Rust实现http/https正向代理
  • printf影响单片机中断速度
  • 模糊理论与模糊集概述
  • 一文了解Android本地广播
  • 探索开放资源上指令微调语言模型的现状
  • 鸿蒙多线程开发——TaskPool任务池
  • Scala学习记录,List
  • 嵌入式linux中设备树控制硬件的方法
  • 【初阶数据结构与算法】沉浸式刷题之顺序表练习(顺序表以及双指针两种方法)
  • Serverless云计算服务
  • Java SPI机制简单讲解
  • Markdown 全面教程:从基础到高级
  • salesforce批量修改对象字段的四种方法
  • VScode建立Java项目
  • 一文带你深度了解FreeRTOS——递归互斥信号量
  • 2024年网鼎杯青龙组|MISC全解
  • Jest项目实战(5):发布代码到 npm
  • 矩阵论 •「线性空间、基变换与向量坐标变换」
  • Jest项目实战(4):将工具库顺利迁移到GitHub的完整指南
  • yakit中的fuzztag
  • Ubuntu安装Python并配置pip阿里镜像教程 - 幽络源
  • bat批量处理脚本细节研究