package de.codecentric.boot.admin.config;
import java.util.Arrays;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties("spring.boot.admin")
public class AdminServerProperties {
/**
* The context-path prefixes the path where the Admin Servers statics assets and api should be
* served. Relative to the Dispatcher-Servlet.
*/
private String contextPath = "";
private MonitorProperties monitor = new MonitorProperties();
private RoutesProperties routes = new RoutesProperties();
public void setContextPath(String pathPrefix) {
if (!pathPrefix.startsWith("/") || pathPrefix.endsWith("/")) {
throw new IllegalArgumentException("ContextPath must start with '/' and not end with '/'");
}
this.contextPath = pathPrefix;
}
public String getContextPath() {
return contextPath;
}
public MonitorProperties getMonitor() {
return monitor;
}
public RoutesProperties getRoutes() {
return routes;
}
public static class MonitorProperties {
/**
* Time interval in ms to update the status of applications with expired statusInfo
*/
private long period = 10_000L;
/**
* Lifetime of status in ms. The status won't be updated as long the last status isn't
* expired.
*/
private long statusLifetime = 10_000L;
/**
* Connect timeout when querying the applications' status and info.
*/
private int connectTimeout = 2_000;
/**
* read timeout when querying the applications' status and info.
*/
private int readTimeout = 5_000;
public void setPeriod(long period) {
this.period = period;
}
public long getPeriod() {
return period;
}
public void setStatusLifetime(long statusLifetime) {
this.statusLifetime = statusLifetime;
}
public long getStatusLifetime() {
return statusLifetime;
}
public int getConnectTimeout() {
return connectTimeout;
}
public void setConnectTimeout(int connectTimeout) {
this.connectTimeout = connectTimeout;
}
public int getReadTimeout() {
return readTimeout;
}
public void setReadTimeout(int readTimeout) {
this.readTimeout = readTimeout;
}
}
public static class RoutesProperties {
/**
* Endpoints to be proxified by spring boot admin.
*/
private String[] endpoints = {"env", "metrics", "trace", "dump", "jolokia", "info", "logfile", "refresh", "flyway", "liquibase", "heapdump", "loggers", "auditevents"};
public String[] getEndpoints() {
return endpoints;
}
public void setEndpoints(String[] endpoints) {
this.endpoints = Arrays.copyOf(endpoints, endpoints.length);
}
}
}