9.Spring Boot2.5实战 - 应用程序性能监控|学习笔记

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
简介: 快速学习9.Spring Boot2.5实战 - 应用程序性能监控。

开发者学堂课程【Spring Boot 2.5.x 开发实战9.Spring Boot2.5实战 - 应用程序性能监控】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/853/detail/14074


9.Spring Boot2.5实战 - 应用程序性能监控

 

内容介绍:

一、Spring Boot 实战 – 应用程序性能监控 APM

二、Java Spring Boot 2.5监控实战

 

本节内容:

节课也讲另外一个非常重要的主题叫应用程序的性能监控。在生产环境下,应用程序的性能监控是非常重要的,开发阶段可能还不严重,但是生态环境下的话有可能基于高并发,比如双11等带来的这些流量冲击问题,可能应用程序在生产环境下,会因为一些配置参数等网络问题,导致应用程序性能可能出现这个问题,比如在高并发等会导致大量的内存耗尽等问题,或者应用程序代码本身在前期开发设计阶段做得不够详细,会出现缓慢的内存泄漏,都需要去做应用程序的性能监控,保证应用程序的强壮性,以及后期的维护等。

一、Spring Boot 实战 – 应用程序性能监控 APM

1. Spring Boot 2.0监控指标

基于 Spring Boot 应用程序,如何做应用程序的性能监控。对于微服务架构的市场开发课程,也是很重要的一个铺垫,大家需要实战操作去理解整个课程内容,包括课程会讲非常重要的里面提供了一个组件,executed 还有社区里面一个重要的开发项目,Spring Boot2.5,提供可视化的一套接口,Spring Boot 本身也提供这种对应的一些接口,可以去抓取这些原始的数据,在后续使用 Spring Boot 进行开发的话,这些信息也都可以抓得到,只不过需要大家去了解,结合自己的整个监控需求,进行配置相应的接口。

image.png

2. Spring Boot 性能监控 Actuator

(1)Spring Boot 2014年4月性能监控和管理组件 Actuator 。

(2)使用 HTTP Endpoint 或 JMX,运行状态指标数据收集

(3)health, metrics, info, dump, env, etc

(4)2.0以后改进监控地址带有/actuator前缀

(5)例如/actuator/health 监控健康状态信息

(6)禁用 management.endpoint.shutdown.enabled=true

(7)单个禁用

(8)management.endpoints.enabled-by-default=false

(9)management.endpoint.info.enabled=true

Actuator,主要是来帮助进行应用程序的一些监控参数的收集,并且进行扩展暴露给第三方程序的。地质列表里面实际针对的各种不同的一个数据的暴露的信息,这里面比较重要的应用程序性能监控的这些数据都属于敏感数据,不能轻易的暴露给第三方及外界。当然还有另外一个问题就是这是一把双刃剑,它本身的性能监控指标的数据收集的话,一定也会消耗一定的服务器资源,比如讲的是 CPU 或者内存,这里面还会通过网络暴露的话会消耗一定的网络带宽资源,它提供了各种不同的这种监控指标信息的话,实际都属于Endpoint 的系列都提供了一个暴露的端点或者叫终结点。

3.Spring Boot 2.4实战 –内置性能监控

Endooint 列表

内置EndPoint lD描述

描述

默认启用

auditevents

暴露审计事件信息

Yes

beans

Beans 列表

Yes

caches

缓存信息

Yes

conditions

评估配置的条件信息

Yes

configprops

显示 @ConfigurationProperties 列表

Yes

env

环境信息

Yes

flyway

Flyway  数据掐你一信息

Yes

health

健康信息

Yes

httptrace

显示 HTTP 跟踪信息(默认最近100  HTTP 请求应答).

Yes

info

显示程序信息

Yes

integrationgraph

集成图 Spring Integration graph.

Yes

loggers

显示与修改日志信息

Yes

liquibase

Liquibase 数据库迁移信息

Yes

metrics

显示‘metrics’指标信息

Yes

mappings

显示 @RequestMapping 路径列表

Yes

scheduledtasks

显示调度任务

Yes

sessions

查询和删除会话 Spring Session-backed session store.不支持 reactive web applications.

Yes

shutdown

优雅地关闭应用

No

threaddump

执行线程 Dump thread dump.

Yes

通过网络给你提供了一个数据暴露的接口,现在就可以用第三方的一些展示数据或自己来开发,开发一个 web界面来去展示。

web

EndPoint lD

描述

默认开启

heapdump

返回 hprof heap dump 文件.

Yes

logfile

使用 HTTP 协议暴露 JMX beans (当 Jolokia 位于 classpath,不 Yes 支持 WebFlux).

Yes

prometheus

以可以由 Prometheus 服务器抓取的格式公开指标数据

Yes

对接可以抓取原始的单位信息,可以通过 HTTP 协议或者我们 JMX 来暴露可以对接 prometheus 原生环境下比较重要的一个心理监控的一套解决方案。

例子:2.0以后启动了一个我们说的这样一个应用程序,这个地址上下面有很多子目录,对应的这些不同信息的地址,然后你可以去抓取他然后进行展示,是非常重要的。

4.开启所有 Endpoint

management.endpoints.web.exposure.include=*

如果要做应用程序的性能监控,这是敏感数据,要加入终结点的一个暴露信息的一个形式,这个*的话代表所有种类,如果说一方只暴露健康的,只暴露内存或者thread的或者bean的,另一方只指定一个用逗号分割,有多个用逗号分割。

暴露所有监控节点日志数据:

(所有信息可以有选择性的暴露)

image.png

5.Micrometer  

(1)Micrometer 是多维度指标收集器,语言中立的API。

(2)通过类路径和配置,可以支持多系统导出数据,集成框架!

(3)Spring Boot 2 Actuator 中包含的指标收集工具。

(4)Spring Boot 1.5,1.4和1.3支持,额外依赖项。

(5)Micrometer 为 Spring Boot 1中 counters 和 gauges 增强功能。

(6)例如,Micrometer Timer 能够生成吞吐量,总时间,最近样本的最大延迟,预先计算的百分位数,百分位柱状图相关的时间序列。和 SLA 边界计数。

(7)支持更多的监控工具如 Prometheus,Datadog, Wavefront,SignalFx, Influx, etc

(8)Spring Boot 2 强化特性

Micromeat 叫微型指标收集器,可以收集并发,吞吐量相关的等信息qps,Wps每秒的读取数量每秒的写入数量,这些数据可以收集起来以后做曲线图,Micromeat叫基准测量。

Count是计数器,这个接口累计被调用次数,还有高阶的话,有可能统计是不一样的,是针对不同的数据类型,不同的统一指标,的数量是不一样,比如统计的可能是过去一秒钟它的并发每秒钟的并发的分值,这都不一样。

6.Spring Boot 2.0增强 Micrometer

(1)JVM 各种参数使用率:

(2)各种内存和缓冲池

(3)与垃圾收集有关的统计

(4)线程利用率

(5)加载/卸载的类的数量

(6)CPU 使用率

(7)Spring MVC 和 WebFlux 请求延迟时间

(8)RestTemplate 延迟时间

(9)缓存使用率

(10)数据源使用率,包括 HikariCP 池指标参数

(11RabbitMQ 连接工广参数

(12)文件描述符使用率使

(13Logback:记录每个级别记录到 Logback 的事件数量

(14)正常运行时间:报告正常运行时间表和表示应用程序绝对启动时间的固定计量表

(15Tomcat 使用情况

7.Micrometer 采集数据图形

image.png

8. Micrometer 支持的监控系统

1)Netflix Atlas  

2)CloudWatch  

3)Datadog  

4)Ganglia  

5)Graphite  

6)InfluxDB  

(7)JMX  

8)New Relic  

9)Prometheus  

10)SignalFx  

11)StatsD (Etsy, dogstatsd, Telegraf, and proprietary formats)  

12)Wavefront  

13)AppOptics  

14)Azure Application Insights  

15)Dynatrace  

16)Elasticsearch  

17)StackDriver

 

二、Java Spring Boot 2.5监控实战

1.开发监控服务端 Spring Boot Admin Server

监控用了可视化工具 Spring Boot Admin Server,构建其服务器端

image.png

引 入Spring Boot 依赖,这里后期作为扩展案例是针对微服务进行升级改造,但独立的话要做一个 Spring Boot 可视化的服务器,启动后会有一个可视化的界面,可以监控和展示各种应用程序。

实战案例:

暴露数据作为被监控方需要展示细节,需要暴露什么信息可以自己设置。

spring.application. name=spring-boot-25x

server.port=8082

#健康数据

management.endpoints.web.exposure.include=*

management.endpoint.health.show-details=ALWAYS

2.Spring Boot Admin 监控中心

image.png

3.例子

服务端最主要的依赖:

Spring Boot Admin Server

image.png

Spring boot的域名的一个server端,收入端一定要有,而且要启用一个很重要的注解(下图)

image.png

接下来会启动一个网页,并且所有注册当前程序中的管理中心客户端的 Spring Boot 程序。

也可以对接不同的数据库,抓取信息存储可以放在内存中。

image.png

模拟一个被监控的 Spring Boot 程序

这里面模拟了一个被监控的思维,模拟程序最主要的就是配置文件里面一定要暴露监控的数据,如果暴露两种的话,在这里面直接来配置就可以了,否则是暴露所有,

(暴露所有)

image.png

作为被监控方作为客户端程序,里面要配置一下监控中心 admin 的例子。

启动 Admin Server 的程序

可以看到其端口为8766

image.png

然后进入:

image.png

启动被监控的程序

image.png

Admin一个spring的客户端的依赖要加进来,客户端程序就具备了数据采集加数据上传的功能。

image.png

刷新后:

image.png

点击进入详情

image.png

JAM 每隔一秒抓取一次信息

image.png

Timer 也有独立的线程

image.png

内存转储:

image.png

允许监控的数据:

image.png

所有监控系统都有日志采集端,并且要与采集端进行对接,需要运行程序或者服务器允许,然后以某种形式传入储存中,储存再有一个展示界面。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
相关文章
|
28天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
132 1
|
12天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
92 62
|
10天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
10天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
25 2
|
18天前
|
自然语言处理 Java API
Spring Boot 接入大模型实战:通义千问赋能智能应用快速构建
【10月更文挑战第23天】在人工智能(AI)技术飞速发展的今天,大模型如通义千问(阿里云推出的生成式对话引擎)等已成为推动智能应用创新的重要力量。然而,对于许多开发者而言,如何高效、便捷地接入这些大模型并构建出功能丰富的智能应用仍是一个挑战。
75 6
|
24天前
|
人工智能 开发框架 Java
总计 30 万奖金,Spring AI Alibaba 应用框架挑战赛开赛
Spring AI Alibaba 应用框架挑战赛邀请广大开发者参与开源项目的共建,助力项目快速发展,掌握 AI 应用开发模式。大赛分为《支持 Spring AI Alibaba 应用可视化调试与追踪本地工具》和《基于 Flow 的 AI 编排机制设计与实现》两个赛道,总计 30 万奖金。
|
22天前
|
缓存 NoSQL Java
Spring Boot与Redis:整合与实战
【10月更文挑战第15天】本文介绍了如何在Spring Boot项目中整合Redis,通过一个电商商品推荐系统的案例,详细展示了从添加依赖、配置连接信息到创建配置类的具体步骤。实战部分演示了如何利用Redis缓存提高系统响应速度,减少数据库访问压力,从而提升用户体验。
56 2
|
29天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用
【10月更文挑战第8天】本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,通过 Spring Initializr 创建并配置 Spring Boot 项目,实现后端 API 和安全配置。接着,使用 Ant Design Pro Vue 脚手架创建前端项目,配置动态路由和菜单,并创建相应的页面组件。最后,通过具体实践心得,分享了版本兼容性、安全性、性能调优等注意事项,帮助读者快速搭建高效且易维护的应用框架。
39 3
|
30天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用
【10月更文挑战第7天】本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,通过 Spring Initializr 创建 Spring Boot 项目并配置 Spring Security。接着,实现后端 API 以提供菜单数据。在前端部分,使用 Ant Design Pro Vue 脚手架创建项目,并配置动态路由和菜单。最后,启动前后端服务,实现高效、美观且功能强大的应用框架。
34 2
|
1月前
|
人工智能 缓存 Java
深入解析Spring AI框架:在Java应用中实现智能化交互的关键
【10月更文挑战第12天】Spring AI 是 Spring 框架家族的新成员,旨在满足 Java 应用程序对人工智能集成的需求。它支持自然语言处理、图像识别等多种 AI 技术,并提供与云服务(如 OpenAI、Azure Cognitive Services)及本地模型的无缝集成。通过简单的配置和编码,开发者可轻松实现 AI 功能,同时应对模型切换、数据安全及性能优化等挑战。
下一篇
无影云桌面