Pulse¶
Batteries-included production observability for Spring Boot.
One dependency. Zero agents. Everything your default stack quietly forgets.
Why Pulse?¶
Spring Boot, the OpenTelemetry Java agent, Micrometer, and Log4j2 get you a long way. But you'll still write — or wish you'd written — the boring, unglamorous things that decide whether observability actually works at 3 AM.
Pulse is those things, in one starter, with sensible defaults.
Cardinality firewall¶
One mistakenly-tagged userId can't 100× your metrics bill. Hard cap per
metric+tag with a one-line alert. Costs ~17 ns per call.
Timeout-budget propagation¶
The deadline travels with the request. Every hop sees the time remaining and fails fast instead of holding doomed connections open.
Context that survives async¶
@Async, @Scheduled, custom executors, Kafka — traceId, requestId,
userId, tenant, budget all arrive on the worker thread automatically.
Trace-context guard¶
A single PromQL query points at the upstream that's stripping traceparent.
Shipped alert tells you the route in the message.
Structured logs, OTel-aligned¶
Single JSON shape on every line, with deploy / commit / pod / cloud region stamped automatically. PII masking on by default.
Stable exception fingerprints¶
The same bug groups across deploys, even when the message contains an order ID. On the response, the active span, the metric, and the log line.
And 19 more features¶
Beyond the day-one essentials, Pulse ships another nineteen features for distributed systems and production-grade Spring shops — dependency health map, retry-amplification detection, multi-tenant context, container-aware memory, Kafka time-based lag, SLO-as-code, N+1 query detection, Resilience4j observability, and more.
Each is on by default and opt-out with pulse.<feature>.enabled=false.
You pay for what you turn on.
See the full feature catalogue →
How Pulse compares¶
| Capability | Pulse | Spring Boot defaults | OTel Java agent | Vendor agents |
|---|---|---|---|---|
| Drop-in starter, no agent / no weaving | yes | yes | no | no |
| Cardinality firewall | yes | no | no | no |
| Timeout-budget propagation | yes | no | no | no |
Auto context across @Async / @Scheduled / Kafka |
yes | partial | partial | partial |
| Trace propagation guard + metric | yes | no | no | no |
| Stable error fingerprints | yes | no | no | yes |
| SLO-as-code with PrometheusRule generation | yes | no | no | no |
| Live diagnostic actuator UI | yes | partial | no | proprietary |
| Pre-built Grafana dashboard + alerts + runbooks | yes | no | no | proprietary |
| Vendor lock-in | none | none | none | full |
Status¶
Pulse is 2.0 and published on Maven Central.
- Changelog — what's in each release
- Source on GitHub — issues, discussions, PRs
- Maven Central