Candidate Assessment Project
Overview
You will work on a Java Spring Boot web application with a Thymeleaf frontend for managing orders.
The application includes:
- REST endpoints (
/api/orders) and web endpoints (/web/orders) - Order creation with
id,productName, andquantity - Viewing and deleting orders via forms
- Metrics exposed via Spring Boot Actuator at
/actuator/prometheus - Application logging configured for INFO, ERROR, and DEBUG levels
Environment
The pre-configured environment is provided with:
- The Java application, Prometheus and Grafana already set up inside
docker-compose.yml. - Prometheus scraping configurations for the application's
/actuator/prometheusendpoint ready.
You can start the environment (after minimal manipulation) with:
docker-compose up
N.B. Grafana is to be configured to use Prometheus as its data source.
Task
Monitoring and Dashboard Creation
Your task is to create a Grafana dashboard to monitor this application using Prometheus as the data source.
The dashboard should include:
- Total orders created
- Total orders deleted
- HTTP request latency (p95, p99)
- JVM memory and CPU usage
- Logged events count (INFO, ERROR)
- Any additional metrics you consider relevant for application stability and debugging
Custom Metrics
As part of this assessment, you are required to create and expose custom metrics in the application. Examples of custom metrics you could implement:
- Number of orders per product
- Average quantity per order
- Custom application counters or timers useful for business KPIs
These custom metrics should be:
- Exposed via Prometheus in the application
- Documented in the deliverables
- Visualized in the Grafana dashboard
Brief Observability Strategy
In addition to the dashboard:
- Describe which alerts you would configure, including thresholds and the rationale behind them.
Optional Improvements
You are welcome to implement additional improvements, such as:
- Adding tags to metrics for richer filtering
- Improving structured logging to trace order flows
- Tools and approaches for profiling and identifying performance bottlenecks
Deliverables
- Create a Git repository.
- Add the Grafana dashboard JSON ready to import under a
grafana/monitoring/folder. - Add your updated Java application with custom metrics exposed.
- Create a
README.mddescribing:- What you did
- How to use the dashboard
- Which panels were created and their purpose
- Proposed alerts and thresholds
- The custom metrics you created and their purpose
Requirements
- Java 17
- Maven
- Docker and Docker Compose
Objective
This assessment aims to evaluate your ability to:
- Configure effective monitoring on a Java web application
- Select and create meaningful metrics for observability and debugging
- Implement custom Prometheus metrics for business and technical insights
- Communicate clearly through documentation
- Apply DevOps practices for production stability
- Find and correct anti-patterns in the configuration
Contact
For technical questions, please contact:
Thank you for your time and effort on this assessment.