Running one Spring Boot application, or a handful of them, on a VPS still requires basic visibility.
You need to know:
- Is the application healthy?
- Are errors increasing?
- Are requests slowing down?
- Is memory usage growing?
- Did the application restart?
You may not need a complete monitoring platform to answer those questions.
Spring Boot Actuator already exposes much of the necessary information. StatLite turns it into a focused dashboard for health, HTTP activity, latency, memory, uptime, and restarts.
It runs as a single Go binary and stores its history in SQLite.
View StatLite on GitHub Β· Installation instructions
Why not just use Actuator directly?
Actuator exposes useful health and Micrometer metrics endpoints, but repeatedly opening JSON responses is not a convenient monitoring workflow.
Prometheus and Grafana are excellent when you need:
- Many services or hosts
- Flexible metric queries
- Long retention
- Alert routing
- Shared organizational dashboards
Spring Boot Admin provides broader application administration and monitoring features.
For a few services on one VPS, however, a smaller dashboard may be enough. StatLite reads the Actuator endpoints you already have and presents the operational signals needed for routine checks.
Quick comparison
| Tool | Complexity | Best fit |
|---|---|---|
| Raw Actuator endpoints | Low | Occasional manual checks |
| Spring Boot Admin | Medium | Application administration |
| Prometheus and Grafana | High | Larger observability deployments |
| StatLite | Very low | A few Spring Boot services on a VPS |
These approaches can coexist. Starting with StatLite does not prevent moving to Prometheus and Grafana later.
Set up StatLite
The following example uses the runnable Spring Actuator demo included in the StatLite repository.
1. Expose Actuator health and metrics
Add the required endpoint exposure to your Spring Boot configuration:
management:
endpoints:
web:
exposure:
include: health,metrics
endpoint:
health:
show-details: always
Keep Actuator restricted to trusted networks and add authentication when required.
Start the demo application:
cd examples/spring-actuator-demo
mvn spring-boot:run
Confirm that its endpoints respond:
curl -s http://127.0.0.1:8080/actuator/health
curl -s http://127.0.0.1:8080/actuator/metrics
2. Install StatLite
The installation guide covers the release installer and Homebrew.
You can also build it from source:
git clone https://github.com/pvrlabs/statlite.git
cd statlite
go build -o statlite ./cmd/statlite
3. Configure a target
Create statlite.yaml beside the binary:
server:
listen: "127.0.0.1:9090"
storage:
sqlite_path: "./statlite.sqlite"
polling:
interval: "10s"
timeout: "5s"
targets:
- name: "spring-demo"
actuator_base_url: "http://127.0.0.1:8080/actuator"
This configuration:
- Keeps the dashboard bound to localhost
- Stores history in
statlite.sqlite - Polls the application every ten seconds
- Reads metrics from the applicationβs Actuator base URL
For Basic Auth, multiple applications, retention, and production security, see the configuration documentation.
The demo leaves Actuator unauthenticated because it binds to loopback for local testing. Do not expose the same configuration publicly without appropriate network and authentication controls.
4. Open the dashboard
Start StatLite:
./statlite --config ./statlite.yaml
Then open:
http://127.0.0.1:9090
The demo includes a traffic generator for populating the request, latency, and error charts:
./examples/spring-actuator-demo/generate-traffic.sh
It generates successful, slow, database, 400, 404, and 500 responses. StatLite updates after the next configured polling interval.
Why StatLite stays small
StatLite intentionally uses a narrow architecture:
- One Go binary
- SQLite storage
- No monitoring agent
- No custom instrumentation beyond Actuator
- Multiple Spring Boot targets in one configuration
- Straightforward systemd deployment
It is Actuator-first: your application exposes Actuator, and StatLite provides a focused view over that data.
When StatLite is not enough
Use a broader observability platform when you need distributed tracing, centralized logs, advanced queries, alert routing, long-term retention, or dashboards spanning a large number of systems.
StatLite is not intended to replace enterprise observability. It is for the smaller operational job: monitoring a few Spring Boot services without running a full Prometheus and Grafana stack.
To try it, visit the StatLite repository and follow the installation instructions.

Top comments (0)