Spring Boot应用监控的实战教程

概述

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

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

入门使用: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主页面:

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: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/

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

您可能感兴趣的文章:

  • 详解使用spring boot admin监控spring cloud应用程序
  • spring-boot使用Admin监控应用的方法
  • springboot 使用Spring Boot Actuator监控应用小结
  • Spring Boot使用Druid进行维度的统计和监控
  • 详解Spring boot Admin 使用eureka监控服务
  • 详解Spring Boot Admin监控服务上下线邮件通知
  • 详解关于springboot-actuator监控的401无权限访问
  • 详解spring-boot actuator(监控)配置和使用
  • SpringBoot 监控管理模块actuator没有权限的问题解决方法
  • 初识Spring boot监控
(0)

相关推荐

  • spring-boot使用Admin监控应用的方法

    Spring Boot提供的监控接口,例如:/health./info等等,实际上除了之前提到的信息,还有其他信息业需要监控:当前处于活跃状态的会话数量.当前应用的并发数.延迟以及其他度量信息.下面我们来了解如何使用spring-boot-admin来监控我们的系统. 一.创建spring-boot-admin服务 首先使用Spring Tool Suite(简称STS)创建一个简单的admin工程: New > Spring Starter Project,按下面步骤填写各项,一步步完成项目创

  • 详解Spring Boot Admin监控服务上下线邮件通知

    本文介绍了Spring Boot Admin监控服务上下线邮件通知,分享给大家,具体如下: 微服务架构下,服务的数量少则几十,多则上百,对服务的监控必不可少. 如果是以前的单体项目,启动了几个项目是固定的,可以通过第三方的监控工具对其进行监控,然后实时告警. 在微服务下,服务数量太多,并且可以随时扩展,这个时候第三方的监控功能就不适用了,我们可以通过Spring Boot Admin连接注册中心来查看服务状态,这个只能在页面查看. 很多时候更希望能够自动监控,通过邮件告警,某某服务下线了这样的功

  • 详解使用spring boot admin监控spring cloud应用程序

    Spring Boot提供的监控接口,例如:/health./info等等,实际上除了之前提到的信息,还有其他信息业需要监控:当前处于活跃状态的会话数量.当前应用的并发数.延迟以及其他度量信息. 最近在找一个spring cloud的监控组件,要求粒度要到每一个接口的,hystrix dashboard显然不适合,也不是这个应用场景.后来发现了spring boot admin这个神器,可以注册到Eureka和spring cloud无缝整合,页面AngularJS写的还算凑合,里面包含有许多功

  • SpringBoot 监控管理模块actuator没有权限的问题解决方法

    SpringBoot 1.5.9 版本加入actuator依赖后,访问/beans 等敏感的信息时候报错,如下 Tue Mar 07 21:18:57 GMT+08:00 2017 There was an unexpected error (type=Unauthorized, status=401). Full authentication is required to access this resource. 肯定是权限问题了.有两种方式: 1.关闭权限:application.prop

  • 详解关于springboot-actuator监控的401无权限访问

    今天心血来潮看一下spring监控 访问/beans 等敏感的信息时候报错 Tue Mar 07 21:18:57 GMT+08:00 2017 There was an unexpected error (type=Unauthorized, status=401). Full authentication is required to access this resource. application.properties添加配置参数 management.security.enabled=

  • 初识Spring boot监控

    最近对devOps这个话题有点兴趣,所以研究了一下monitor相关的开源项目,翻到medium上的一篇文章,而且实际项目中也曾看到devOps组的同事搭过类似的监控,就想过把瘾,了解一下监控可视化. 被监控服务配置 本地正好有spring-boot的项目,并且也依赖了jolokia(主要就是为了把JMX的mbean通过HTTP暴露出去) 项目配置也少不了 endpoints: enabled: true jmx: enabled: true jolokia: enabled: true man

  • 详解spring-boot actuator(监控)配置和使用

    在生产环境中,需要实时或定期监控服务的可用性.spring-boot 的actuator(监控)功能提供了很多监控所需的接口.简单的配置和使用如下: 1.引入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 如果使用http调用的

  • Spring Boot使用Druid进行维度的统计和监控

    Druid Druid:一款为监控而生的数据库连接池框架,整个项目由数据库连接池.插件框架和SQL解析器组成. Druid功能介于PowerDrill和Dremel之间,它几乎实现了Dremel的所有功能,并且从PowerDrill吸收一些有趣的数据格式.Druid允许以类似Dremel和PowerDrill的方式进行单表查询,同时还增加了一些新特性,如为局部嵌套数据结构提供列式存储格式.为快速过滤做索引.实时摄取和查询.高容错的分布式体系架构等. Spring Boot spring框架作为J

  • 详解Spring boot Admin 使用eureka监控服务

    前言 最近刚好有空,来学习一下如何搭建spring boot admin环境.其中遇到很多的坑. 网上大多都是使用admin-url的方式直接来监控的,感觉一点也不灵活,这不是我想要的结果,所以本篇介绍借助eureka服务注册和发现功能来灵活监控程序. 本文主要记录spring boot admin的搭建过程,希望能有所帮助.其实非常的简单,不要被使用常规方式的误导! 环境介绍 IDE:intellij idea jdk: java8 maven:3.3.9 spring boot:1.5.6

  • springboot 使用Spring Boot Actuator监控应用小结

    微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台的业务流会经过很多个微服务的处理和传递,出现了异常如何快速定位是哪个环节出现了问题? 在这种框架下,微服务的监控显得尤为重要.本文主要结合Spring Boot Actuator,跟大家一起分享微服务Spring Boot Actuator的常见用法,方便我们在日常中对我们的微服务进行监控治理. Actuator监控 Spring Boot使用"习惯优于配置的理念",采用包

随机推荐