Reputation: 955
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
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
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
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.
basically, add this line management.endpoints.web.base-path=/actuator in your application application.prperties and try.
Upvotes: 0
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
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
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
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
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.
Obviously, if you enable the beans endpoint, it only expose to JMX.
Upvotes: 2
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
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
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
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
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
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
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
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