Skip to content

Add Pulse-equivalent performance monitoring dashboard #168

@antosubash

Description

@antosubash

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

  • Module scaffolded
  • All 7 recorders implemented (server stats can be follow-up)
  • In-process aggregation buffer with periodic flush
  • Rolling-window retention + purge job
  • Inertia dashboard with cards + time-range picker
  • Permission Pulse.View
  • xUnit tests per recorder
  • Docs page with screenshot

References

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions