Jon Abraham
Jon Abraham

Reputation: 955

Spring Boot /actuator returns 404 not found

I am using spring boot 2.1.4.RELEASE and currently trying to access http://localhost:8080/actuator but i am getting 404 not found. I am not sure what am i doing wrong here. Below is my pom dependencies-

 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.dir</groupId>
    <artifactId>api</artifactId>
    <version>2.4.0</version>
    <packaging>jar</packaging>

    <name>Search</name>
    <description>Search</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <distributionManagement>
        <repository>
            <id>Releases</id>
            <name>repo1.releases</name>
            <url>http://www.something.com</url>
        </repository>
        <snapshotRepository>
            <id>Snapshots</id>
            <name>repo1.com</name>
            <url>http://repo1.com/artifactory/Snapshots</url>
        </snapshotRepository>
    </distributionManagement>


    <properties>
        <!--These two should be in all ParentPOMs -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- Keep this version in sync with the pom's version ignoring "-SNAPSHOT" -->
        <applicationVersion>1.0.0</applicationVersion>
        <elasticsearch.version>5.2.0</elasticsearch.version>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.4.0</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.4.0</version>
        </dependency>


        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webflux</artifactId>
        </dependency>

        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>1.5.7</version>
        </dependency>



        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.0</version>
        </dependency>

        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>x-pack-transport</artifactId>
            <version>5.2.1</version>
        </dependency>

        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
            <version>5.2.0</version>
        </dependency>

        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>5.2.0</version>
        </dependency>

        <dependency>
            <groupId>apache-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.1</version>
        </dependency>



        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.7.0</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!-- Spring boot actuator to expose metrics endpoint -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!-- Micormeter core dependecy  -->
        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-core</artifactId>
        </dependency>
        <!-- Micrometer Prometheus registry  -->
        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
        </dependency>




    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.8.2</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <environmentVariables>
                        <version>9.9.9</version>
                        <basePath>http://sample-basepath.com</basePath>

                    </environmentVariables>
                </configuration>
            </plugin>
        </plugins>

        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>

    </build>


</project>

properties file config

management.endpoint.metrics.enabled=true
management.endpoints.web.exposure.include=*
management.endpoint.prometheus.enabled=true
management.metrics.export.prometheus.enabled=true
management.endpoint.health.show-details=always
management.endpoint.beans.enabled=true

when i run the application i do see this in console

2019-04-27 00:04:25.406  INFO 32522 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 16 endpoint(s) beneath base path '/actuator'
2019-04-27 00:04:25.534  INFO 32522 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path '/myendpoint'

Upvotes: 25

Views: 85913

Answers (16)

nonzaprej
nonzaprej

Reputation: 1600

In my case the configuration was fine, - the actuator endpoint was enabled and the unit test had @AutoConfigureMetrics (for Spring Boot 2. it should be @AutoConfigureObservability for Spring Boot 3) - but it turned out that I was missing a dependency:

Gradle:

implementation group: 'io.micrometer', name: 'micrometer-registry-prometheus'

(use testImplementation instead if you only need it for tests, of course)

Maven:

<dependency>
  <groupId>io.micrometer</groupId>
  <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

Without this, the endpoint would get disabled automatically.
I'd guess it's not the only library you can use to enable the endpoint, but I don't know other ones and haven't looked for them.

Upvotes: 0

nash
nash

Reputation: 3110

This page was the first result when I googled a similar issue I was having. Unfortunately none of the solutions above worked for me but another source mentioned that I needed to set the management port:

management.server.port=8080

Which allows me to hit

 http://localhost:8080/actuator/

Upvotes: 6

Prabhakar Kumar Ojha
Prabhakar Kumar Ojha

Reputation: 59

Please check your log which genereted by ide, you should not get something like that in you init log. Exposing 13 endpoint(s) beneath base path ''(if you are getting the same, please add this line management.endpoints.web.base-path=/actuator into application.properties ) I am talking about console log where you can check as like below screenshot.

enter image description here

basically, add this line management.endpoints.web.base-path=/actuator in your application application.prperties and try.

Upvotes: 0

rafaeldcfarias
rafaeldcfarias

Reputation: 31

I solved for spring 2.6.x with a bean

    @Bean
    public HttpTraceRepository httpTraceRepository() {
        return new InMemoryHttpTraceRepository();
    }

as aware for the project instructions on the link: Spring-Boot-2.2.0-M3-Release-Notes

Upvotes: 3

daim tak
daim tak

Reputation: 81

I'm using a spring boot. I got this simple message from spring boot.😇

Spring Boot /actuator returns 404 not found

here is my application.yml file.

server:
  port: 6150
  servlet:
    context-path: /


management:
  server:
    port: 6150
  endpoints:
    web:
      base-path: /actuator
      exposure:
        include: "*"

and then:

http://localhost:6150/actuator

I know this question is quit old and some situation(condition) is different.
I hopefully someone save their time.

Upvotes: 8

Joseph Cass
Joseph Cass

Reputation: 149

I had a similar problem, but my issue was that the following application property was set in my project:

management:
  endpoints:
    web:
      base-path: /

Which meant that the actual endpoint for something like: http://localhost:8080/actuator/beans

was in fact: http://localhost:8080/beans

Upvotes: 4

rschmidt13
rschmidt13

Reputation: 379

For my project, the problem could be resolved by adding the maven-clean-plugin. In the project, I am using the spring-boot-maven-plugin like this:

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
  <outputDirectory>./out</outputDirectory>
</configuration>

I was not able to view any indicator until using the maven-clean-plugin:

<artifactId>maven-clean-plugin</artifactId>
<configuration>
  <filesets>
    <fileset>
      <directory>./out</directory>
    </fileset>
  </filesets>
</configuration>

Upvotes: 0

JoseLuis
JoseLuis

Reputation: 113

Because you misunderstand.

Exposed endpoints are in two ways, please read carefully in the docs. One is exposed to JMX, while the other is exposed to WEB.

enter image description here

Obviously, if you enable the beans endpoint, it only expose to JMX.

Upvotes: 2

teuber789
teuber789

Reputation: 1637

Certain actuator endpoints are disabled, and have to be enabled before you can use them. I was trying to access /actuator/beans, which turns out to be just such an endpoint. According to the docs, all you need is to enable them in your application.properties file:

management.endpoints.web.exposure.include=health,info,beans

Upvotes: 13

Vasudev
Vasudev

Reputation: 1017

It was a version conflict for me which was why the actuator endpoints were not exposed. I removed the version from the pom file for spring-boot-starter-actuator to make it work

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <!--<version>1.5.6.RELEASE</version>-->
</dependency>

Upvotes: 1

Manisha
Manisha

Reputation: 71

I had the same 404 error, even after exactly following Spring documentation. What finally worked for me was deleting actuator dependency and the jar, and adding it again, with a mvn clean install. It worked :)

Upvotes: 7

user9814789
user9814789

Reputation: 9

If you are getting 401 unauthorised then you should add roll "ACTUATOR" in your token, then only you will be able to hit /actuator endpoints of your application.

Upvotes: -1

Abhinav Sahu
Abhinav Sahu

Reputation: 302

As per above answers Try

 http://localhost:8080/<server.servlet.context-path>/actuator/

but if it show error so there would be these possible reason is that you not include dependency in you pom.xml

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

Upvotes: 8

Narendar Reddy M
Narendar Reddy M

Reputation: 1609

Spring boot Actuator URL changing through SpringBoot Releases, Initially we can Access Actuator URL with https://localhost:8080/actuator

in early milestone versions of springboot 2.0.0 the URL is https://localhost:8080/application

Now current springboot version it can be access through https://localhost:8080/actuator

Upvotes: 10

RAJKUMAR NAGARETHINAM
RAJKUMAR NAGARETHINAM

Reputation: 1518

Please check if you have configured server.servlet.contextPath=/myendpoint

If you have done like this please try localhost:8080/{server.servlet.contextPath}/actuator

Upvotes: 34

GnanaJeyam
GnanaJeyam

Reputation: 3170

I think there is a context path /myendpoint in your application.

Please try with this endpoint http://localhost:8080/myendpoint/actuator

Upvotes: 2

Related Questions