Spring Boot Actuator Example | Spring Boot 2.x Actuator OnlineTutorialsPoint

PROGRAMMINGJava ExamplesC Examples
Java Examples
C Examples
C Tutorials
aws
JAVAEXCEPTIONSCOLLECTIONSSWINGJDBC
EXCEPTIONS
COLLECTIONS
SWING
JDBC
JAVA 8
SPRING
SPRING BOOT
HIBERNATE
PYTHON
PHP
JQUERY
PROGRAMMINGJava ExamplesC Examples
Java Examples
C Examples
C Tutorials
aws
In this tutorials, we are going to see what is Spring Boot Actuator and how it is useful to our production release applications.
Actuator is a sub-project of Spring Boot. It brings production-ready features of our application. It is mainly used to expose operational information about the running application such as :
The health of the application, metrics, loggings, dumps, env and etc. It typically uses HTTP endpoints to enable us to interact with it.
It allows us to monitor our application
To gather the application’s metrics
Understand the real traffic
We can get the production grade tools via the HTTP end pints, by making use of these we can get the above information and we are also free to configure and extend these features in many ways.
The simplest way to enable the actuator feature in our application is to add the spring-boot-starter-actuator ‘Starter’. This dependency provides all of the Spring Boot’s production-ready features.
To add the actuator to a Maven based project, add the following ‘Starter’ dependency:
<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency>
</dependencies>
spring-boot-starter-parent-2.0.4 RELEASE
spring-boot-starter-actuator
Java8
IntelliJ IDEA
If you are familiar with actuator 1.x versions, most of the actuator endpoints were available.
Comming to the actuator 2.x versions, Actuator comes with most of the endpoints disabled.
Would we want to enable all of them at a time, we should set management.endpoints.web.exposure.include=* property in application.properties file.
You can find the further details about the 2.x version in the official document
@Bean
public SecurityWebFilterChain securityWebFilterChain(
  ServerHttpSecurity http) {
    return http.authorizeExchange()
      .pathMatchers("/actuator/**").permitAll()
      .anyExchange().authenticated()
      .and().build();
}
/auditevents – Exposes audit events information for the current application.
/beans – returns all available beans in your application
/conditions – Shows the conditions that were evaluated on configuration and auto-configuration classes and the reasons why they did or did not match
/configprops – Displays a collated list of all @ConfigurationProperties beans.
/env – returns the current environment properties.Properties from Spring’s ConfigurableEnvironment.
/flyway – provides details about our Flyway database migrations
/health – shows the health status of our application
/heapdump – returns a GZip compressed hprof heap dump file of yor application.
/info – returns general information about the application. It might be custom data, build information or details about the latest commit
/liquibase – Shows any Liquibase database migrations that have been applied.
/logfile – Returns the contents of the logfile (if logging.file or logging.path properties have been set).
/loggers – enables us to query and modify the logging level of our application
/metrics – details metrics of our current application. This might include generic metrics as well as custom ones
/prometheus – exposes metrics in a format that can be scraped by a Prometheus server.
/scheduledtasks – provides details about every scheduled task within our application
/sessions – Allows retrieval and deletion of user sessions from a Spring Session-backed session store. It may not available when using Spring Session’s support for reactive web applications
/shutdown – performs a graceful shutdown of the application
/threaddump – dumps the thread information of the underlying JVM

<?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.onlinetutorialspoint</groupId>
  <artifactId>SpringBoot-Actuator-Example</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>SpringBoot-Actuator-Example</name>
  <description>Demo project for Spring Boot</description>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.4.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>
  </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-actuator</artifactId>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>

server.port: 9000 
management.server.port: 9001 
management.server.address: 127.0.0.1 
management.endpoints.web.exposure.include=*
package com.onlinetutorialspoint;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    @GetMapping("hello")
    @ResponseBody
    public String hello(@RequestParam(name="name",required = false,defaultValue = "user") String name){
        return "hello "+name+" :)";
    }
}

package com.onlinetutorialspoint;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.PropertySource;

@SpringBootApplication
@PropertySource("classpath:application.properties")
public class SpringBootActuatorApplication {

  public static void main(String[] args) {
      SpringApplication.run(SpringBootActuatorApplication.class, args);
  }
}


Run Application:
E:\work\SpringBoot-Actuator-Example>mvn spring-boot:run
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building SpringBoot-Actuator-Example 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> spring-boot-maven-plugin:2.0.4.RELEASE:run (default-cli) > test-compile @ SpringBoot-Actuator-Example >>>
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ SpringBoot-Actuator-Example ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ SpringBoot-Actuator-Example ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to E:\work\SpringBoot-Actuator-Example\target\classes
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:testResources (default-testResources) @ SpringBoot-Actuator-Example ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\work\SpringBoot-Actuator-Example\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.7.0:testCompile (default-testCompile) @ SpringBoot-Actuator-Example ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] <<< spring-boot-maven-plugin:2.0.4.RELEASE:run (default-cli) < test-compile @ SpringBoot-Actuator-Example <<<
[INFO]
[INFO]
[INFO] --- spring-boot-maven-plugin:2.0.4.RELEASE:run (default-cli) @ SpringBoot-Actuator-Example ---

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.0.4.RELEASE)

2018-08-12 08:42:59.223  INFO 6280 --- [           main] c.o.SpringBootActuatorApplication        : Starting SpringBootActuatorApplication on DESKTOP-RN4SMHT with PID 6280 (E:\work\S
pringBoot-Actuator-Example\target\classes started by Lenovo in E:\work\SpringBoot-Actuator-Example)
2018-08-12 08:42:59.239  INFO 6280 --- [           main] c.o.SpringBootActuatorApplication        : No active profile set, falling back to default profiles: default
2018-08-12 08:42:59.444  INFO 6280 --- [           main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWeb
ServerApplicationContext@4f1d523f: startup date [Sun Aug 12 08:42:59 IST 2018]; root of context hierarchy
2018-08-12 08:43:04.229  INFO 6280 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 9000 (http)
2018-08-12 08:43:04.338  INFO 6280 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2018-08-12 08:43:04.338  INFO 6280 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.32
2018-08-12 08:43:04.354  INFO 6280 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener   : The APR based Apache Tomcat Native library which allows optimal performance in pro
duction environments was not found on the java.library.path: [C:\Program Files\Java\jdk1.8.0_161\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\ProgramData\Oracle\Java
\javapath;C:\oraclexe\app\oracle\product.2.0\server\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\
MySQL\MySQL Server 5.5\bin;C:\php;C:\Apache24;C:\Apache24\bin;C:\Program Files\Java\jdk1.8.0_161\bin;D:\Softwares\apache-maven-3.5.2\bin;C:\Program Files\Git\cmd;C:\Program Files\Git
\mingw64\bin;C:\Program Files\Git\usr\bin;D:\Softwares\apache-ant-1.10.2\bin;C:\ProgramData\chocolatey\bin;;C:\WINDOWS\System32\OpenSSH\;C:\Users\Lenovo\AppData\Local\Programs\Python
\Python36\Scripts\;C:\Users\Lenovo\AppData\Local\Programs\Python\Python36\;C:\Users\Lenovo\AppData\Local\Microsoft\WindowsApps;C:\Users\Lenovo\AppData\Local\atom\bin;C:\Users\Lenovo\
AppData\Local\Microsoft\WindowsApps;;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\Docker Toolbox;.]
2018-08-12 08:43:04.620  INFO 6280 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2018-08-12 08:43:04.635  INFO 6280 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 5222 ms
.........
.........

Output:
Accessing Spring Boot Actuator endpoints:
http://localhost:9001/actuator/metrics
http://localhost:9001/actuator/health
http://localhost:9001/actuator/heapdump
Happy Learning 🙂


SpringBoot-Actuator-Example

File size: 79 KB
Downloads: 647


How to set Spring Boot SetTimeZone
Spring Boot Environment Properties reading based on activeprofile
Spring Boot Apache ActiveMq In Memory Example
Spring Boot How to change the Tomcat to Jetty Server
Spring Boot In Memory Basic Authentication Security
SSL Spring Boot HTTPs Enabling Example
MicroServices Spring Boot Eureka Server Example
Simple Spring Boot Example
How to use Spring Boot Random Port
Spring Boot EhCache Example
Spring Boot Basic Authentication Example
External Apache ActiveMQ Spring Boot Example
Spring Boot JdbcTemplate CRUD Operations Mysql
Spring Boot JNDI Configuration – External Tomcat
Spring Boot Actuator Database Health Check

How to set Spring Boot SetTimeZone
Spring Boot Environment Properties reading based on activeprofile
Spring Boot Apache ActiveMq In Memory Example
Spring Boot How to change the Tomcat to Jetty Server
Spring Boot In Memory Basic Authentication Security
SSL Spring Boot HTTPs Enabling Example
MicroServices Spring Boot Eureka Server Example
Simple Spring Boot Example
How to use Spring Boot Random Port
Spring Boot EhCache Example
Spring Boot Basic Authentication Example
External Apache ActiveMQ Spring Boot Example
Spring Boot JdbcTemplate CRUD Operations Mysql
Spring Boot JNDI Configuration – External Tomcat
Spring Boot Actuator Database Health Check
 


Δ
 Spring Boot – Hello World
 Spring Boot – MVC Example
 Spring Boot- Change Context Path
 Spring Boot – Change Tomcat Port Number
 Spring Boot – Change Tomcat to Jetty Server
 Spring Boot – Tomcat session timeout
 Spring Boot – Enable Random Port
 Spring Boot – Properties File
 Spring Boot – Beans Lazy Loading
 Spring Boot – Set Favicon image
 Spring Boot – Set Custom Banner
 Spring Boot – Set Application TimeZone
 Spring Boot – Send Mail
 Spring Boot – FileUpload Ajax
 Spring Boot – Actuator
 Spring Boot – Actuator Database Health Check
 Spring Boot – Swagger
 Spring Boot – Enable CORS
 Spring Boot – External Apache ActiveMQ Setup
 Spring Boot – Inmemory Apache ActiveMq
 Spring Boot – Scheduler Job
 Spring Boot – Exception Handling
 Spring Boot – Hibernate CRUD
 Spring Boot – JPA Integration CRUD
 Spring Boot – JPA DataRest CRUD
 Spring Boot – JdbcTemplate CRUD
 Spring Boot – Multiple Data Sources Config
 Spring Boot – JNDI Configuration
 Spring Boot – H2 Database CRUD
 Spring Boot – MongoDB CRUD
 Spring Boot – Redis Data CRUD
 Spring Boot – MVC Login Form Validation
 Spring Boot – Custom Error Pages
 Spring Boot – iText PDF
 Spring Boot – Enable SSL (HTTPs)
 Spring Boot – Basic Authentication
 Spring Boot – In Memory Basic Authentication
 Spring Boot – Security MySQL Database Integration
 Spring Boot – Redis Cache – Redis Server
 Spring Boot – Hazelcast Cache
 Spring Boot – EhCache
 Spring Boot – Kafka Producer
 Spring Boot – Kafka Consumer
 Spring Boot – Kafka JSON Message to Kafka Topic
 Spring Boot – RabbitMQ Publisher
 Spring Boot – RabbitMQ Consumer
 Spring Boot – SOAP Consumer
 Spring Boot – Soap WebServices
 Spring Boot – Batch Csv to Database
 Spring Boot – Eureka Server
 Spring Boot – MockMvc JUnit
 Spring Boot – Docker Deployment