Proposal
Rewrite Observability Kit from scratch on Micrometer (metrics + observation/tracing) instead of OpenTelemetry, as a clean-room replacement for the current 4.x modules.
Proposed modules
| Module |
Role |
observability-kit-micrometer |
Framework-agnostic Flow instrumentation (core) |
observability-kit-spring |
Plain Spring integration (opt-in @Import) |
observability-kit-starter |
Spring Boot auto-config + starter |
Dependency chain: starter → spring → micrometer. Plus IT modules per layer (standalone WAR, plain-Spring WAR, Boot app).
Suggested conventions
- Package
com.vaadin.observability.*, next major (5.0).
- Config under
vaadin.observability.* (covers metrics and tracing).
- Branded public API (
ObservabilityKit, ObservabilityConfig, ObservabilityProperties, …); internals stay unprefixed.
Flow dependency
The core module needs two new listener SPIs landing on Flow main (the rest of the prototype/vaadin-micrometer branch is throwaway):
Minimum Flow version = first release containing both; until then, build against a snapshot of those branches.
Open questions
- Replace the OTel modules outright, or ship alongside for a transition period?
- Combine Boot auto-config + starter in one artifact, or split them?
- Exact Spring Boot / Micrometer version baselines.
Proposal
Rewrite Observability Kit from scratch on Micrometer (metrics + observation/tracing) instead of OpenTelemetry, as a clean-room replacement for the current 4.x modules.
Proposed modules
observability-kit-micrometerobservability-kit-spring@Import)observability-kit-starterDependency chain:
starter→spring→micrometer. Plus IT modules per layer (standalone WAR, plain-Spring WAR, Boot app).Suggested conventions
com.vaadin.observability.*, next major (5.0).vaadin.observability.*(covers metrics and tracing).ObservabilityKit,ObservabilityConfig,ObservabilityProperties, …); internals stay unprefixed.Flow dependency
The core module needs two new listener SPIs landing on Flow
main(the rest of theprototype/vaadin-micrometerbranch is throwaway):SessionLockListener(session lock request/acquire/release events).RpcInvocationListener(RPC invocation events).Minimum Flow version = first release containing both; until then, build against a snapshot of those branches.
Open questions