Setting Up a Spring Boot Admin Server for Application Monitoring
Production applications need more than logs and occasional manual checks. A Spring Boot Admin Server provides a central dashboard for Spring Boot services, showing health status, metrics, environment details, loggers, and other Actuator information. It is useful for teams managing APIs, payment services, authentication systems, and internal applications from one location.
For Australian development teams, central monitoring is especially valuable when services run across Sydney, Melbourne, Brisbane, Perth, or cloud regions outside the country. A shared dashboard gives developers and operations staff a consistent view during local business hours, evening support, and busy periods such as end-of-financial-year processing.
Understand The Monitoring Architecture
Spring Boot Admin uses a client-server model. The Admin Server hosts the web interface, while each monitored Spring Boot application registers itself as a client. The client sends its service URL and metadata to the server, which then reads permitted Actuator endpoints.
Actuator supplies the operational data, including health checks, application information, metrics, thread dumps, and log levels. The Admin Server does not replace application logging or a full observability platform, but it offers a practical control panel for small and medium-sized Java systems.
Create The Admin Server Project
Create a standard Spring Boot application and add the Admin Server dependency. With Maven, the relevant dependency is:
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
Enable the server on the main application class:
@SpringBootApplication
@EnableAdminServer
public class MonitoringServerApplication {
public static void main(String[] args) {
SpringApplication.run(MonitoringServerApplication.class, args);
}
}
Run the application on a dedicated port, such as 8080, and open /applications in a browser. Keep the Spring Boot and Spring Boot Admin versions compatible, particularly when upgrading to a new Spring Boot generation.
Expose Actuator Data Carefully
Each monitored application needs the Actuator and Admin client dependencies:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
A basic client configuration can be placed in application.yml:
spring:
boot:
admin:
client:
url: http://localhost:8080
instance:
service-host-type: ip
management:
endpoints:
web:
exposure:
include: health,info,metrics,loggers
endpoint:
health:
show-details: when_authorized
Avoid exposing every endpoint by default. Environment variables, configuration properties, thread dumps, and heap information can reveal sensitive operational details. In a customer-facing service, expose only the endpoints required by your support process.
Register Applications Securely
For local testing, the client can register with the Admin Server without authentication. A shared environment should use credentials and HTTPS. Spring Security can protect the dashboard, while the client sends its registration credentials:
spring:
boot:
admin:
client:
url: https://admin.example.com
username: monitor-client
password: ${ADMIN_CLIENT_PASSWORD}
The server should use a separate administrator account for human access. Keep passwords in a secret manager or deployment platform rather than committing them to Git. Configure firewall rules, private networking, or an allowlist so Actuator endpoints cannot be reached freely from the public internet.
Australian organisations should also consider the Privacy Act and sector-specific obligations when displaying environment data. Avoid placing customer names, email addresses, payment information, or authentication tokens in health details, application metadata, or log messages.
Add Health Indicators And Metadata
A useful health endpoint checks dependencies that affect real user transactions. For example, a payment integration might report database connectivity and gateway availability, while an authentication service could verify its identity provider connection. Custom indicators should fail clearly without exposing credentials or internal security details.
Add application metadata so the dashboard is meaningful when several services have similar names:
spring:
application:
name: orders-api
boot:
admin:
client:
instance:
metadata:
environment: production
region: ap-southeast-2
team: platform
Use metadata such as environment, release version, team, and region. A service deployed for Melbourne customers may need to be distinguished from a Perth workload or a test instance in a different cloud region.
Operate The Dashboard Responsibly
The Admin Server dashboard is most effective when it supports a defined response process. Health status can reveal an outage quickly, while metrics and log-level controls help investigate a problem without immediately redeploying the application. Integrate it with existing logs, incident management, and infrastructure monitoring when the system grows.
For Australian teams, schedule maintenance and alert testing around local time zones rather than relying on UTC alone. A service that appears healthy in Sydney may still have a dependency issue affecting users in Brisbane or Perth. During EOFY traffic, retail campaigns, or payment settlement windows, review thresholds and capacity before the expected load arrives.
Recommended Monitoring Practices
- Use HTTPS and authentication for every shared Admin Server environment.
- Expose only the Actuator endpoints required for diagnosis and support.
- Store Admin Server credentials in environment variables or a managed secrets service.
- Add environment, region, team, and version metadata to every registered application.
- Create health indicators for databases, queues, external APIs, and payment providers.
- Verify dashboard access and alerts during scheduled incident-response exercises.
Start with a local Admin Server and one non-production client, then test authentication, health details, metrics visibility, and failure behaviour. Once the setup is reliable, deploy the server inside a protected network and register production services with carefully scoped access.