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
猜你喜欢
- 使用 DateFormat 格式化日期、时间DateFormat 也是一个抽象类,它也提供了如下几个类方法用于获取 DateFormat 对
- poi解析Excel文件版本问题解决办法poi解析Excel文件时有两种格式: HSSFWorkbook格式用来解析Excel2003(xl
- 本文实例讲述了C#实现读取注册表监控当前操作系统已安装软件变化的方法。分享给大家供大家参考。具体实现方法如下:private static
- 就网络和应用程序而言,键盘快捷键很重要,今天我们要谈的便是让这类快捷键得以在Flutter运作的小部件:Focus、Shortcuts和Ac
- 介绍和使用场景1)什么是消息一个事件,需要广播或者单独传递给某个接口2)为什么使用这个配置更新了,但是其他系统不知道是否更新SpringCl
- 一、Servlet简介Servlet是sun公司提供的一门用于开发动态web资源的技术。Sun公司在其API中提供了一个servlet接口,
- 以下是介绍利用List的subList方法实现对List分页,废话不多说了,直接看代码把/** *//** * List分页 &
- 前言学过定时任务,但是我忘了,忘得一干二净,害怕,一直听别人说:你写一个定时任务就好了。写个定时任务让他去爬取就行了。我不会,所以现在得补回
- 本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下前言一、游戏规则介绍扫雷是一个十分经典的游戏,一张棋盘中有很多个不
- 1 前言在 Springboot 中,异步任务和定时任务是经常遇到的处理问题方式,为了能够用好这两项配置,不干扰正常的业务,需要对其进行异步
- 介绍Java中的建造者模式是一种创建型设计模式,它的主要目的是为了通过一系列简单的步骤构建复杂的对象,允许创建复杂对象的不同表示形式,同时隐
- 前言在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并 * 况下使用HashMap
- 用法一:常量在JDK1.5之前,我们定义常量都是:publicstaticfianl....。现在好了,有了枚举,可以把相关的常量分组到一个
- 获取方法的相关信息的两种形式反射是一种允许用户获得类信息的C#功能,Type对象映射它代表的底层对象;在.Net 中, 一旦获得了Type对
- 方法1:import java.net.HttpURLConnection;import java.net.URL;import org.j
- Java内存区域与内存溢出异常概述对于 C 和 C++程序开发的开发人员来说,在内存管理领域,程序员对内存拥有绝对的使用权,但是也要主要到正
- 前言在服务器上,当我们启动了tomcat,就可以以http://ip地址:8080/文件路径/文件名的方式,进行访问到我们服务器上处于tom
- Sentinel是阿里巴巴开源的限流器熔断器,并且带有可视化操作界面。在日常开发中,限流功能时常被使用,用于对某些接口进行限流熔断,譬如限制
- 概述背景函数式编程的理论基础是阿隆佐·丘奇(Alonzo Church)于 1930 年代提出的 &lambd
- (注意:本文基于JDK1.8)前言元素在存储到内存中,当我们需要使用在内存中存储的元素,这就涉及到在内存中查找元素,今天一起学习Vector