Spring Boot 提供运行时的应用监控和管理功能。本文,我们通过 HTTP 实现对应用的监控和管理。

快速开始

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

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-actuator</artifactId>
  4. </dependency>

如果,使用 HTTP 调用的方式,还需要 spring-boot-starter-web 依赖。

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. </dependency>

监控和管理端点

以最新的 Spring Boot 的版本 1.4.3 为准,列出目前支持的监控。

HTTP方法 路径 描述
GET /actuator 查看所有EndPoint的列表,需要加入 Spring HATEOAS 支持
GET /autoconfig 查看应用的自动配置的使用情况
GET /beans 查看应用的所有Bean的信息
GET /configprops 查看应用的所有配置属性
GET /dump 查看应用的线程状态信息
GET /env 查看应用的所有环境信息
GET /flyway 查看已经有迁徙路线数据库迁移
GET /health 查看应用健康指标
GET /info 查看应用信息
GET /liquibase 查看已经有liquibase数据库迁移应用
GET /mappings 查看所有url映射
GET /metrics 查看应用基本指标
POST /shutdown 允许优雅关闭当前应用(默认情况下不启用)
GET /trace 查看基本的HTTP跟踪信息
GET /docs 查看文档,需要依赖 spring-boot-actuator-docs
GET /heapdump 返回一个gzip压缩 hprof 堆转储文件
GET /jolokia 暴露JMX bean(当jolokia路径)
GET /logfile 查看日志文件的内容(如果logging.file或logging.path属性已设置)。支持使用对HTTP范围标头到日志文件的部分恢复内容。
 

health 应用健康指标

我们可以通过 http://localhost:8080/health , 统计系统的状况,默认里面目前只有系统状况和磁盘状况。这些检测器都通过 HealthIndicator 接口实现,下篇文章,我会讲解到通过 HealthIndicator 接口实现自定义健康检测。

info 查看应用信息

默认情况下,只会返回一个空的 json 内容。我们可以在 application.properties 配置文件中通过 info 前缀来设置一些属性。

  1. info.author.realname=梁桂钊
  2. info.author.nickname=LiangGzone

我们也可以在 application.yml 配置文件中设置一些属性。

  1. info.author:
  2. email: lianggzone@163.com
  3. blog: http://blog.720ui.com

metrics 应用基本指标

我们可以通过 http://localhost:8080/metrics, 获取当前应用的各类重要度量指标,比如:内存信息、线程信息、垃圾回收信息等。

我们还可以通过 /metrics/{name} 接口来更细粒度的获取度量信息,比如我们可以通过访问 /metrics/mem.free 来获取当前可用内存数量。

trace 基本的HTTP跟踪信息

查看基本的 HTTP 跟踪信息。默认情况下,跟踪信息的存储采用 org.springframework.boot.actuate.trace.InMemoryTraceRepository 实现的内存方式,始终保留最近的 100 条请求记录。

shutdown关闭当前应用

shutdown 端点默认是不启用的,我们可以在 application.properties 中开启。此外,shutdown 端点不支持 GET 请求,我们需要通过 POST 方法访问。

  1. endpoints.shutdown.enabled=true

定制端点

端点可以在 Spring Boot 配置文件中进行定制。例如,上面,我们开启 shutdown 端点。

  1. endpoints.shutdown.enabled=true

端点的前缀是,endpoints + “.”+ 端点名。

默认的端点访问路径是根目录下,我们可以通过修改配置,进行定制。

  1. management.context-path=/manage

此时,我们的访问地址就变成: http://localhost:8080/manage/info

此外,默认监控的接口端口和业务的端口是一致的,我们出于安全性考虑,可以改变端点的访问的端口。

  1. management.port=9090

我们甚至可以关闭 http 端点。

  1. management.port=-1

源代码

相关示例完整代码: springboot-action

(完)

如果觉得我的文章对你有帮助,请随意打赏。

Spring Boot 揭秘与实战(九) 应用监控篇 - HTTP 应用监控的更多相关文章

  1. Spring Boot 揭秘与实战(九) 应用监控篇 - 自定义监控端点

    文章目录 1. 继承 AbstractEndpoint 抽象类 2. 创建端点配置类 3. 运行 4. 源代码 Spring Boot 提供的端点不能满足我们的业务需求时,我们可以自定义一个端点. 本 ...

  2. Spring Boot 揭秘与实战(九) 应用监控篇 - HTTP 健康监控

    文章目录 1. 内置 HealthIndicator 监控检测 2. 自定义 HealthIndicator 监控检测 3. 源代码 Health 信息是从 ApplicationContext 中所 ...

  3. Spring Boot 揭秘与实战(一) 快速上手

    文章目录 1. 简介 1.1. 什么是Spring Boot 1.2. 为什么选择Spring Boot 2. 相关知识 2.1. Spring Boot的spring-boot-starter 2. ...

  4. Spring Boot 揭秘与实战 附录 - Spring Boot 公共配置

    Spring Boot 公共配置,配置 application.properties/application.yml 文件中. 摘自:http://docs.spring.io/spring-boot ...

  5. Spring Boot 揭秘与实战 自己实现一个简单的自动配置模块

    文章目录 1. 实战的开端 – Maven搭建 2. 参数的配置 - 属性参数类 3. 真的很简单 - 简单的服务类 4. 自动配置的核心 - 自动配置类 5. spring.factories 不要 ...

  6. Spring Boot 揭秘与实战 源码分析 - 工作原理剖析

    文章目录 1. EnableAutoConfiguration 帮助我们做了什么 2. 配置参数类 – FreeMarkerProperties 3. 自动配置类 – FreeMarkerAutoCo ...

  7. Spring Boot 揭秘与实战 源码分析 - 开箱即用,内藏玄机

    文章目录 1. 开箱即用,内藏玄机 2. 总结 3. 源代码 Spring Boot提供了很多”开箱即用“的依赖模块,那么,Spring Boot 如何巧妙的做到开箱即用,自动配置的呢? 开箱即用,内 ...

  8. Spring Boot 揭秘与实战(八) 发布与部署 - 远程调试

    文章目录 1. 依赖 2. 部署 3. 调试 4. 源代码 设置远程调试,可以在正式环境上随时跟踪与调试生产故障. 依赖 在 pom.xml 中增加远程调试依赖. <plugins> &l ...

  9. Spring Boot 揭秘与实战(八) 发布与部署 - 开发热部署

    文章目录 1. spring-boot-devtools 实现热部署 2. Spring Loaded 实现热部署 3. 模板文件热部署 4. 源代码 Spring Boot 支持页面与类文件的热部署 ...

随机推荐

  1. Ajax实现跨域访问的两种方法

    调程序时遇到"已拦截跨源请求:同源策略禁止读取位于--的远程资源",这是因为通过ajax调用其他域的接口会有跨域问题. 解决方法如下: 方法一:服务器端(PHP)设置header头 ...

  2. 时间序列八: 以NASA之名: 卡尔曼滤波器

    目录 以NASA之名: 卡尔曼滤波器 引言 荣耀骑士 卡尔曼滤波器* 参考文献: 以NASA之名: 卡尔曼滤波器 'That's one small step for man,one giant le ...

  3. 一、I/O操作(File文件对象)

    一.File类 Java里,文件和文件夹都是用File代表 1.使用绝对路径或者相对路径创建File对象 使用绝对路径或者相对路径创建File对象 package File; import java. ...

  4. NOIP2003加分二叉树

    题目描述 设一个n个节点的二叉树tree的中序遍历为(1,2,3,…,n),其中数字1,2,3,…,n为节点编号.每个节点都有一个分数(均为正整数),记第ii个节点的分数为di,treedi,tree ...

  5. Python面向对象之继承

    前言: 继承是面向对象的3大特性之一,对于继承一点要注意一下4点. 一.基本查找 如果子类继承了父类,子类的实例化对象,没有的方法和属性会去父类找 class Parent(object): #父类 ...

  6. TLS与SSL之间关系——SSL已经被IEFT组织废弃,你可以简单认为TLS是SSL的加强版

    TLS与SSL之间关系 原文地址:SSL vs. TLS - What's the Difference? from:https://juejin.im/post/5b213a0ae51d4506d4 ...

  7. [转]java异常中Exception捕获不到的异常

    一 概念 众所周知java提供了丰富的异常类,这些异常类之间有严格的集成关系,分类为 父类Throwable Throwable的两个子类Error和Exception Exception的两个子类C ...

  8. python 判断变量是否存在 防止报错

    Python判断变量是否存在 方法一:使用try: ... except NameError: .... try: var except NameError: var_exists = False e ...

  9. oracle函数NVL,NVL2和NULLIF之间的区别和使用

    oracle用这么几个函数,可以帮助我们解决数据上null或0的处理 1.NVL()函数 1.1)介绍:NVL(expr1,expr2),若expr1为null, 返回expr2; 不为null,返回 ...

  10. bootstrap 弹框使用

    首先需要准备bootstrap.css,bootstrap .js  jquery 我这里有写好的下载地址如下: https://pan.baidu.com/s/1miMahXe  秘钥:tgts & ...