PulseOps
Multi-tenant monitoring & incident management platform
In simple words
Watches servers around the clock, raises one clear alert when something breaks, and closes it once it's fixed.
- faster window queries
- 240×
- faster window queries
- served in failover test
- 30/30
- served in failover test
- automated tests
- 37
- automated tests
Overview
A multi-tenant monitoring platform in Spring Boot. Agents stream host metrics; server-side alert rules evaluate them over sliding windows; incidents open, deduplicate and auto-resolve, with Gemini root-cause suggestions kept off the critical path.
How it works
Key engineering decisions
Race-free incident deduplication
Two app instances can evaluate the same rule at the same moment. A PostgreSQL partial unique index on active incidents per service and rule makes a duplicate physically impossible, instead of relying on application-level locks.
Kafka for ingestion
Metrics are keyed by service so each service's events stay in order within a partition. Consumer groups scale horizontally, a dead-letter topic isolates poison messages, and consumers are idempotent so redelivery is safe.
Optimistic locking
Incident updates carry a version, so concurrent writers can't silently overwrite each other's changes (no lost updates).
Stateless replicas
Two stateless API replicas sit behind nginx. In a failover test with one replica stopped, 30 of 30 requests were still served.
AI off the critical path
Gemini root-cause suggestions are generated alongside incidents, so an AI outage or slow response never blocks alerting.
What I built
- Built a multi-tenant monitoring platform in Spring Boot where server-side alert rules evaluate streamed host metrics over sliding windows; incidents open, deduplicate and auto-resolve, with Gemini root-cause suggestions.
- Designed a Kafka ingestion pipeline (partition keys for per-service ordering, consumer groups, dead-letter topic, idempotent consumers) with Redis API-key caching and per-tenant rate limiting.
- Guaranteed one active incident per service and rule across instances with a PostgreSQL partial unique index and blocked lost updates with optimistic locking; indexing cut window queries from 70 ms to 0.3 ms on 2M rows.
- Verified failover with 2 stateless replicas behind nginx (30/30 requests served with one down); deployed live on AWS EC2; 37 tests including Testcontainers integration tests in GitHub Actions CI.
- Built a React + TanStack Query dashboard with 7 auth-guarded pages, live polling and optimistic updates.