Skip to content

Pulse

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.

Read more →

Timeout-budget propagation

The deadline travels with the request. Every hop sees the time remaining and fails fast instead of holding doomed connections open.

Read more →

Context that survives async

@Async, @Scheduled, custom executors, Kafka — traceId, requestId, userId, tenant, budget all arrive on the worker thread automatically.

Read more →

Trace-context guard

A single PromQL query points at the upstream that's stripping traceparent. Shipped alert tells you the route in the message.

Read more →

Structured logs, OTel-aligned

Single JSON shape on every line, with deploy / commit / pod / cloud region stamped automatically. PII masking on by default.

Read more →

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.

Read more →

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.