springboot 学习笔记(四) 初识actuator

springboot 学习笔记(四) 初识actuator

spring-boot-starter-actuator:

    一、介绍:

        Spring Boot包含许多附加功能,可帮助您在将应用程序投入生产时监视和管理应用程序。 您可以选择使用HTTP端点或JMX来管理和监控您的应用程序。 审计,健康和指标收集也可以自动应用于您的应用程序。

    二、使用:

        在pom中新增一个依赖

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-actuator</artifactId>
	</dependency>
</dependencies>

     三、进一步使用

        他包含很多端点,我们可以通过端点来访问具体的功能,如下

        

ID Description Enabled by default

auditevents

Exposes audit events information for the current application.

Yes

beans

Displays a complete list of all the Spring beans in your application.

Yes

conditions

Shows the conditions that were evaluated on configuration and auto-configuration classes and the reasons why they did or did not match.

Yes

configprops

Displays a collated list of all @ConfigurationProperties.

Yes

env

Exposes properties from Spring’s ConfigurableEnvironment.

Yes

flyway

Shows any Flyway database migrations that have been applied.

Yes

health

Shows application health information.

Yes

httptrace

Displays HTTP trace information (by default, the last 100 HTTP request-response exchanges).

Yes

info

Displays arbitrary application info.

Yes

loggers

Shows and modifies the configuration of loggers in the application.

Yes

liquibase

Shows any Liquibase database migrations that have been applied.

Yes

metrics

Shows ‘metrics’ information for the current application.

Yes

mappings

Displays a collated list of all @RequestMapping paths.

Yes

scheduledtasks

Displays the scheduled tasks in your application.

Yes

sessions

Allows retrieval and deletion of user sessions from a Spring Session-backed session store. Not available when using Spring Session’s support for reactive web applications.

Yes

shutdown

Lets the application be gracefully shutdown.

No

threaddump

Performs a thread dump.

Yes

 如果您的应用程序是一个Web应用程序(Spring MVC,Spring WebFlux或Jersey),则可以使用以下附加端点:

ID Description Enabled by default

heapdump

Returns a GZip compressed hprof heap dump file.

Yes

jolokia

Exposes JMX beans over HTTP (when Jolokia is on the classpath, not available for WebFlux).

Yes

logfile

Returns the contents of the logfile (if logging.file or logging.path properties have been set). Supports the use of the HTTP Range header to retrieve part of the log file’s content.

Yes

prometheus

Exposes metrics in a format that can be scraped by a Prometheus server.

Yes

默认情况下,大部分的端点是开启的,如果想要关闭,则可以通过

management.endpoints.enabled-by-default=false

 

出于安全考虑,可以选择公开或隐藏一些端点,下面是springboot默认的端点公开情况

ID JMX Web

auditevents

Yes

No

beans

Yes

No

conditions

Yes

No

configprops

Yes

No

env

Yes

No

flyway

Yes

No

health

Yes

Yes

heapdump

N/A

No

httptrace

Yes

No

info

Yes

Yes

jolokia

N/A

No

logfile

N/A

No

loggers

Yes

No

liquibase

Yes

No

metrics

Yes

No

mappings

Yes

No

prometheus

N/A

No

scheduledtasks

Yes

No

sessions

Yes

No

shutdown

Yes

No

threaddump

Yes

No

 

要更改公开哪些端点,请使用以下技术特定的包含和排除属性:

Property Default

management.endpoints.jmx.exposure.exclude

 

management.endpoints.jmx.exposure.include

*

management.endpoints.web.exposure.exclude

 

management.endpoints.web.exposure.include

info, health

include属性列出了公开的端点的ID。 exclude属性列出了不应该公开的端点的ID。 排除属性优先于包含属性。 包含和排除属性都可以使用端点ID列表进行配置。

例如,要停止通过JMX公开所有端点并仅公开健康和信息端点,请使用以下属性:

management.endpoints.jmx.exposure.include=health,info

*可用于选择所有端点。 例如,要通过HTTP公开除env和beans端点之外的所有内容,请使用以下属性:

management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.exclude=env,beans

*在YAML中有特殊含义,因此如果要包含(或排除)所有端点,请务必添加引号,如以下示例中所示:

management:
	endpoints:
		web:
			exposure:
				include: "*"

如果您希望在暴露端点时实施您自己的策略,您可以注册一个EndpointFilter bean。

保护HTTP端点(Securing HTTP Endpoints)

您应该注意保护HTTP端点的方式与使用其他任何敏感网址的方式相同。 如果存在Spring Security,则使用Spring Security的内容协商策略默认保护端点。 例如,如果您希望为HTTP端点配置自定义安全性,则只允许具有特定角色的用户访问它们,Spring Boot提供了一些便捷的RequestMatcher对象,可以与Spring Security结合使用。

一个典型的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角色。 EndpointRequest上还有其他几种匹配器方法。 有关详细信息,请参阅API文档(HTML或PDF)。

如果您在防火墙后面部署应用程序,您可能更喜欢所有的执行器端点都可以在无需验证的情况下进行访问。 您可以通过更改management.endpoints.web.exposure.include属性来完成此操作,如下所示

management.endpoints.web.exposure.include=*

此外,如果存在Spring Security,则需要添加自定义安全配置,以允许对端点进行未经身份验证的访问,如以下示例所示:

@Configuration
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {

	@Override
	protected void configure(HttpSecurity http) throws Exception {
		http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests()
			.anyRequest().permitAll()
	}

}

四、配置端点

端点自动缓存响应以读取不带任何参数的操作。 要配置端点缓存响应的时间量,请使用其cache.time-live属性。 以下示例将Bean端点缓存的生存时间设置为10秒:

management.endpoint.beans.cache.time-to-live=10s

 

如果您想要了解更多关于 spring-boot-starter-actuator的信息,请参考官网链接

https://docs.spring.io/spring-boot/docs/2.0.3.BUILD-SNAPSHOT/actuator-api//html/

转载于:https://my.oschina.net/u/1178126/blog/1811726

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101667.html原文链接:https://javaforall.net

(0)
上一篇 2021年5月28日 上午8:00
下一篇 2021年5月28日 上午9:00


相关推荐

  • mybase激活成功教程方法

    mybase激活成功教程方法1 选用合适平台 下载好然后安装 2 装好后关闭软件 打开软件安装为位置 3 在主目录下找到进入 myBase ini 这个文件 4 打开 myBase ini 我这里使用的是 nodepad 5 找到属性设置 Lic FirstUseOn 可通过 Ctrl F 快速查找 后面这一串 15 开头数字就是使用格林尼治时间毫秒值 6 删除 Lic FirstUseOn 这行 注意 在编辑

    2026年3月20日
    1
  • SQL文件导入Oracle数据库

    SQL文件导入Oracle数据库直接复制SQL文件至pl/sql中执行,若sql文件过大会直接导致数据库卡死,未避免数据库卡死,可直接使用pl/sql工具提供的导入表功能将sql文件直接导入数据库表中1.如下图所示:链接数据库,选择工具–》导入表2.如下图示:选择SQL导入—使用命令窗口–》选择要导入的sql文件–》点击导入按钮3.如下图所示:若提示Done,则表示导入成功,导入成功后需要点击com…

    2022年10月2日
    3
  • Kimi 浏览器插件来了,配置只需要 1 分钟!

    Kimi 浏览器插件来了,配置只需要 1 分钟!

    2026年3月12日
    2
  • 在c语言里0和1表示什么_’0’是什么意思c语言

    在c语言里0和1表示什么_’0’是什么意思c语言C语言中常见~Number,怎么计算?计算一个数字的~number比如说现在有A=60那么A的8位二进制数就是00111100那首先要计算~A即~60,那么先取反即11000011。因为负数的补码是取反+1。所以此处逆向操作需要-1取反即11000011-1==11000010(第一步逆向操作)11000010=>取反=>00111101=>十进制的61最后结果A==60,~A=-61C

    2026年2月2日
    5
  • ubuntu18.04安装pycharm专业版

    ubuntu18.04安装pycharm专业版安装的 pycharm 版本 2017 4 操作系统 ubuntu18 04LTS 步骤 1 在官网下载安装包 https www jetbrains com pycharm download section linux 下载文件位于 Downloads 下选择对应版本步骤 2 解压到文件夹 opt 该文件夹内安装的程序都是 allinone 便于删除程

    2026年3月17日
    2
  • MyBatis-Plus 通用IService使用介绍

    MyBatis-Plus 通用IService使用介绍一 引言 MP 除了通用的 Mapper 还是通用的 Servcie 层 这也减少了相对应的代码工作量 把通用的接口提取到公共 其实按照 MP 的这种思想 可以自己也实现一些通用的 Controller 今天是周天 作为一名码农来说 这里小编提醒大家周末有空还是多出去运动一下 生命在于运动 生命诚可贵 二 小编瞎扯相信有和小编一样的朋友 在大城市独自漂泊 感觉就凭借自己内心那一点点的火苗 想要

    2026年3月20日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号