内容简介:
一、Spring Boot 实战 – 应用程序性能监控 APM
二、Spring Boot 2.4 实战 –内置性能监控 Endpoint
三、Java Spring Boot 2.5 监控实战
欢迎收看 spring boat 实战开发系列课程,这节课也讲另外一个非常重要的主题叫
应用程序的性能监控。在生产环境下,应用程序的性能监控是非常重要的,开发阶段可
能还不严重,但是生态环境下的话有可能基于高并发,比如双 11 等带来的这些流量冲击
问题,可能应用程序在生产环境下,会因为一些配置参数等网络问题,导致应用程序性
能可能出现这个问题,比如在高并发等会导致大量的内存耗尽等问题,或者应用程序代
码本身在前期开发设计阶段做得不够详细,会出现缓慢的内存泄漏,都需要去做应用程
序的性能监控,保证应用程序的强壮性,以及我们后期的维护等。
基于 Spring Boot 应用程序,我们如何做应用程序的性能监控。对于微服务架构的
市场开发课程,也是很重要的一个铺垫,大家需要实战操作去理解我们整个课程内容,
包括我们会讲非常重要的里面提供了一个组件,executed 还有社区里面一个重要的开发
项目,Spring Boot2.5,来帮我们去提供可视化的一套接口,Spring Boot 本身也提供
这种对应的一些接口,你可以去抓取这些原始的数据,我们在后续使用 Spring Boot 进
行开发的话,这些信息也都可以抓得到,只不过我们需要大家去了解,结合自己的整个
监控需求,进行配置相应的接口。
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 的系列都给你提供了一个暴露的端点
或者叫终结点。
通过网络给你提供了一个数据暴露的接口,现在就可以用第三方的一些展示数据或
自己来开发,开发一个 web 界面来去展示。
1、 web 对接可以抓取原始的单位信息, 可以通过 HTTP 协议或者我们 JMX 来暴露
可以对接 prometheus 原生环境下比较重要的一个心理监控的一套解决方案。
例子: 2.0 以后启动了一个我们说的这样一个应用程序, 这个地址上下面有很多子目
录, 对应的这些不同信息的地址, 然后你可以去抓取他然后进行展示, 是非常重要的。
2、 2.0 默认监控 EndPoint
后面看如何和实际项目进行结合, 讲了很多理论知识和概念, 也是希望告诉大家这
里面对于我们的后续大家开发使用 Spring Boot 应用程序, 包括 recipe 项目前后端分离
的架构的项目, 包括我们说微服务架构项目集群, 这都是非常重要的一个方式, 而且我
们整个微架构进行监控的话, 也是在这个基础上进行了升级改造。
你如果要做应用程序的性能监控, 这是敏感数据, 你要加入终结点的一个暴露信息
的一个形式, 这个*的话代表所有种类, 如果说我只暴露健康的, 我只暴露内存或者 thr
ead 的或者 bean 的, 你只指定一个用逗号分割, 有多个用逗号分割。
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 是个计数器, 这个接口累计被调用次数, 还有我们说高阶的话, 有可能统计
的我们说是不一样的, 里面我们说的是针对不同的数据类型, 它不同的统一指标, 它的
数量是不一样, 比如我们统计的可能是过去一秒钟它的并发每秒钟的并发的分值, 这都
不一样。
1) JVM 各种参数使用率
2) 各种内存和缓冲池
3) 与垃圾收集有关的统计
4) 线程利用率
5) 加载/卸载的类的数量
6) CPU 使用率
7) Spring MVC 和 WebFlux 请求延迟时间
8) RestTemplate 延迟时间
9) 缓存使用率
10) 数据源使用率, 包括 HikariCP 池指标参数
11) RabbitMQ 连接工厂参数
12) 文件描述符使用率使
13) Logback: 记录每个级别记录到 Logback 的事件数量
14) 正常运行时间: 报告正常运行时间表和表示应用程序绝对启动时间的固定计量
表
15) Tomcat 使用情况
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
Spring boot 的域名的一个 server 端, 收入端一定要有, 而且要启用一个很重要的注解。
这里面模拟了一个被监控的思维, 模特成语主要里面最主要的就是它配置文件里面
一定要暴露监控的数据, 如果暴露两种的话, 在这里面直接来配置就可以了, 否则是暴
露所有,
另外的话就是说这里面作为作为被监控方作为客户端程序的话, 你这里面要配置一
下监控中心 admin 的例子。
Admin 一个 spring 的客户端的依赖要加进来, 客户端程序就具备了数据采集加数据
上传的功能。
据采集加数据
上传的功能。
[外链图片转存中…(img-mtyRVoRy-1667885473145)]
[外链图片转存中…(img-RdEPgCCm-1667885473145)]