Background
There is no built-in performance dashboard surfacing slow endpoints, slow queries, top users, top jobs, exception rate, server load, etc. Operators have to wire up external tools (Grafana, App Insights). Laravel Pulse fills this gap with a single in-app dashboard backed by lightweight aggregated metrics.
Motivation
- App-level perf signals visible immediately on a fresh install
- Cheap (in-process aggregation, no external infra required)
- Useful for OSS users without observability budgets
Design sketch
New module modules/Pulse:
Recorders (lightweight; aggregate in-memory then flush to DB every 60s):
SlowRequestsRecorder — endpoints over P95 threshold
SlowQueriesRecorder — EF queries over threshold (same interceptor backbone as Telescope)
SlowJobsRecorder — background jobs over threshold
ExceptionsRecorder — top exception types by count
UserRequestsRecorder — top users by request count
CacheHitRateRecorder
ServerStatsRecorder — CPU, memory, GC sampled every 15s
Storage: rolling time-series in main DB (or opt-in dedicated DB), 7-day retention.
UI: single dashboard page /admin/pulse with cards per recorder, time-range picker (1h / 6h / 24h / 7d).
Differences vs Telescope: Telescope = per-request detail; Pulse = aggregated trend.
Acceptance criteria
References
Background
There is no built-in performance dashboard surfacing slow endpoints, slow queries, top users, top jobs, exception rate, server load, etc. Operators have to wire up external tools (Grafana, App Insights). Laravel Pulse fills this gap with a single in-app dashboard backed by lightweight aggregated metrics.
Motivation
Design sketch
New module
modules/Pulse:Recorders (lightweight; aggregate in-memory then flush to DB every 60s):
SlowRequestsRecorder— endpoints over P95 thresholdSlowQueriesRecorder— EF queries over threshold (same interceptor backbone as Telescope)SlowJobsRecorder— background jobs over thresholdExceptionsRecorder— top exception types by countUserRequestsRecorder— top users by request countCacheHitRateRecorderServerStatsRecorder— CPU, memory, GC sampled every 15sStorage: rolling time-series in main DB (or opt-in dedicated DB), 7-day retention.
UI: single dashboard page
/admin/pulsewith cards per recorder, time-range picker (1h / 6h / 24h / 7d).Differences vs Telescope: Telescope = per-request detail; Pulse = aggregated trend.
Acceptance criteria
Pulse.ViewReferences