Summary
Portfolio demonstration: configurable anomaly monitoring for environments with many systems generating operational metrics. Core loop is scheduled collection → windowed evaluation → alerts, so operators can define collectors, series, and monitors without new code per metric source.
Problem
Large environments often rely on ad-hoc scripts, system-specific tools, and dashboards. That fragmentation creates inconsistency and duplicated effort, and makes uniform anomaly detection hard to apply. The need is a first-class, configurable capability: schedule collection, define named series, apply windowed threshold evaluation, and surface alerts — one system operations can use regardless of the underlying source.
Approach
Spring schedules drive collection jobs against STUB or CloudWatch sources. Observations append to MongoDB series; monitors evaluate sliding windows against rules and write alert records; notification channels fan out (Slack verified on state transitions). Series is the hub for tags, jobs, and monitors — a modular monolith with clear domain contracts.
- Java 17 / Spring Boot APIs with Basic auth and team-scoped config
- STUB and AWS CloudWatch collectors with static-threshold monitors
- Slack notification channels on alert state transitions
- React + Vite operator console: CRUD, search, graphs, and Test tabs
- Config-driven collectors, series, and monitors
- Testcontainers, smoke tracer, and GitHub Actions CI
Key decisions: domain-agnostic and config-first design; modular monolith before any microservice split; contracts and ADRs before feature sprawl; setup-test loop (job Test → monitor Test → Slack) as the demo spine; SPA operator console for practical ops UX. Verification layers unit tests through Testcontainers to a smoke tracer, with structured JSON logs and Actuator health for runtime visibility.
Operators define a series, its tag schema, and the jobs and monitors bound to it from the console rather than in code:
Monitors bind the alert path, evaluation rule, and notification channel in one place:
Results & limits
Delivered a coherent, demoable monitoring loop: centralized anomaly detection, config-driven collectors and monitors, consistent windowed evaluation, and an operator console for setup and verification — including CloudWatch ingest and Slack alerts on transitions.
Deferred: learned baselines, multi-team RBAC UX, broader connectors, email delivery, and production SPA hosting.
Links
Reach out via Contact to discuss this project or schedule a walkthrough.