Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

actuator /refresh is not being provided in SpringBoot 2.0.1

I am creating a demo project for Spring-Config-Server and Spring-Config-Client.

In SpringBoot 1.5.6.RELEASE everything is working fine.

However, when I am upgrading project to 2.0.1.RELEASE it does not provide the actuator endpoints.


Actuator endpoint provided in 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

Actuator endpoint provided in 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>

The only difference bw 1.5.6 pom is version and spring-cloud.version = Dalston.SR2

Could someone please help?

like image 793
Mehraj Malik Avatar asked May 01 '18 09:05

Mehraj Malik


People also ask

How do I enable actuator refresh?

To use it, you must add org. springframework. boot:spring-boot-starter-actuator to the client application's classpath. You can invoke the refresh Actuator endpoint by sending an empty HTTP POST to the client's refresh endpoint: http://localhost:8080/actuator/refresh .

How do I enable actuators in spring boot?

To enable Spring Boot actuator endpoints to your Spring Boot application, we need to add the Spring Boot Starter actuator dependency in our build configuration file. Maven users can add the below dependency in your pom. xml file. Gradle users can add the below dependency in your build.

How do I refresh properties in spring boot?

For Reloading properties, spring cloud has introduced @RefreshScope annotation which can be used for refreshing beans. Spring Actuator provides different endpoints for health, metrics. but spring cloud will add extra end point /refresh to reload all the properties.

Can we use actuator without spring boot?

First let's clarify that you cannot use Spring Boot Actuator without using Spring Boot.


2 Answers

After a bit of research, I have found the cause why the endpoints are not shown in Spring Boot 2.0 is 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:

so, we need to expose them manually.

I have added management.endpoints.web.exposure.include=* in application.properties file and now all the actuator endpoints are exposed via HTTP .

Note: If you are using .yml make sure to use "*" not *

We can also exclude actuator which we don't want to expose using the property management.endpoints.web.exposure.exclude= shutdown,liquibase

like image 62
Mehraj Malik Avatar answered Sep 23 '22 02:09

Mehraj Malik


refresh endpoint can be enabled to use via web (exposed via web), using this in application.yaml

management.endpoints.web.exposure.include: health,info,refresh

Spring Boot enables health and info endpoints by default. It is necessary to list them to keep them enabled.

If your application has this URL http://localhost:8181

You can send POST request to refresh

http://localhost:8181/actuator/refresh

like image 34
v.ladynev Avatar answered Sep 21 '22 02:09

v.ladynev