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. vueCli 运行报错

    error 如下: npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! shopping@0.1.0 serve: `vue-cli-service ...

  2. Android传感器--光照传感器使用

    Android 设备中有许多传感器,其中有一个传感器控制着你屏幕亮度的变化.当你在很暗的地方使用手机,你设备的屏幕会自动调暗,从而保护你眼睛. 起着这样作用,Android是通过一款光照传感器来获取你 ...

  3. Daily Scrum 1/18/2016

    Yandong & Zhaoyang: Prepare bug bash slides for Beta release; Dong & Fuchen:Prepare demo for ...

  4. E - Dividing Chocolate ATcoder

    题目大意:切割图形,给你一个非0即1的矩阵,将它切割成多个长方形,使每个小长方形中1的个数不得多于k个,切割的规则,要么切一整行,要么是一整列. 题解: 二进制枚举. 注意行数最大才是10.用二进制枚 ...

  5. 百度api实现人脸对比

    第一步(注册账号): 点这里注册百度云账号 如图: 创建应用得到 APP_ID API_KEY SECRET_KEY   第二步(代码): import requests import base64 ...

  6. 格式化启动盘win10

    我这个(U盘)磁盘被分成了两个区,不能直接格式化 第一步: 第二步: 删除完了之后,选择格式化,ok. 说明:格式化时要选择系统. 常规NTFS  缺点:老设备,比如打印机,监控机识别不了. FAT系 ...

  7. [转+自]关于PHP7的新特性(涉及取反和disabled_functions绕过)

    PHP7和PHP5上的安全区别 preg_replace()不再支持/e修饰符 利用\e修饰符执行代码的后门大家也用了不少了,具体看官方的这段描述: 如果设置了这个被弃用的修饰符, preg_repl ...

  8. IOC趣味理解

    假设一个场景:   假设你是一个四岁孩子,饿了,想吃东西.怎么做? 1,哪有吃的去哪拿,你知道冰箱有吃的,你去冰箱拿〉会有风险.比如,拿了生的吃的,吃坏肚子,甚至拿了不能吃的东西. 2, 找父母(IO ...

  9. 分析 Nanocore

    Nanocore是一个非常强大的木马控制系统,当Nanocore木马运行时,我们发现Windows Defender可以很好地识别威胁.本文的目的是分析Nanocore的传播方式,它是怎样感染Wind ...

  10. C语言指定初始化器解析及其应用

    指定初始化器的概念 C90 标准要求初始化程序中的元素以固定的顺序出现,与要初始化的数组或结构体中的元素顺序相同.但是在新标准 C99 中,增加了一个新的特性:指定初始化器.利用该特性可以初始化指定的 ...