or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

audit.mdbuiltin-endpoints.mdendpoints.mdhealth.mdindex.mdinfo.mdmetrics.md
tile.json

tessl/maven-org-springframework-boot--spring-boot-actuator

Spring Boot Actuator provides production-ready monitoring and management features including health checks, metrics, auditing, and operational endpoints.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.springframework.boot/spring-boot-actuator@3.5.x

To install, run

npx @tessl/cli install tessl/maven-org-springframework-boot--spring-boot-actuator@3.5.0

index.mddocs/

Spring Boot Actuator

Spring Boot Actuator provides production-ready monitoring and management features for Spring Boot applications. It includes built-in endpoints for health checks, metrics collection, auditing, and application introspection, with support for both HTTP and JMX access.

Package Information

  • Package Name: spring-boot-actuator
  • Package Type: maven
  • Language: Java
  • Installation:
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-actuator</artifactId>
      <version>3.5.3</version>
    </dependency>

Core Imports

import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.boot.actuate.health.ReactiveHealthIndicator;
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.info.InfoContributor;
import org.springframework.boot.actuate.info.Info;
import org.springframework.boot.actuate.audit.AuditEvent;
import org.springframework.boot.actuate.metrics.MetricsEndpoint;

Basic Usage

Creating a Custom Health Indicator

import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.boot.actuate.health.Health;
import org.springframework.stereotype.Component;

@Component
public class CustomHealthIndicator implements HealthIndicator {

    @Override
    public Health health() {
        // Perform your health check logic
        boolean healthy = checkSystemHealth();
        
        if (healthy) {
            return Health.up()
                .withDetail("status", "All systems operational")
                .build();
        } else {
            return Health.down()
                .withDetail("error", "System unavailable")
                .build();
        }
    }
    
    private boolean checkSystemHealth() {
        // Your health check implementation
        return true;
    }
}

Creating a Custom Endpoint

import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.stereotype.Component;
import java.util.Map;

@Endpoint(id = "custom")
@Component
public class CustomEndpoint {

    @ReadOperation
    public Map<String, Object> customInfo() {
        return Map.of(
            "status", "active",
            "version", "1.0.0",
            "uptime", getUptime()
        );
    }
    
    private String getUptime() {
        // Calculate uptime
        return "5 days, 3 hours";
    }
}

Architecture

Spring Boot Actuator is built around several key architectural components:

  • Endpoint Framework: Annotation-based system for creating monitoring endpoints accessible via HTTP and JMX
  • Health System: Extensible health checking with built-in indicators for databases, messaging, and infrastructure
  • Metrics Integration: Micrometer-based metrics collection with support for various monitoring systems
  • Info System: Application metadata and build information contributors
  • Audit Framework: Security and application event auditing capabilities
  • Auto-Configuration: Automatic setup and configuration of actuator components

Capabilities

Endpoint Framework

Core framework for creating custom actuator endpoints with support for HTTP and JMX access. Provides annotations for defining operations and automatic integration with Spring Boot's management infrastructure.

// Endpoint creation annotations
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Endpoint {
    String id() default "";
    @Deprecated(since = "3.4.0", forRemoval = true)
    boolean enableByDefault() default true;
    Access defaultAccess() default Access.UNRESTRICTED;
}

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ReadOperation {
    String[] produces() default {};
    Class<? extends Producible> producesFrom() default Producible.class;
}

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface WriteOperation {
    String[] produces() default {};
    Class<? extends Producible> producesFrom() default Producible.class;
}

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DeleteOperation {
    String[] produces() default {};
    Class<? extends Producible> producesFrom() default Producible.class;
}

Endpoint Framework

Health Monitoring

Comprehensive health checking system with built-in indicators for databases, messaging systems, and infrastructure components. Supports both blocking and reactive implementations.

public interface HealthIndicator {
    Health health();
}

public interface ReactiveHealthIndicator {
    Mono<Health> health();
}

public final class Health {
    public static Builder up();
    public static Builder down();
    public static Builder unknown();
    public static Builder status(Status status);
}

Health Monitoring

Metrics Collection

Integration with Micrometer for comprehensive application metrics including JVM, HTTP, database, and custom metrics. Supports various monitoring system exports including Prometheus, CloudWatch, and more.

public class MetricsEndpoint {
    public MetricsEndpoint(MeterRegistry registry);
    public MetricNamesDescriptor listNames();
    public MetricDescriptor metric(String requiredMetricName, List<String> tag);
}

// Auto-configuration for metrics binders
public interface MeterBinder {
    void bindTo(MeterRegistry registry);
}

Metrics Collection

Application Information

System for contributing application metadata, build information, Git details, and environment information accessible via the info endpoint.

public interface InfoContributor {
    void contribute(Info.Builder builder);
}

public final class Info {
    public Map<String, Object> getDetails();
    
    public static final class Builder {
        public Builder withDetail(String key, Object value);
        public Builder withDetails(Map<String, Object> details);
        public Info build();
    }
}

Application Information

Audit Framework

Event auditing system for tracking authentication events, authorization failures, and custom application events with pluggable storage backends.

public class AuditEvent {
    public AuditEvent(String principal, String type, Map<String, Object> data);
    public AuditEvent(String principal, String type, String... data);
    public AuditEvent(Instant timestamp, String principal, String type, Map<String, Object> data);
    
    public Instant getTimestamp();
    public String getPrincipal();
    public String getType();
    public Map<String, Object> getData();
}

public interface AuditEventRepository {
    void add(AuditEvent event);
    List<AuditEvent> find(String principal, Instant after, String type);
}

Audit Framework

Built-in Endpoints

Comprehensive set of pre-built endpoints for application management including beans, environment, configuration properties, thread dumps, heap dumps, and more.

// Key built-in endpoints
public class BeansEndpoint { /* Application context beans */ }
public class EnvironmentEndpoint { /* Environment properties */ }
public class ConfigurationPropertiesEndpoint { /* Configuration properties */ }
public class ThreadDumpEndpoint { /* Thread dump generation */ }
public class HeapDumpEndpoint { /* Heap dump generation */ }
public class ShutdownEndpoint { /* Graceful shutdown */ }

Built-in Endpoints

Types

Core Types

// Endpoint access level enumeration
public enum Access {
    /** No access to the endpoint is permitted */
    NONE,
    /** Read-only access to the endpoint is permitted */
    READ_ONLY,
    /** Unrestricted access to the endpoint is permitted */
    UNRESTRICTED;
    
    /** Cap access to a maximum permitted level */
    public Access cap(Access maxPermitted);
}

// Health status enumeration
public final class Status {
    public static final Status UP;
    public static final Status DOWN;
    public static final Status OUT_OF_SERVICE;
    public static final Status UNKNOWN;
    
    public Status(String code, String description);
    public String getCode();
    public String getDescription();
}

// Endpoint identifier
public final class EndpointId {
    public static EndpointId of(String value);
    public String getValue();
}

// Security context for operations
public final class SecurityContext {
    public static SecurityContext of(Principal principal, String... roles);
    public Principal getPrincipal();
    public boolean isUserInRole(String role);
}

// Web endpoint response wrapper
public final class WebEndpointResponse<T> {
    public WebEndpointResponse(T body, int status);
    public T getBody();
    public int getStatus();
}