博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot应用监控实战
阅读量:7194 次
发布时间:2019-06-29

本文共 2722 字,大约阅读时间需要 9 分钟。

hot3.png

Profile



概述

之前讲过,即监控容器的运行情况,包括 CPU使用率、内存占用、网络状况以及磁盘空间等等一系列信息。同样利用SpringBoot作为微服务单元的实例化技术选型时,我们不可避免的要面对的一个问题就是如何实时监控应用的运行状况数据,比如:健康度、运行指标、日志信息、线程状况等等。本文就该问题做一点探索并记录试验过程。

注: 本文首发于 ,欢迎光临 !


入门使用:Actuator插件

Actuator插件是SpringBoot原生提供的一个服务,可以通过暴露端点路由,用来输出应用中的诸多 端点信息。实战一下!

  • pom.xml中添加依赖:
org.springframework.boot
spring-boot-starter-actuator

启动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中加入如下依赖:

de.codecentric
spring-boot-admin-server
1.5.7
de.codecentric
spring-boot-admin-server-ui
1.5.7

然后在应用主类上通过加注解来启用Spring Boot Admin

@EnableAdminServer@SpringBootApplicationpublic class SpringbtAdminServerApplication {	public static void main(String[] args) {		SpringApplication.run(SpringbtAdminServerApplication.class, args);	}}

启动程序,浏览器打开 localhost:8081 查看Spring Boot Admin主页面:

Spring Boot Admin主页面

此时Application一栏空空如也,等待待监控的应用加入

  • 创建要监控的Spring Boot应用

pom.xml中加入以下依赖

de.codecentric
spring-boot-admin-starter-client
1.5.7

然后在yml配置中添加如下配置,将应用注册到Admin服务端去:

spring:  boot:    admin:      url: http://localhost:8081      client:        name: AdminTest

Client应用一启动,Admin服务立马推送来了消息,告诉你AdminTest上线了:

应用上线推送消息

此时去Admin主界面上查看,发现Client应用确实已经注册上来了:

Client应用已注册上来

  • 查看Detail

Detail信息

  • 查看 Metrics

Metrics信息

  • 查看 Enviroment

Enviroment信息

  • 查看JMX

JMX信息

  • 查看Threads

Threads信息

  • 查看Trace与详情

Trace信息

点击最上方JOURNAL,会看到被监控应用程序的事件变化:

应用程序的事件变化信息

图中可以清晰地看到,应用从 REGISTRATION → UNKNOWN → UP 的状态跳转。

这样就将Actuator插件提供的所有端点信息在SBA中全部尝试了一遍。


参考文献


后记

作者更多的原创文章:

作者一些其他容器化应用方面的文章:



转载于:https://my.oschina.net/hansonwang99/blog/1805402

你可能感兴趣的文章
设计模式——原型模式
查看>>
JSON
查看>>
vuex总结
查看>>
模板集合
查看>>
delphi datasnap
查看>>
Druid数据库连接池使用
查看>>
http://blog.csdn.net/colin3dmax/article/details/4289570
查看>>
C#字符串处理(String与StringBuilder)
查看>>
排序算法(sorting)
查看>>
【bug】“Mat map” opencv全局变量不明确
查看>>
combobox 属性、事件、方法
查看>>
Hibernate配置文件详解
查看>>
条件注释判断浏览器<!--[if !IE]><!--[if IE]><!--[if lt IE 6]><!--[if gte IE 6]>
查看>>
如何使用JDK1.6 API
查看>>
linux下windows访问samba服务器
查看>>
small team
查看>>
yum国内镜像配置
查看>>
python 序列化
查看>>
嵌入式开发之davinci--- 8127 中osd yuv 数据分析
查看>>
机器视觉---四部 奇书
查看>>