bml/sentry-symfony-cron-monitor
Installation
composer require bml/sentry-symfony-cron-monitor
Ensure your project uses Symfony components (or Laravel with Symfony bridge) since this is a Symfony-focused package.
Configuration
Add to your config/services.php (or equivalent Laravel config):
'sentry' => [
'dsn' => env('SENTRY_DSN'),
'options' => [
'cron_monitor' => [
'enabled' => env('SENTRY_CRON_MONITOR_ENABLED', true),
'cron_expression' => env('CRON_EXPRESSION', '* * * * *'),
],
],
],
First Use Case
Monitor a Laravel scheduled task (e.g., app/Console/Kernel.php):
use Bml\Sentry\CronMonitor\CronMonitor;
protected function schedule(CronMonitor $monitor)
{
$monitor->monitor('daily-backup', '0 3 * * *', function () {
// Your backup logic here
});
}
Laravel Task Scheduling
Extend Laravel’s schedule() method with Sentry monitoring:
$schedule->call(function () {
// Task logic
})->cron('* * * * *')->monitorWithSentry('task-name');
Symfony Console Commands Wrap Symfony commands for monitoring:
use Bml\Sentry\CronMonitor\CronMonitor;
class BackupCommand extends Command
{
protected function execute(InputInterface $input, OutputInterface $output, CronMonitor $monitor)
{
$monitor->monitor('backup', '* * * * *', function () {
// Command logic
});
}
}
Event-Based Triggers Use Laravel events to dynamically register cron jobs:
Event::listen('cron.job.registered', function ($job) {
$monitor->monitor($job->name, $job->expression, $job->callback);
});
sync-users).local environments:
if (app()->environment('local')) {
$monitor->disable();
}
Symfony Dependency
symfony/console) or use a facade wrapper.symfony/console and adapt the package’s CronMonitor class.Cron Expression Mismatch
* * * * * *) will fail silently.Sentry DSN Misconfiguration
SENTRY_DSN causes silent failures.Log Monitoring Events Add a listener to log cron job statuses:
$monitor->on('job.started', function ($job) {
Log::debug("Cron job started: {$job->name}");
});
Manual Trigger Testing Force a test run in Tinker:
php artisan tinker
>>> $monitor->trigger('test-job');
Custom Event Handlers Override default Sentry events:
$monitor->on('job.failed', function ($job, $exception) {
Sentry::captureException($exception, [
'tags' => ['job' => $job->name, 'type' => 'critical']
]);
});
Dynamic Job Registration Fetch cron jobs from a database:
$jobs = DB::table('cron_jobs')->get();
foreach ($jobs as $job) {
$monitor->monitor($job->name, $job->expression, $job->callback);
}
Laravel Horizon Integration
Monitor Horizon jobs by extending the CronMonitor class to listen to Horizon events.
How can I help you explore Laravel packages today?