Implement Performance Dashboard for operational monitoring (SZ-143)
rk@tigase.net opened 18 hours ago

Problem Statement

Provision a GUI screen to display Sztab system performance metrics for performance monitoring and troubleshooting.

Background

Sztab exposes Spring Boot Actuator endpoints (/actuator/metrics, /actuator/heapdump, /actuator/threaddump, etc.) but there is currently no UI to consume them. During performance investigations (SZ-125 streaming, push latency diagnosis) the team is reduced to raw curl calls inside the Docker container. Spring Boot Admin provides a zero-custom-code operational dashboard that surfaces these metrics in a usable form.

This is also a team capability showcase — when the system is performing poorly, the dashboard gives developers and QA an immediate visual on what is ailing it (heap pressure, slow endpoints, thread contention) without needing CLI access.

Tasks

  •  Add spring-boot-admin-starter-client dependency to Sztab backend pom.xml (version aligned to Spring Boot version in use)
  •  Add sztab-admin container to docker-compose.yml using michayaak/spring-boot-admin:3.3.x
  •  Configure client registration in application-docker.yml pointing at the admin container
  •  Expose all actuator endpoints in the Docker profile (management.endpoints.web.exposure.include=*)
  •  Add Caddy route so the dashboard is reachable at admin.sztab.local rather than a raw port
  •  Verify Sztab backend registers and appears healthy in the dashboard on docker compose up
  •  Lock down exposed endpoints to a safe subset before any production profile is defined

Acceptance Criteria

  • Spring Boot Admin is reachable at http://admin.sztab.local in the local Docker environment
  • Sztab backend registers automatically on startup with no manual intervention
  • The following are visible and functional in the UI: heap/GC metrics, HTTP request rates per endpoint, thread dump, log level editor, health details
  • heapdump and env endpoints are NOT exposed in any production-profile configuration
  • No existing functionality is affected by the client dependency addition

Notes

management.endpoints.web.exposure.include=* must be scoped to the Docker/dev profile only — never the default or production profile.

Version alignment: Spring Boot Admin client version must match the Spring Boot parent version in pom.xml to avoid dependency conflicts.

  • rk@tigase.net commented 18 hours ago
    rksuma@Ramakrishnans-MacBook-Pro sztab % git checkout -b feature/SZ-143-performance-dashboard
    Switched to a new branch 'feature/SZ-143-performance-dashboard'
    rksuma@Ramakrishnans-MacBook-Pro sztab % 
    
    
  • rk@tigase.net changed state to 'In Progress' 18 hours ago
    Previous Value Current Value
    Open
    In Progress
  • rk@tigase.net commented 18 hours ago

    Metrics exposed by Spring Boot Actuator

    rksuma@Ramakrishnans-MacBook-Pro sztab % docker exec sztab-sztab-backend-1 curl http://localhost:8181/actuator
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100  1907    0  1907    0     0  51550      0 --:--:-- --:--:-- --:--:-- 52972
    {"_links":{"self":{"href":"http://localhost:8181/actuator","templated":false},"beans":{"href":"http://localhost:8181/actuator/beans","templated":false},"caches-cache":{"href":"http://localhost:8181/actuator/caches/{cache}","templated":true},"caches":{"href":"http://localhost:8181/actuator/caches","templated":false},"health":{"href":"http://localhost:8181/actuator/health","templated":false},"health-path":{"href":"http://localhost:8181/actuator/health/{*path}","templated":true},"info":{"href":"http://localhost:8181/actuator/info","templated":false},"conditions":{"href":"http://localhost:8181/actuator/conditions","templated":false},"configprops":{"href":"http://localhost:8181/actuator/configprops","templated":false},"configprops-prefix":{"href":"http://localhost:8181/actuator/configprops/{prefix}","templated":true},"env":{"href":"http://localhost:8181/actuator/env","templated":false},"env-toMatch":{"href":"http://localhost:8181/actuator/env/{toMatch}","templated":true},"flyway":{"href":"http://localhost:8181/actuator/flyway","templated":false},"loggers":{"href":"http://localhost:8181/actuator/loggers","templated":false},"loggers-name":{"href":"http://localhost:8181/actuator/loggers/{name}","templated":true},"heapdump":{"href":"http://localhost:8181/actuator/heapdump","templated":false},"threaddump":{"href":"http://localhost:8181/actuator/threaddump","templated":false},"metrics-requiredMetricName":{"href":"http://localhost:8181/actuator/metrics/{requiredMetricName}","templated":true},"metrics":{"href":"http://localhost:8181/actuator/metrics","templated":false},"sbom":{"href":"http://localhost:8181/actuator/sbom","templated":false},"sbom-id":{"href":"http://localhost:8181/actuator/sbom/{id}","templated":true},"scheduledtasks":{"href":"http://localhost:8181/actuator/scheduledtasks","templated":false},"mappings":{"href":"http://localhost:8181/actuator/mappings","templated":false}}}%                                                                        rksuma@Ramakrishnans-MacBook-Pro sztab % 
    
    
issue 1 of 1
Type
New Feature
Priority
Normal
Assignee
Version
1.10.1
Sprints
n/a
Customer
n/a
Issue Votes (0)
Watchers (2)
Reference
SZ-143
Please wait...
Page is in error, reload to recover