SpringBoot 2.0.1 未提供 actuator /refresh
actuator /refresh is not being provided in SpringBoot 2.0.1
我正在为 Spring-Config-Server
和 Spring-Config-Client
创建一个演示项目。
在SpringBoot 1.5.6.RELEASE
一切正常。
但是,当我将项目升级到 2.0.1.RELEASE
时,它不提供执行器端点。
执行器端点在1.5.6.RELEASE
中提供
Mapped "{[/refresh || /refresh.json],methods=[POST]}"
Mapped "{[/dump || /dump.json],methods=[GET]
Mapped "{[/heapdump || /heapdump.json],methods=[GET]
Mapped "{[/autoconfig || /autoconfig.json],methods=[GET]
Mapped "{[/resume || /resume.json],methods=[POST]}"
Mapped "{[/configprops || /configprops.json],methods=[GET]
Mapped "{[/features || /features.json],methods=[GET]
Mapped "{[/loggers/{name:.*}],methods=[GET]
Mapped "{[/restart || /restart.json],methods=[POST]}"
...and many more
执行器端点在2.0.1.RELEASE
中提供
Mapped "{[/actuator/health],methods=[GET]
Mapped "{[/actuator/info],methods=[GET]
Mapped "{[/actuator],methods=[GET]
pom.xml : 2.0.1.RELEASE
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.RC1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
bw 1.5.6
pom 的唯一区别是版本和 spring-cloud.version = Dalston.SR2
有人可以帮忙吗?
经过一番研究,我发现 Spring Boot 2.0
中未显示端点的原因是 as per the spring docs
Since Endpoints may contain sensitive information, you should carefully consider when to expose them. The following table shows the default exposure for the built-in endpoints:
所以,我们需要手动公开它们。
我在 application.properties
文件中添加了 management.endpoints.web.exposure.include=*
,现在所有执行器端点都通过 HTTP 公开。
注意:如果您使用.yml
,请确保使用"*"
而不是*
我们还可以使用 属性 management.endpoints.web.exposure.exclude= shutdown,liquibase
排除我们不想公开的执行器
现在可以使用属性配置端点在 HTTP 上的公开
management.endpoints.web.exposure.include
management.endpoints.web.exposure.exclude
您可以通过 Actuator 提到的 ID 公开端点。
# Include all endpoints
management.endpoints.web.exposure.include=*
# Exclude specifics
management.endpoints.web.exposure.exclude=env
即使添加以下行,有时也无济于事
management.endpoints.web.exposure.include=*
试试这个:-
刷新适用于 OPTIONS 方法,在少数情况下不适用于 POST 方法。
refresh
可以启用端点以通过网络使用(通过网络公开),在 application.yaml
中使用它
management.endpoints.web.exposure.include: health,info,refresh
Spring 引导默认启用 health
和 info
端点。有必要列出它们以保持启用状态。
如果您的应用程序有这个 URL http://localhost:8181
您可以发送POST
请求刷新
这就是我所做的。
通过设置
启用所有端点
management.endpoints.web.exposure.include=*
并发送了一个空请求来刷新端点。
curl -d '{}' -H 'Content-Type: application/json' http://localhost:8000/actuator/refresh
URL http://localhost:8000/actuator/ 将列出所有可用的端点。
P.S.: 我的应用程序在端口 8000 上 运行。在默认端口 8080 上,我是 运行 配置服务器。
我正在为 Spring-Config-Server
和 Spring-Config-Client
创建一个演示项目。
在SpringBoot 1.5.6.RELEASE
一切正常。
但是,当我将项目升级到 2.0.1.RELEASE
时,它不提供执行器端点。
执行器端点在1.5.6.RELEASE
中提供Mapped "{[/refresh || /refresh.json],methods=[POST]}"
Mapped "{[/dump || /dump.json],methods=[GET]
Mapped "{[/heapdump || /heapdump.json],methods=[GET]
Mapped "{[/autoconfig || /autoconfig.json],methods=[GET]
Mapped "{[/resume || /resume.json],methods=[POST]}"
Mapped "{[/configprops || /configprops.json],methods=[GET]
Mapped "{[/features || /features.json],methods=[GET]
Mapped "{[/loggers/{name:.*}],methods=[GET]
Mapped "{[/restart || /restart.json],methods=[POST]}"
...and many more
执行器端点在2.0.1.RELEASE
中提供Mapped "{[/actuator/health],methods=[GET]
Mapped "{[/actuator/info],methods=[GET]
Mapped "{[/actuator],methods=[GET]
pom.xml : 2.0.1.RELEASE
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.RC1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
bw 1.5.6
pom 的唯一区别是版本和 spring-cloud.version = Dalston.SR2
有人可以帮忙吗?
经过一番研究,我发现 Spring Boot 2.0
中未显示端点的原因是 as per the spring docs
Since Endpoints may contain sensitive information, you should carefully consider when to expose them. The following table shows the default exposure for the built-in endpoints:
所以,我们需要手动公开它们。
我在 application.properties
文件中添加了 management.endpoints.web.exposure.include=*
,现在所有执行器端点都通过 HTTP 公开。
注意:如果您使用.yml
,请确保使用"*"
而不是*
我们还可以使用 属性 management.endpoints.web.exposure.exclude= shutdown,liquibase
现在可以使用属性配置端点在 HTTP 上的公开
management.endpoints.web.exposure.include
management.endpoints.web.exposure.exclude
您可以通过 Actuator 提到的 ID 公开端点。
# Include all endpoints
management.endpoints.web.exposure.include=*
# Exclude specifics
management.endpoints.web.exposure.exclude=env
即使添加以下行,有时也无济于事 management.endpoints.web.exposure.include=*
试试这个:- 刷新适用于 OPTIONS 方法,在少数情况下不适用于 POST 方法。
refresh
可以启用端点以通过网络使用(通过网络公开),在 application.yaml
management.endpoints.web.exposure.include: health,info,refresh
Spring 引导默认启用 health
和 info
端点。有必要列出它们以保持启用状态。
如果您的应用程序有这个 URL http://localhost:8181
您可以发送POST
请求刷新
这就是我所做的。 通过设置
启用所有端点management.endpoints.web.exposure.include=*
并发送了一个空请求来刷新端点。
curl -d '{}' -H 'Content-Type: application/json' http://localhost:8000/actuator/refresh
URL http://localhost:8000/actuator/ 将列出所有可用的端点。
P.S.: 我的应用程序在端口 8000 上 运行。在默认端口 8080 上,我是 运行 配置服务器。