Spring Boot应用监控的实战教程

概述

Spring Boot 监控核心是 spring-boot-starter-actuator 依赖,增加依赖后, Spring Boot 会默认配置一些通用的监控,比如 jvm 监控、类加载、健康监控等。

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

入门使用:Actuator插件

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

pom.xml中添加依赖:

?


1

2

3

4

<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端点则需要配置:

?


1

2

3

endpoints:

 metrics:

 sensitive: false

此时浏览器访问/metrics端点就能得到诸如下面所示的信息:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

{

 "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

}

当然也可以开启全部端点权限,只需如下配置即可:

?


1

2

endpoints:

 sensitive: false

由于Actuator插件提供的监控能力毕竟有限,而且UI比较简陋,因此需要一个更加成熟一点的工具

Spring Boot Admin监控系统

SBA则是基于Actuator更加进化了一步,其是一个针对Actuator接口进行UI美化封装的监控工具。我们来实验一下。

首先来创建一个Spring Boot Admin Server工程作为服务端
pom.xml中加入如下依赖:

?


1

2

3

4

5

6

7

8

9

10

11

<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

?


1

2

3

4

5

6

7

8

@EnableAdminServer

@SpringBootApplication

public 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中加入以下依赖

?


1

2

3

4

5

<dependency>

 <groupId>de.codecentric</groupId>

 <artifactId>spring-boot-admin-starter-client</artifactId>

 <version>1.5.7</version>

</dependency>

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

?


1

2

3

4

5

6

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中全部尝试了一遍。

参考文献

http://codecentric.github.io/spring-boot-admin/1.5.7/

原文地址:https://www.cnblogs.com/duanxz/p/9559385.html

时间: 2024-11-05 19:30:58

Spring Boot应用监控的实战教程的相关文章

Spring Boot 企业级应用开发实战

Spring Boot 企业级应用开发实战[下载地址:https://pan.baidu.com/s/1SbB-auGkUN6r2i6dtv7t_w ] Spring Boot是目前Spring技术体系中炙手可热的框架之一,既可用于构建业务复杂的企业应用系统,也可以开发高性能和高吞吐量的互联网应用.Spring Boot框架降低了Spring技术体系的使用门槛,简化了Spring应用的搭建和开发过程,提供了流行的第三方开源技术的自动集成. Spring Boot是由Pivotal团队提供的全新框

Spring Boot从入门到进阶教程系列 -- 集成Freemarker配置

步骤1. 我们可先配置application.properties的Freemarker基本配置,可参考第一篇教程[Spring Boot从入门到进阶教程系列 -- 外部Tomcat多方式启动,加密解密配置数据] 核心配置 ######################################################## ### freemarker ######################################################## spring.fr

关于spring boot启动监控端点的方法(spring-boot-starter-actuator)

前言: 在spring boot的旧版本中,监控端点(如/env)是默认开启的,所以只要项目正常启动,就能通过url获取信息.可是在2.0版本以后,由于安全性考虑,除了/health和/info的端点,默认都是不暴露的. 那么,要怎么开启监控点呢? 启动.暴露端点的配置代码如下:(放在application.properties文件中) #--------------关于actuator暴露端点的配置(version: Spring-Boot-2.0)----------------- # 说明

Spring Boot Actuator [监控与管理]

1. 如何添加 2. actuator 的原生端点(API) 2.1 应用类配置 2.1.1 http://localhost:8080/actuator/conditions 2.1.2 http://localhost:8080/actuator/beans 2.1.3 http://localhost:8080/actuator/configprops 2.1.4 http://localhost:8080/actuator/env & http://localhost:8080/actu

Spring Boot 企业级应用开发实战 刘伟东-2018年3月第一版

Spring会自动搜索某些路径下的Java类 并将这些类注册微Bean实例,这样就省去了所有Bean都配置在XML的麻烦 Spring会适当地将显示指定路径下的的类全部注册微Spring Bean . Spring通过使用特殊的注解来标注Bean类 @Component 标注一个普通的Spring Bean类 @Controller 标注一个控制器组件类 @Service 标注一个服务组件类 @Repository 标注一个仓库组件类 甚至SQL语句也可以注解 Spring Boot是伴随着Sp

Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控等!

前言 去年我们项目做了微服务1.0的架构转型,但是服务监控这块却没有跟上.这不,最近我就被分配了要将我们核心的微服务应用全部监控起来的任务.我们的微服务应用都是SpringBoot 应用,因此就自然而然的想到了借助Spring Boot 的Actuator 模块. 本篇是我在完成这个工单之后,对Spring Boot Actuator模块 学习应用的总结.在本篇文章中,你可以学习到: 1.Spring Boot Actuator 的快速使用入门2.Spring Boot Actuator 的一些

Spring Boot Actuator 监控实践

Actuator是Spring Boot提供的对应用系统的自省和监控的集成功能,可以查看应用配置的详细信息,例如自动化配置信息.创建的Spring beans以及一些环境属性等. 1.创建Spring Boot工程,pom.xml的配置如下 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>

Spring Boot 2.0.1 入门教程

简介 Spring Boot是Spring提供的一套基础配置环境,可以用来快速开发生产环境级别的产品.尤其适合开发微服务架构,省去了不少配置麻烦.比如用到Spring MVC时,只需把spring-boot-starter-web依赖添加到Maven依赖中即可.另外它还有如下特性: 创建独立的Spring项目 内置Tomcat, Jetty,Undertow 初始POM配置文件以简化Maven配置 尽可能的自动配置Spring 提供生产环境功能,如统计,健康检查和外部配置 无需XML配置和代码生

spring boot 添加监控

在application.properties中,添加 spring.application.name=Spring Boot Admin Web spring.boot.admin.url=http://localhost:${server.port} spring.jackson.serialization.indent_output=true endpoints.health.sensitive=false management.security.enabled=false ribbon.