Springboot actuator应用后台监控实现
作者:知识追寻者 发布时间:2022-02-01 11:48:16
一 前言
springboot 额外的特色是提供了后台应用监控,可以通过 HTTP 或者 JMX的方式管理监控应用,本文主讲HTTP方式;其主要的功能是监控应用的健康状态,查看环境变量等;
二 pom.xml
springboot 2.1.1,主要引入 actuator 依赖,web依赖用于测试;
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
三 默认开启端点
3.1 默认端点 health
直接编写主程序入口,启动;浏览器输入 http://localhost:8080/actuator/health;结果如下,状态是UP;
翻翻源码heath状态码如下
public OrderedHealthAggregator() {
this.setStatusOrder(Status.DOWN, Status.OUT_OF_SERVICE, Status.UP, Status.UNKNOWN);
}
DOWN 服务无法获得,状态码503;
.OUT_OF_SERVICE 服务无法获得,状态码503;
UP 获得服务,状态码200;
UNKNOWN 获得未知服务,状态码200;
在 application.yml 中配置 healthy 信息 示例如下:
management: endpoint: health: show-details: always
打印详细信息:
基本配置如下:
never :默认,表示不显示详细信息;when-authorized:详细信息显示给 认证过的用户;使用
management.endpoint.health.roles 配置always: 显示详细信息给所有用户3.2 默认端点 info
浏览器输入 http://localhost:8080/actuator/info; 展示空信息如下图:
在application.yml 中 配置工程 info 信息 示例如下;
#配置信息info: actuator: name: springboot-actutor version: 1.0.0 author: zszxz
展示结果如下:
四 HTTP端点说明
端点 | 端点描述 | 默认值 |
---|---|---|
auditevents | 当前应用的审计事件 | Yes |
beans | 显示spring IOC 容器加载的所有bean | Yes |
caches | 显示可获得的缓存 | Yes |
conditions | 显示自动配置通过condition判断匹配或者不匹配的配置信息 | Yes |
configprops | 显示 通过 @ConfigurationProperties 配置的属性信息 | Yes |
env | spring环境变量属性信息 | Yes |
flyway | 显示flyway 配置数据库已经迁移的信息 | Yes |
health | 显示应用的健康信息 | Yes |
httptrace | 显示 HTTP 轨迹信息默认最新的100 HTTP request或response | Yes |
info | 显示自定义的应用信息 | Yes |
integrationgraph | 显示spring 整合 graph 信息 | Yes |
loggers | 显示配置文件中日志修改信息 | Yes |
liquibase | 显示 任意的 Liquibase 数据库已经迁移的信息 | Yes |
metrics | 显示当前应用的指标 | Yes |
mappings | 显示 @RequestMapping paths. 配置的路径信息 | Yes |
scheduledtasks | 显示任务调度信息 | Yes |
sessions | 删除或者恢复Spring Session会话,不支持web响应式编程 | Yes |
shutdown | 关闭应用 | No |
threaddump | 执行一个线程转储 | Yes |
五 配置开启端点
application.yml 中配置需要开启的端点,其中 * 表示开启所有端点,示例如下:
management:
endpoints:
web:
exposure:
# 使用通配符 * 表示匹配所有端点
# 排除的端点
exclude: caches
# 包括的端点
include: info,health,beans,env,shutdown,threaddump
5.1 threaddump示例
http://localhost:8080/actuator/threaddump ;用于返回线程快照,分析线程阻塞,死锁等,部分内容如下
{
"threads": [{
"threadName": "DestroyJavaVM",
"threadId": 41,
"blockedTime": -1,
"blockedCount": 0,
"waitedTime": -1,
"waitedCount": 0,
"lockName": null,
"lockOwnerId": -1,
"lockOwnerName": null,
"inNative": false,
"suspended": false,
"threadState": "RUNNABLE",
"stackTrace": [],
"lockedMonitors": [],
"lockedSynchronizers": [],
"lockInfo": null
}
5.2 beans示例
http://localhost:8080/actuator/beans ; 用于返回 spring 容器加载的所有bean,部分内容如下;
{
"contexts": {
"application": {
"beans": {
"endpointCachingOperationInvokerAdvisor": {
"aliases": [],
"scope": "singleton",
"type": "org.springframework.boot.actuate.endpoint.invoker.cache.CachingOperationInvokerAdvisor",
"resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/EndpointAutoConfiguration.class]",
"dependencies": ["environment"]
},
"defaultServletHandlerMapping": {
"aliases": [],
"scope": "singleton",
"type": "org.springframework.web.servlet.HandlerMapping",
"resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
"dependencies": []
}
5.3 关闭应用示例
普通情况下是没有开启这个配置,是比较危险的动作,会导致应用停止;修改application.yml配置如下
management:
endpoints:
web:
exposure:
# 使用通配符 * 表示匹配所有端点
# 排除的端点
exclude: caches
# 包括的端点
include: info,health,beans,env,shutdown
endpoint:
health:
show-details: always
# 开启关闭应用 需要post请求
shutdown:
enabled: true
访问地址 http://localhost:8080/actuator/shutdown; 注意仅支持使用POST请求,否则 会 405错误;
六 CORS 支持
application.yml 修改配置如下, allowed-origins 中允许跨域的ip地址; allowed-methods 配置 允许通过的请求,还有支持时间等;
management:
endpoints:
web:
exposure:
# 使用通配符 * 表示匹配所有端点
# 排除的端点
exclude: caches
# 包括的端点
include: info,health,beans,env,shutdown
# 跨域处理
cors:
allowed-origins: http://localhost:8080/
allowed-methods: post,delete,get,put
endpoint:
health:
show-details: always
# 开启关闭应用 需要post请求
shutdown:
enabled: true
七 修改默认路径
在 配置文件中添加 base-path , 会修改掉默认路径 actuator/endpoint;
management:
endpoints:
web:
exposure:
# 使用通配符 * 表示匹配所有端点
# 排除的端点
exclude: caches
# 包括的端点
include: info,health,beans,env,shutdown
# 自定义配置监控路径
base-path: /zszxz
# 跨域处理
cors:
allowed-origins: http://localhost:8080/
allowed-methods: post,delete,get,put
endpoint:
health:
show-details: always
# 开启关闭应用 需要post请求
shutdown:
enabled: true
示例url: http://localhost:8080/zszxz/info
结果如下
八 其他配置说明
还可以引入 security 依赖 配置 账号密码,角色信息,达到访问控制,详细的可以参照官网;
还可以使用注解进行配置,自定义端点,详细参照官网;
jmx支持,可以使用open jdk 自带的工具 jconsole 进行监控;
来源:https://www.cnblogs.com/zszxz/p/12100135.html


猜你喜欢
- What will be removed If you click Clear Data Button in the System Appl
- 一、链表的概念和结构1.1 链表的概念简单来说链表是物理上不一定连续,但是逻辑上一定连续的一种数据结构1.2 链表的分类实际中链表的结构非常
- 前言相信大家在java中用到的最多的时间类莫过于 java.util.Date了,由于Date类中将getYear() , getMonth
- 目录UI组件封装的考虑要点文本输入框接口定义代码实现组件使用踩坑记录总结UI组件封装的考虑要点封装一个 UI 组件,通常需要考虑下面这三个点
- 现如今的APP各式各样,同样也带来了各种需求,一个下拉刷新都能玩出花样了,前两天订饭的时候不经意间看到了“百度外卖”的下拉刷新,今天的主题就
- 写在自定义之前我们也许会遇到,自定义控件的触屏事件处理,先来了解一下View类中的,onTouch事件和onTouchEvent事件。1、b
- 相关api见:点击进入/* * Copyright 2014 the original author or authors. * * Lic
- xUtils简介xUtils 包含了很多实用的android工具。xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),
- 通过VideoView播放视频的步骤:1、在界面布局文件中定义VideoView组件,或在程序中创建VideoView组件2、调用Video
- 本文实例为大家分享了java实现登录验证码功能的具体代码,供大家参考,具体内容如下登录验证码登录验证是大多数登录系统都会用到的一个功能,它的
- 本篇文章主要介绍了C# DateTime与时间戳(11位与13)转换实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过
- 象棋,很多人多接触过,学者写了一个,大神可以指点一下~直接上代码:贴出主要代码,想要Demo的点击下载:中国象棋Demopackage wy
- Android资源文件大致可以分为两种:第一种是res目录下存放的可编译的资源文件:这种资源文件系统会在R.java里面自动生成该资源文件的
- public class Count { public static void main(String[] args) { int i =
- 1 前言项目中,目前主流的当然是微服务项目。为了应对高并发,以及保证自己的服务比较稳定,通常会把服务按照模块,或者具体的业务划分为多个独立的
- Java包装类基本类型大小包装器类型boolean/Booleanchar16bitBooleanbyte8bitByteshort/16b
- Java语言是SUN(Stanford University Network,斯坦福大学网络公司)公司1995年推出的一门高级编程语言,起初
- 这个东西我已经用了有段时间了,从开始写文章就在用这个,主要原因还是因为我比较懒。懒得去寻找图片,同时又怕万一惹来版权争议。。。跟我所有的文章
- 一、前言闭锁与栅栏是在多线程编程中的概念,因为在多线程中,我们不能控制线程的执行状态,所以给线程加锁,让其按照我们的想法有秩序的执行。闭锁C
- 这次主要是练习一下Android的自定义view和path的相关使用,所以做了一个简单的demo:自定义一个view,并用path在上面画一