Spring Boot应用监控实战
概述
之前讲过Docker容器的可视化监控,即监控容器的运行情况,包括 CPU使用率、内存占用、网络状况以及磁盘空间等等一系列信息。同样利用SpringBoot作为微服务单元的实例化技术选型时,我们不可避免的要面对的一个问题就是如何实时监控应用的运行状况数据,比如:健康度、运行指标、日志信息、线程状况等等。本文就该问题做一点探索并记录试验过程。
注: 本文首发于 My 公众号 CodeSheep ,可 长按 或 扫描 下面的 小心心 来订阅 ↓ ↓ ↓
入门使用:Actuator插件
Actuator插件是SpringBoot原生提供的一个服务,可以通过暴露端点路由,用来输出应用中的诸多 端点信息。实战一下!
- pom.xml中添加依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
启动Spring Boot应用程序之后,只要在浏览器中输入端点信息就能获得应用的一些状态信息。
常用端点列举如下,可以一个个详细试一下:
- /info 应用基本信息
- /health 健康度信息
- /metrics 运行指标
- /env 环境变量信息
- /loggers 日志相关
- /dump 线程相关信息
- /trace 请求调用轨迹
当然此时只能使用/health
和 /info
端点,其他因为权限问题无法访问。想访问指定端点的话可以在yml配置中添加相关的配置项,比如/metrics
端点则需要配置:
endpoints:metrics:sensitive: false
此时浏览器访问/metrics端点就能得到诸如下面所示的信息:
{"mem": 71529,"mem.free": 15073,"processors": 4,"instance.uptime": 6376,"uptime": 9447,"systemload.average": -1.0,"heap.committed": 48024,"heap.init": 16384,"heap.used": 32950,"heap": 506816,"nonheap.committed": 23840,"nonheap.init": 160,"nonheap.used": 23506,"nonheap": 0,"threads.peak": 25,"threads.daemon": 23,"threads.totalStarted": 28,"threads": 25,"classes": 6129,"classes.loaded": 6129,"classes.unloaded": 0,"gc.copy.count": 74,"gc.copy.time": 173,"gc.marksweepcompact.count": 3,"gc.marksweepcompact.time": 88,"httpsessions.max": -1,"httpsessions.active": 0
}
当然也可以开启全部端点权限,只需如下配置即可:
endpoints:sensitive: false
由于Actuator插件提供的监控能力毕竟有限,而且UI比较简陋,因此需要一个更加成熟一点的工具
Spring Boot Admin监控系统
SBA则是基于Actuator更加进化了一步,其是一个针对Actuator接口进行UI美化封装的监控工具。我们来实验一下。
- 首先来创建一个Spring Boot Admin Server工程作为服务端
pom.xml中加入如下依赖:
<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-server</artifactId><version>1.5.7</version>
</dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-server-ui</artifactId><version>1.5.7</version>
</dependency>
然后在应用主类上通过加注解来启用Spring Boot Admin
@EnableAdminServer
@SpringBootApplication
public class SpringbtAdminServerApplication {public static void main(String[] args) {SpringApplication.run(SpringbtAdminServerApplication.class, args);}
}
启动程序,浏览器打开 localhost:8081
查看Spring Boot Admin主页面:
此时Application一栏空空如也,等待待监控的应用加入
- 创建要监控的Spring Boot应用
pom.xml中加入以下依赖
<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId><version>1.5.7</version>
</dependency>
然后在yml配置中添加如下配置,将应用注册到Admin服务端去:
spring:boot:admin:url: http://localhost:8081client:name: AdminTest
Client应用一启动,Admin服务立马推送来了消息,告诉你AdminTest上线了:
此时去Admin主界面上查看,发现Client应用确实已经注册上来了:
- 查看Detail
- 查看 Metrics
- 查看 Enviroment
- 查看JMX
- 查看Threads
- 查看Trace与详情
点击最上方JOURNAL,会看到被监控应用程序的事件变化:
图中可以清晰地看到,应用从 REGISTRATION → UNKNOWN → UP 的状态跳转。
这样就将Actuator插件提供的所有端点信息在SBA中全部尝试了一遍。
参考文献
- http://codecentric.github.io/spring-boot-admin/1.5.7/
后记
作者更多的原创文章在此,欢迎观赏
My Personal Blog
作者更多的SpringBt实践文章在此:
- Spring Boot应用监控实战
- SpringBoot应用部署于外置Tomcat容器
- ElasticSearch搜索引擎在SpringBt中的实践
- 初探Kotlin+SpringBoot联合编程
- Spring Boot日志框架实践
- SpringBoot优雅编码之:Lombok加持
如果有兴趣,也可以抽点时间看看作者一些关于容器化、微服务化方面的文章:
- 利用K8S技术栈打造个人私有云 连载文章
- 从一份配置清单详解Nginx服务器配置
- Docker容器可视化监控中心搭建
- 利用ELK搭建Docker容器化应用日志中心
- RPC框架实践之:Apache Thrift
- RPC框架实践之:Google gRPC
- 微服务调用链追踪中心搭建
- Docker容器跨主机通信
- Docker Swarm集群初探
- 高效编写Dockerfile的几条准则
可 长按 或 扫描 下面的 小心心 来订阅 CodeSheep,获取更多 务实、能看懂、可复现的 原创文 ↓↓↓
Spring Boot应用监控实战相关推荐
- Spring Boot 应用监控:Actuator与 Admin
第 III 部分Spring Boot 系统监控.测试与运维 Spring Boot 应用监控:Actuator与 Admin <Spring Boot 实战开发>(陈光剑) -- 基于 ...
- Spring Boot 高效入门实战
凭借开箱即用,远离繁琐的配置等特性,Spring Boot 已经成为 Java 开发者人人必学必会的开源项目.那么开发者该如何快速上手Spring Boot 呢? 进入Spring Boot世界 Ja ...
- Spring Boot 揭秘与实战(二) 数据缓存篇 - EhCache
文章目录 1. EhCache 集成 2. 源代码 本文,讲解 Spring Boot 如何集成 EhCache,实现缓存. 在阅读「Spring Boot 揭秘与实战(二) 数据缓存篇 - 快速入门 ...
- Java Spring Boot 2.0 实战之制作Docker镜像并推送到Docker Hub和阿里云仓库
内容摘要:大规模集群快速部署Java应用,需要制作Docker镜像,本次课程详细介绍如何制作Java程序的Docker镜像文件,深入解析DockerFile核心参数,以及实践演练把我们制作的Docke ...
- Spring Boot Redis Cluster 实战干货
转载自 Spring Boot Redis Cluster 实战干货 添加配置信息 spring.redis:database: 0 # Redis数据库索引(默认为0)#host: 192.168 ...
- 19年8月 字母哥 第三章 spring boot 配置原理实战 用热点公司网不行
第三章 spring boot 配置原理实战 3.1.结合配置加载讲解bean自动装配原理 3.2.详解YAML语法及占位符语法 3.3.获取自定义配置的两种实现方法 3.4.配置文件注入值数据校验 ...
- 使⽤用 Spring Boot Actuator 监控应⽤
1.美图 2.概述 微服务的特点决定了功能模块的部署是分布式的,⼤部分功能模块都是运行在不同的机器上,彼此通过服务调⽤进行交互,前后台的业务流会经过很多个微服务的处理和传递,出现异常如何快速定位便成为 ...
- Spring Boot 揭秘与实战(二) 数据缓存篇 - Guava Cache
本文,讲解 Spring Boot 如何集成 Guava Cache,实现缓存. 博客地址:blog.720ui.com/ 在阅读「Spring Boot 揭秘与实战(二) 数据缓存篇 - 快速入门」 ...
- 高级版的 jvisualvm :Spring Boot Admin 监控 Spring Boot 微服务项目
前奏:先说一下 Java VisualVM Java VisualVM 是一个能够监控 JVM 的 jdk 自带的图形化工具: 在 $JAVA_HOME/bin 目录下,可直接运行它. 要想监控远程服 ...
最新文章
- Exchange 2016 證書無效如何處理?
- Codeforces 1108 E2(线段树+思维)
- 自省:我为什么没有成功--对照35前务必完成的12跳
- window下Ionic环境安装
- 深入浅出SharePoint——站点的部署
- 德国Vue.js2终极开发教程024--32
- TiledMap 使用
- C#-WPF实现抽屉效果抽屉式风格主题框架源码-使用MaterialDesignThemes实现WPF炫酷漂亮的效果-提供Demo下载
- foobar2000 Mac版终于来了
- HackerRank SQL练习题答案大全
- 2022年全球及中国叔十二烷基硫醇行业头部企业市场占有率及排名调研报告
- 使用计算机的场所和用途,天天在使用计算机,很多东西我竟然不知道!
- 数智经济转型下如何抢占文创发展新机遇?中国移动咪咕聚焦新一代年轻人需求
- 2022年必看的18个HR面面试题是这些【值得收藏】
- 我给梵高当Tony:这三款AI绘图工具,就离谱
- 小程序项目:微信小程序美容理发店预约系统app——计算机毕业设计
- HL7消息解析----去掉校验
- iOS-自定义键盘选择器
- 【微信抢红包】红包助手-修改版
- 浅谈数据结构以及其特点