Files
WellD-challenge/wellDMonitoringChallenge-main
domenico edb7a69bde commit
2025-10-24 20:55:45 +02:00
..
2025-10-24 20:55:45 +02:00
2025-10-24 20:55:45 +02:00
2025-10-24 20:55:45 +02:00
2025-10-24 20:55:45 +02:00
2025-10-24 20:55:45 +02:00
2025-10-24 20:55:45 +02:00
2025-10-24 20:55:45 +02:00

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:

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.