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

我们预期的结果,应该是一个端点都没有,启动项目,看到日志如下:


可以发现,一个端点都没有暴露出去,这是因为我们配置中暴露的端点都没有开启。

关于端点的暴露,我们要知道的是:

  1. 即使我们的应用是公开的,我们也需要保护好我们的端点
  2. 如果我们想定制的做一些端点的暴露策略,我们可以注册一个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(一)的更多相关文章

  1. Spring Cloud 学习 之 Spring Cloud Eureka(搭建)

    Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 文章目录 搭建服务注册中心: 注册服务提供者: 高可用注册中心: 搭建服务注册中心: ...

  2. Spring Cloud 学习 之 Spring Cloud Eureka(源码分析)

    Spring Cloud 学习 之 Spring Cloud Eureka(源码分析) Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 ...

  3. Spring Cloud学习笔记--Spring Boot初次搭建

    1. Spring Boot简介 初次接触Spring的时候,我感觉这是一个很难接触的框架,因为其庞杂的配置文件,我最不喜欢的就是xml文件,这种文件的可读性很不好.所以很久以来我的Spring学习都 ...

  4. Spring Boot学习笔记——Spring Boot与MyBatis的集成(项目示例)

    1.准备数据库环境 # 创建数据库 CREATE DATABASE IF NOT EXISTS zifeiydb DEFAULT CHARSET utf8 COLLATE utf8_general_c ...

  5. spring cloud学习(六)Spring Cloud Config

    Spring Cloud Config 参考个人项目 参考个人项目 : (希望大家能给个star~) https://github.com/FunriLy/springcloud-study/tree ...

  6. Spring 框架学习(1)--Spring、Spring MVC扫盲

    纸上得来终觉浅,绝知此事要躬行 文章大纲 什么是spring 传统Java web应用架构 更强的Java Web应用架构--MVC框架 Spring--粘合式框架 spring的内涵 spring核 ...

  7. Spring Cloud 学习 (九) Spring Security, OAuth2

    Spring Security Spring Security 是 Spring Resource 社区的一个安全组件.在安全方面,有两个主要的领域,一是"认证",即你是谁:二是& ...

  8. Spring框架学习03——Spring Bean 的详解

    1.Bean 的配置 Spring可以看做一个大型工厂,用于生产和管理Spring容器中的Bean,Spring框架支持XML和Properties两种格式的配置文件,在实际开发中常用XML格式的配置 ...

  9. Spring框架学习02——Spring IOC 详解

    1.Spring IOC的基本概念 IOC(Inverse of Control)反转控制的概念,就是将原本在程序中手动创建对象的控制权,交由Spring框架管理.当某个Java对象(调用者)需要调用 ...

随机推荐

  1. Continue 和 Break

    1.什么是continue和break continue:继续的.持续的 break:冲断的.折断的 作用:用于终止循环体,主要用于switch条件语句和循环体条件语句(for.while.do-wh ...

  2. 上班无聊,自己用python做个小游戏来打发时间

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取t.cn ...

  3. Daily Scrum 12/21/2015

    Process: Zhaoyang: Integrate the oxford Speech API Code to the IOS client and do some UI optimizatio ...

  4. 一起了解 .Net Foundation 项目 No.24

    .Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. Xamarin.Mobil ...

  5. Volatile的应用DCL单例模式(四)

    Volatile的应用 单例模式DCL代码 首先回顾一下,单线程下的单例模式代码 /** * 单例模式 * * @author xiaocheng * @date 2020/4/22 9:19 */ ...

  6. idea ------- 源码调试运行

    1.创建一个 想学 的 ,使用单步调试进行一步步学习 调整系统资源 单步调试 (F7) ,进入不了源码,调整idea 让我们可以进入底层学习 想要在源码里面添加注释,要将引用的源文件指向,我们刚才复制 ...

  7. 云开发静态网站托管现已支持 Angular 应用

    云开发静态托管是云开发提供的静态网站托管的能力,静态资源(HTML.CSS.JavaScript.字体等)的分发由腾讯云对象存储 COS 和拥有多个边缘网点的腾讯云 CDN 提供支持. 在云开发静态托 ...

  8. python爬取优美图库海量图片,附加代码,一键爬取

    优美高清图片为大家提供高清美女套图赏析,非高清不录入,大家的网速要给力. 今天教大家爬取优美图库网站中高质量的图片!! 简单易上手哦~ 使用工具: Python 3.6 pycharm 相关环境: r ...

  9. MVC-过滤器-Action

    四个方法执行顺序是OnActionExecuting——>OnActionExecuted——>OnResultExecuting——>OnResultExecuted. demo代 ...

  10. C# XML相关操作

    XML是一种意见单文本格式存储数据的方式,这意味着它可以被任何计算机读取.XML中完整的数据集就是XML文档. 在名称空间System.Xml下面大部分类型都是用来支持DOM处理模型的.其中很多类型配 ...