tessl install github:giuseppe-trisciuoglio/developer-kit --skill spring-boot-actuatorgithub.com/giuseppe-trisciuoglio/developer-kit
Configure Spring Boot Actuator for production-grade monitoring, health probes, secured management endpoints, and Micrometer metrics across JVM services.
Review Score
86%
Validation Score
11/16
Implementation Score
100%
Activation Score
68%
references/.<!-- Maven -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>// Gradle
dependencies {
implementation "org.springframework.boot:spring-boot-starter-actuator"
}/actuator/health and /actuator/info respond with 200 OK.management.endpoints.web.exposure.include to the precise list or "*" for internal deployments.management.endpoints.web.base-path (e.g., /management) when the default /actuator conflicts with routing.references/endpoint-reference.md.SecurityFilterChain using EndpointRequest.toAnyEndpoint() with role-based rules.management.server.port with firewall controls or service mesh policies for operator-only access./actuator/health/** publicly accessible only when required; otherwise enforce authentication.management.endpoint.health.probes.enabled=true for /health/liveness and /health/readiness.management.endpoint.health.group.* to match platform expectations.HealthIndicator or ReactiveHealthContributor; sample implementations live in references/examples.md#custom-health-indicator.management.metrics.export.*.MeterRegistryCustomizer beans to add application, environment, and business tags for observability correlation.server.observation.* configuration when using Spring Boot 3.2+./actuator/startup (Spring Boot 3.5+) and /actuator/conditions during incident response to inspect auto-configuration decisions.HttpExchangeRepository (e.g., InMemoryHttpExchangeRepository) before enabling /actuator/httpexchanges for request auditing.references/official-actuator-docs.md for endpoint behaviors and limits.management:
endpoints:
web:
exposure:
include: "health,info"
endpoint:
health:
show-details: never@Component
public class PaymentsGatewayHealth implements HealthIndicator {
private final PaymentsClient client;
public PaymentsGatewayHealth(PaymentsClient client) {
this.client = client;
}
@Override
public Health health() {
boolean reachable = client.ping();
return reachable ? Health.up().withDetail("latencyMs", client.latency()).build()
: Health.down().withDetail("error", "Gateway timeout").build();
}
}management:
endpoint:
health:
probes:
enabled: true
group:
readiness:
include: "readinessState,db,paymentsGateway"
show-details: alwaysmanagement:
server:
port: 9091
ssl:
enabled: true
endpoints:
web:
exposure:
include: "health,info,metrics,prometheus"
base-path: "/management"
metrics:
export:
prometheus:
descriptions: true
step: 30s
endpoint:
health:
show-details: when-authorized
roles: "ENDPOINT_ADMIN"@Configuration
public class ActuatorSecurityConfig {
@Bean
SecurityFilterChain actuatorChain(HttpSecurity http) throws Exception {
http.securityMatcher(EndpointRequest.toAnyEndpoint())
.authorizeHttpRequests(c -> c
.requestMatchers(EndpointRequest.to("health")).permitAll()
.anyRequest().hasRole("ENDPOINT_ADMIN"))
.httpBasic(Customizer.withDefaults());
return http.build();
}
}More end-to-end samples are available in references/examples.md.
references/ for verbose documentation to conserve context.curl probes in CI/CD pipelines./actuator/env, /actuator/configprops, /actuator/logfile, and /actuator/heapdump on public networks.scripts/) reserved for future automation; no runtime dependencies today.mvn spring-boot:run or ./gradlew bootRun exposes expected endpoints under /actuator (or custom base path)./actuator/health/readiness returns UP with all mandatory components before promoting to production./actuator/metrics or /actuator/prometheus to ensure required meters (http.server.requests, jvm.memory.used) are present.