commit
This commit is contained in:
125
wellDMonitoringChallenge-main/README.md
Normal file
125
wellDMonitoringChallenge-main/README.md
Normal file
@@ -0,0 +1,125 @@
|
||||
# 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`, and `quantity`
|
||||
- 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/prometheus` endpoint ready.
|
||||
|
||||
You can start the environment (after minimal manipulation) with:
|
||||
|
||||
```bash
|
||||
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.md` describing:
|
||||
- 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:
|
||||
|
||||
[attilio.gualandi@welld.ch]
|
||||
|
||||
---
|
||||
|
||||
Thank you for your time and effort on this assessment.
|
||||
Reference in New Issue
Block a user