spring-boot-starter-actuator:
一、介绍:
Spring Boot包含许多附加功能,可帮助您在将应用程序投入生产时监视和管理应用程序。 您可以选择使用HTTP端点或JMX来管理和监控您的应用程序。 审计,健康和指标收集也可以自动应用于您的应用程序。
二、使用:
在pom中新增一个依赖
代码语言:javascript复制<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 |
默认情况下,大部分的端点是开启的,如果想要关闭,则可以通过
代码语言:javascript复制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公开所有端点并仅公开健康和信息端点,请使用以下属性:
代码语言:javascript复制management.endpoints.jmx.exposure.include=health,info
*可用于选择所有端点。 例如,要通过HTTP公开除env和beans端点之外的所有内容,请使用以下属性:
代码语言:javascript复制management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.exclude=env,beans
*在YAML中有特殊含义,因此如果要包含(或排除)所有端点,请务必添加引号,如以下示例中所示:
代码语言:javascript复制management:
endpoints:
web:
exposure:
include: "*"
如果您希望在暴露端点时实施您自己的策略,您可以注册一个EndpointFilter bean。
保护HTTP端点(Securing HTTP Endpoints)
您应该注意保护HTTP端点的方式与使用其他任何敏感网址的方式相同。 如果存在Spring Security,则使用Spring Security的内容协商策略默认保护端点。 例如,如果您希望为HTTP端点配置自定义安全性,则只允许具有特定角色的用户访问它们,Spring Boot提供了一些便捷的RequestMatcher对象,可以与Spring Security结合使用。
一个典型的Spring Security配置可能看起来像下面的例子:
代码语言:javascript复制@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属性来完成此操作,如下所示
代码语言:javascript复制management.endpoints.web.exposure.include=*
此外,如果存在Spring Security,则需要添加自定义安全配置,以允许对端点进行未经身份验证的访问,如以下示例所示:
代码语言:javascript复制@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秒:
代码语言:javascript复制management.endpoint.beans.cache.time-to-live=10s
如果您想要了解更多关于 spring-boot-starter-actuator的信息,请参考官网链接
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/101667.html原文链接:https://javaforall.cn