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.rhkb.cn/news/466757.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态规划 —— dp 问题-粉刷房子

1. 剑指offer —— 粉刷房子 题目链接&#xff1a; LCR 091. 粉刷房子 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/JEj789/description/ 2. 题目解析 根据上图可以得到costs横坐标&#xff08;行&#xff09;是房子的号数&#xff0c;红色的下标是0&…

RPA是什么,RPA有什么作用?

在数字化转型的时代背景下&#xff0c;企业面临着提高效率、降低成本和优化流程的巨大压力。RPA作为一种革新性的数字化技术&#xff0c;迅速成为企业实现这些目标的利器。那么&#xff0c;RPA究竟是什么&#xff1f;它又能为企业带来哪些实际作用呢&#xff1f;本文金智维将对…

RAG(检索增强生成)的实现流程;RAG怎么实现检索增强的

目录 RAG(检索增强生成)的实现流程 两次使用大模型:可以不同 一、数据准备阶段 二、应用阶段 RAG怎么实现检索增强的 实现方式 具体举例 RAG(检索增强生成)的实现流程 两次使用大模型:可以不同

【ddnsgo+ipv6】

ddnsgoipv6 DNS解析添加记录ddnsgo配置 DNS解析添加记录 ddnsgo配置

【手撕排序2】快速排序

&#x1f343; 如果觉得本系列文章内容还不错&#xff0c;欢迎订阅&#x1f6a9; &#x1f38a;个人主页:小编的个人主页 &#x1f380; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 ✌️ &#x1f91e; &#x1f91f; &#x1f918; &#x1f919; &#x1f448; &…

Stable Diffusion的解读(一)

Stable Diffusion的解读&#xff08;一&#xff09; 文章目录 Stable Diffusion的解读&#xff08;一&#xff09;摘要Abstract一、机器学习部分1. Stable Diffusion的早期工作1.1 从编码器谈起1.2 第一条路线&#xff1a;VAE和DDPM1.3 第二条路线&#xff1a;VQVAE1.4 路线的交…

2024年该了解的常用渲染工具

随着图形技术和计算机科学的飞速发展&#xff0c;渲染工具在多个领域中的应用越来越广泛&#xff0c;包括影视特效、建筑设计、工业设计、游戏开发等。了解并掌握一些常用的渲染工具对于设计师和艺术家来说至关重要。 一、效果图建模及渲染软件 Autodesk 3ds Max 拥有强大的建…

解决 “Error: listen EACCES: permission denied 0.0.0.0:80“ 错误

前言 在开发过程中&#xff0c;我们经常会遇到各种各样的错误。其中一个常见的错误是 Error: listen EACCES: permission denied 0.0.0.0:80。这个错误通常发生在尝试启动一个开发服务器时&#xff0c;服务器试图绑定到80端口&#xff0c;但由于权限不足而失败。本文将详细介绍…

flink 内存配置(一):设置Flink进程内存

flink 内存配置&#xff08;一&#xff09;&#xff1a;设置Flink进程内存 flink 内存配置&#xff08;二&#xff09;&#xff1a;设置TaskManager内存 flink 内存配置&#xff08;三&#xff09;&#xff1a;设置JobManager内存 flink 内存配置&#xff08;四&#xff09;…

51c嵌入式~电路~合集14

我自己的原文哦~ https://blog.51cto.com/whaosoft/12443598 一、嵌入式开发中的滤波器设计 什么是滤波器&#xff1f; 各种传感器信号多多少少会携带一些噪声信号&#xff0c;那么通过滤波器就能够更好的降低和去除噪声&#xff0c;还原真实有用信号。 滤波器是一个电路&…

安卓图片的着色教程(tint的使用)

目录 基础夯实&#xff1a;一、Tint的定义与作用二、Tint的应用场景三、Tint的使用方法四、Tint的优势五、注意事项 使用教程&#xff1a;一、xml文件中使用tint效果展示完整代码 二、代码中使用tint效果展示完整代码 三、使图片的主题和背景反色效果展示完整代码 四、运行例程…

Vulnhub靶机——DC-4

#环境准备 dc-4靶机&#xff1a;网卡nat模式 192.168.200.144 kali攻击机&#xff1a;网卡nat模式 192.168.200.129 #渗透过程 #信息收集 老规矩&#xff0c;先用nmap看看有什么端口可以搞 还是一如既往的80和22 访问80端口是一个登录界面&#xff0c;一上来就让我进行爆…

以太网交换安全:MAC地址漂移

一、什么是MAC地址漂移&#xff1f; MAC地址漂移是指设备上一个VLAN内有两个端口学习到同一个MAC地址&#xff0c;后学习到的MAC地址表项覆盖原MAC地址表项的现象。 MAC地址漂移的定义与现象 基本定义&#xff1a;MAC地址漂移发生在一个VLAN内的两个不同端口学习到相同的MAC地…

.NET6中WPF项目添加System.Windows.Forms引用

.NET6中WPF项目添加System.Windows.Forms引用 .NET6的WPF自定义控件默认是不支持System.Windows.Forms引用的&#xff0c;需要添加这个引用方法如下&#xff1a; 1. 在项目浏览器中找到项目右击&#xff0c;选择编辑项目文件&#xff08;Edit Project File&#xff09;。 …

Docker安装XXL-JOB分布式调度任务

一、持久化 1、下载 xxl-job 源码,找到持久化脚本 2、创建 xxl-job 数据库,将上述文件中的脚本在本库执行即可 create database xxl_job charset utf8mb4 collate utf8mb4_general_ci; 二、安装 1、下载 xxl-job 镜像 docker pull xuxueli/xxl-job-admin:2.4.1 2、创建挂…

Kafka 源码 KRaft 模式本地运行

KRaft&#xff08;Kafka Raft Metadata mode&#xff09;&#xff0c;从版本 2.8.0 开始作为测试特性引入&#xff0c;并在后续版本中持续得到改进和增强。 KRaft 模式是指 Kafka 使用 Raft 协议来管理集群元数据的一种运行模式&#xff0c;这标志着 Kafka 向去除对 ZooKeeper …

杨辉三角,洗牌算法

杨辉三角 给定一个非负整数numRows&#xff0c;生成杨辉三角的前numRows行。 在杨辉三角中&#xff0c;每个数是它的左上方和右上方的数的和。 public List<List<Integer>> generate(int numRows){List<List<Integer>> ret new ArrayList<>();…

计算机网络——HTTP篇

基础篇 IOS七层网络模型 TCP/IP四层模型&#xff1f; 应⽤层&#xff1a;位于传输层之上&#xff0c;主要提供两个终端设备上的应⽤程序之间的通信&#xff0c;它定义了信息交换的格式&#xff0c;消息会交给下⼀层传输层来传输。 传输层的主要任务就是负责向两台设备进程之间…

基于SpringBoot的Java教学支持系统开发指南

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理教学辅助平台的相关信息成为必然。开发合适…

MySQL:表的增删改查(进阶)

表的增删改查&#xff08;进阶&#xff09;十分重要&#xff0c;也较有难度&#xff0c;需多花时间掌握。 一、NULL约束&#xff1a; 在加null约束之前&#xff0c;id可以插入null&#xff0c;在加上null约束之后&#xff0c;id不再可以插入null。 二、unique约束&#xff1a;…