romalytar/yammi-jobs-monitoring-laravel
Real-time queue monitoring & observability for Laravel. Dashboard for job runs, retries, failures, DLQ, stats, worker heartbeat, scheduled task outcomes, duration anomalies, and alerts (Slack/email/webhooks). Works with Redis, SQS, database, or sync—no extra infra.
Automatic data retention pruning across all monitor tables (job records, failure groups, scheduled runs, duration anomalies, worker heartbeats); duration baselines are kept. Auto-scheduled daily; toggle via jobs-monitor.retention.schedule.enabled. Retention default 180 days (min 7, max 1825), configurable from the Settings UI; worker heartbeats keep a separate, shorter retention (default 30). Dashboard general settings are now applied at runtime (DB value over config over default).
Docs/metadata only — no code changes.
homepage + support links.Makes Packagist's package page reflect the updated keywords and description on a tagged version.
Fixed: the throughput chart showed "No data in the selected period" for apps whose timezone is ahead of UTC, even with jobs in the database. Buckets are now built in the application timezone (config('app.timezone'), UTC fallback) instead of hardcoded UTC.
Added: jobs-monitor.timezone config key (defaults to the app timezone) to control the chart's display zone. The chart now shows the active timezone next to the bucket size.
CI: ignore three EOL-Laravel security-advisory IDs so composer install on Composer 2.10 resolves the test matrix again.
Backward compatible — apps on UTC behave exactly as before; nothing breaks on upgrade.
Failure fingerprinting — exceptions are automatically grouped by a stable fingerprint (class + stack trace). View, retry, and delete an entire group in one click.
Scheduled task monitoring — every scheduler run is tracked: time, duration, outcome, exception. Detects silent failures and missing runs.
Worker heartbeat — live worker state across all queues; alerts when a worker goes silent or a queue becomes under-provisioned.
Anomaly detection — statistical baselines per job class. Duration spikes and suspicious drops trigger alerts automatically.
PagerDuty, Opsgenie, Webhook — three new alert channels with HMAC signatures, deduplication, and resolve semantics. Five channels total alongside Slack and Email.
General Settings UI — 23 operational settings stored in the database, editable without a redeploy. Each setting shows its source: DB override, config value, or package default.
Background data transfer — moving data between DB connections runs as a queued job with a live progress banner.
Public facades + Facade Playground — YammiJobs, YammiJobsManage, YammiJobsSettings for programmatic access to all dashboard data. Interactive sandbox at /settings/playground.
Security audit — XSS hardening, destructive-action authorization, RequireMonitorAuth middleware, kebab menus everywhere, 168 new tests.
hot fix migration
Bulk DLQ operations — checkboxes on DLQ and Dashboard Failed Jobs, sticky action bar with Retry N / Delete N / Clear, plus a "Select all N matching" button that spans every page and honors current filters. Client chunks selections at 100 IDs per request, server enforces the same cap; progress bar and per-item errors in the modal. Retrying 1000+ jobs no longer risks blocking the request.
transient / permanent / critical / unknownphp artisan jobs-monitor:prune --days=NGET /api/jobs-monitor/stats/summary — live counters (powers dashboard cards)GET /api/jobs-monitor/stats/time-series — bucketed series (powers dashboard chart)GET /api/jobs-monitor/settings — all settings in one payloadGET|PUT /api/jobs-monitor/settings/alerts + POST toggle, POST/DELETE recipientsGET|POST|PUT|DELETE /api/jobs-monitor/settings/alerts/rules — CRUD for user-managed rulesPOST /api/jobs-monitor/settings/alerts/rules/built-in/{key}/toggleFailure classifier — automatic exception categorization (transient/permanent/critical/unknown), color-coded badges
Prune command — php artisan jobs-monitor:prune --days=N
Enhanced filters — status, queue, connection, failure category dropdowns with removable chips
Retry history — per-job attempt timeline; every retry preserved
Stats page — aggregated metrics per job class + /api/stats/overview and /api/stats
DLQ view — dead-letter page with manual retry (with optional payload edit), delete, authorization gate
README refresh — human-toned rewrite, new screenshots
Add Laravel 13 support. Package now works with Laravel 9, 10, 11, 12, 13.
Add Laravel 12 support
Initial release.
How can I help you explore Laravel packages today?