Spring Boot学习 之 Spring Boot Actuator(一)
Spring Boot版本:2.1.4.RELEASE
启用:
spring-boot-actuator
模块提供了一系列的用于监控的端点。最简单的开启这个功能的方法就是,在pom文件中添加如下的依赖。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
端点:
开启/禁用端点
Actuator 的端点让你能够监控你的应用并能跟你的引用进行交互,Spring Boot包含了大量的内置的端点,而且你也能添加定制的端点。例如:health
端点提供了应用的健康指标信息。
每个独立的端点都能被禁用或启用。当一个端点被禁用时,同时也代表了对应的端点不会被创建,对应的bean不会存在容器中。为了能远程访问一个端点,我们也会通过JMX或者HTTP的方式将其暴露出去。大多数的应用选择HTTP,在选择HTTP的情况下,端点的ID会默认加一个/actuator
的前缀。例如,默认的health
端点会被映射到/actuator/health
路径上
下面列举了通过浏览器访问(get方法)部分端点相关的信息:
PATH(通过浏览器直接访问) | 描述 | 是否启用 |
---|---|---|
/actuator | 端点信息汇总,严格意义上来说不算一个端点,我在这里把他归到端点中一起 | 是 |
/actuator/caches | 获取所有的 Cachemanager | 是 |
/actuator/conditions | 展示了自动配置相关的信息,可以看到哪些类进行了自动配置,哪些类没有进行自动配置,并且会标明没有进行自动配置的原因 | 是 |
/actuator/beans | 展示了容器中bean | 是 |
/actuator/configprops | 展示了应用中@ConfigurationProperties注解的相关信息 | 是 |
/actuator/info | 获取应用程序定制信息 | 是 |
/actuator/health | 展示应用的健康信息 | 是 |
/actuator/metrics | 报告各种应用程序度量信息,如:内存用量、HTTP 请求计数 | 是 |
/actuator/mappings | 描述全部的 URL 路径,以及它们和控制器(包含Actuator端点)的映射关系 | 是 |
/actuator/shutdown | 关闭应用(此方法只能通过POST方法调用且默认为禁用状态) | 否 |
上面说了,默认情况下,shutdown
端点是关闭的,我们如何开启一个端点呢?
# 开启shutdown端点
management.endpoint.shutdown.enabled=true
在表格中我们可以知道,大部分端点默认情况下是开启的,那么我们如何只开启某个我们想要的端点呢?
# 关闭所有端点
management.endpoints.enabled-by-default=false
# 开启info端点
management.endpoint.info.enabled=true
经过上面的操作,我们就可以只开启info
端点。
暴露端点:
默认情况下,只有health
,info
端点会暴露出来(采用http的情况下),默认的配置为:
暴露所有端点:
management:
endpoints:
web:
exposure:
include: "*"
暴露我们想要的指定的端点,也可以仿照端点的相关操作,这里有所不同的是,我们要先暴露所有端点,然后再排除我们不需要暴露的端点
# 暴露了除了health,beans之外的端点
management:
endpoints:
web:
exposure:
include: "*"
exclude: ["beans","health"]
我们看下面的例子:
management:
endpoints:
web:
exposure:
include: "*"
exclude: ["health","beans"]
enabled-by-default: false
endpoint:
conditions:
enabled: true
configprops:
enabled: true
我们预期的结果,应该是一个端点都没有,启动项目,看到日志如下:
可以发现,一个端点都没有暴露出去,这是因为我们配置中暴露的端点都没有开启。
关于端点的暴露,我们要知道的是:
- 即使我们的应用是公开的,我们也需要保护好我们的端点
- 如果我们想定制的做一些端点的暴露策略,我们可以注册一个
EndponitFilte
端点保护:
我们应该像保护其他的敏感的URL一样保护我们的HTTP端点,如果我们当前采用了Spring Security,则端点会被默认的保护起来。如果我们想为端点配置定制的安全策略,例如,只允许固定角色的用户访问,Spring Boot提供了一些能跟Spring Securit结合使用的便利的``RequestMatcher对象。
一个典型的Spring Security的配置如下:
@Configuration
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests()
.anyRequest().hasRole("ENDPOINT_ADMIN")
.and()
.httpBasic();
}
}
上面的这段配置,使用了EndpointRequest.toAnyEndpoint()
去匹配到任意端点的一起请求,并确保它具有ENDPOINT_ADMIN
权限才能访问我们的端点。
当然,我们如果不想对我们的端点进行权限保护的话,可以进行如下配置:
@Configuration
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests()
.anyRequest().permitAll();
}
}
端点配置:
对于不带任何参数的读取
操作,端点自动缓存对其响应。要配置端点缓存响应的时间,请使用cache.time-live
属性。以下示例将beans
端点缓存的生存时间设置为10秒:
management.endpoint.beans.cache.time-to-live=10s
遵循这种格式:
management.endpoint.<name>
我们需要注意的是:
在进行经过验证的HTTP请求时,
Principal
将被视为端点的输入
,因此不会缓存响应。
Spring Boot学习 之 Spring Boot Actuator(一)的更多相关文章
- Spring Cloud 学习 之 Spring Cloud Eureka(搭建)
Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 文章目录 搭建服务注册中心: 注册服务提供者: 高可用注册中心: 搭建服务注册中心: ...
- Spring Cloud 学习 之 Spring Cloud Eureka(源码分析)
Spring Cloud 学习 之 Spring Cloud Eureka(源码分析) Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 ...
- Spring Cloud学习笔记--Spring Boot初次搭建
1. Spring Boot简介 初次接触Spring的时候,我感觉这是一个很难接触的框架,因为其庞杂的配置文件,我最不喜欢的就是xml文件,这种文件的可读性很不好.所以很久以来我的Spring学习都 ...
- Spring Boot学习笔记——Spring Boot与MyBatis的集成(项目示例)
1.准备数据库环境 # 创建数据库 CREATE DATABASE IF NOT EXISTS zifeiydb DEFAULT CHARSET utf8 COLLATE utf8_general_c ...
- spring cloud学习(六)Spring Cloud Config
Spring Cloud Config 参考个人项目 参考个人项目 : (希望大家能给个star~) https://github.com/FunriLy/springcloud-study/tree ...
- Spring 框架学习(1)--Spring、Spring MVC扫盲
纸上得来终觉浅,绝知此事要躬行 文章大纲 什么是spring 传统Java web应用架构 更强的Java Web应用架构--MVC框架 Spring--粘合式框架 spring的内涵 spring核 ...
- Spring Cloud 学习 (九) Spring Security, OAuth2
Spring Security Spring Security 是 Spring Resource 社区的一个安全组件.在安全方面,有两个主要的领域,一是"认证",即你是谁:二是& ...
- Spring框架学习03——Spring Bean 的详解
1.Bean 的配置 Spring可以看做一个大型工厂,用于生产和管理Spring容器中的Bean,Spring框架支持XML和Properties两种格式的配置文件,在实际开发中常用XML格式的配置 ...
- Spring框架学习02——Spring IOC 详解
1.Spring IOC的基本概念 IOC(Inverse of Control)反转控制的概念,就是将原本在程序中手动创建对象的控制权,交由Spring框架管理.当某个Java对象(调用者)需要调用 ...
随机推荐
- IDEA默认KeyMap映射快捷键
编辑 快捷键 描述 Ctrl + 空格 基础代码补全(任意类.方法.变量的名字) Ctrl + Shift + 空格 智能代码补全(过滤期望类型的方法和变量列表) Ctrl + Shift + 回车 ...
- AJ学IOS(28)UI之Quartz2D简单介绍
AJ分享,必须精品 iOS开发UI篇—Quartz2D简单介绍 什么是Quartz2D Quartz 2D是⼀个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作: 绘制图形 : ...
- Opencv for android 模板匹配
因为有这方面的需要所以,对模板查找搜寻了相关资料,只是对于算法的东西很难看得动,特别是opencv涉及的很多的数学方法. 所以只为了实现这个功能,因为需求比较简单,在网上也搜寻到了相关代码,就直接拿来 ...
- python填写金数据
''' 将 main 中的{url}改为真 url 将 setd_data中 {姓名} {纬度} {经度} {地址} 改为确切数据 数据自行参考post 结果判断基于响应中是否包含“谢谢参与”字样 ' ...
- 知识点二:HTTP超文本文件传输协议
HTTP超文本传输协议概念: http1.1之前采用非持续链接服务器在建立连接上开销较大,http1.1之后默认采用持续连接,并有超时设置 http协议:超文本文件传输协议,用于传输文本文件,请求的方 ...
- React AntDesign 引入css
React项目是用umi脚手架搭建的AntDesign,用到一个第三方表格组件Jexcel,npm install 之后组件的样式加载不上,犯了愁,翻阅各种资料,踏平两个小坑. 大家都知道,安装完成的 ...
- 这份Mybatis总结,我觉得你很需要!
前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y Mybatis应该是国内用得最多的「数据访问层」 ...
- pytorch 中的LSTM模块
- es6最 全教程2020年
带手机验证码登陆, 带全套购物车系统 带数据库 前后端分离开发 带定位用户功能 数据库代码为本地制作好了 带支付宝支付系统 带django开发服务器接口教程 地址: https://www.dua ...
- Spring Boot devtool的使用
文章目录 添加Spring Boot devtool依赖 默认属性 自动重启 Live Reload 全局配置 Spring Boot devtool的使用 Spring Boot为我们提供了一个便捷 ...