Spring Boot 提供运行时的应用监控和管理功能。本文,我们通过 HTTP 实现对应用的监控和管理。
博客地址:blog.720ui.com/
快速开始
Spring Boot 监控核心是 spring-boot-starter-actuator 依赖,增加依赖后, Spring Boot 会默认配置一些通用的监控,比如 jvm 监控、类加载、健康监控等。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>复制代码
如果,使用 HTTP 调用的方式,还需要 spring-boot-starter-web 依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</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 前缀来设置一些属性。
info.author.realname=梁桂钊
info.author.nickname=LiangGzone复制代码
我们也可以在 application.yml 配置文件中设置一些属性。
info.author:
email: lianggzone@163.com
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 方法访问。
endpoints.shutdown.enabled=true复制代码
定制端点
端点可以在 Spring Boot 配置文件中进行定制。例如,上面,我们开启 shutdown 端点。
endpoints.shutdown.enabled=true复制代码
端点的前缀是,endpoints + “.”+ 端点名。
默认的端点访问路径是根目录下,我们可以通过修改配置,进行定制。
management.context-path=/manage复制代码
此时,我们的访问地址就变成: http://localhost:8080/manage/info
此外,默认监控的接口端口和业务的端口是一致的,我们出于安全性考虑,可以改变端点的访问的端口。
management.port=9090复制代码
我们甚至可以关闭 http 端点。
management.port=-1复制代码
源代码
相关示例完整代码: springboot-action
(完)
更多精彩文章,尽在「服务端思维」微信公众号!