Tutoriels31 janvier 2026 9 min de lecture

Surveiller le Scheduler Laravel avec des Checks Heartbeat

Configurez le monitoring pour les tâches planifiées Laravel. Recevez des alertes quand vos jobs Laravel Scheduler échouent ou ne s'exécutent pas.

WizStatus Team
Auteur

Le planificateur de tâches de Laravel fournit une gestion élégante de cron, mais les tâches planifiées peuvent quand même échouer silencieusement. Voici comment configurer un monitoring fiable pour vos commandes Laravel planifiées.

Le Scheduler Laravel

Le scheduler de Laravel est configuré dans app/Console/Kernel.php :

protected function schedule(Schedule $schedule)
{
    $schedule->command('reports:generate')->daily();
    $schedule->command('backup:run')->dailyAt('02:00');
    $schedule->job(new ProcessPendingOrders)->everyFiveMinutes();
}

Cela s'exécute via une seule entrée cron :

* * * * * cd /chemin-vers-projet && php artisan schedule:run >> /dev/null 2>&1

Pourquoi Monitorer les Tâches Laravel ?

Même avec le scheduler de Laravel, les tâches peuvent échouer :

  • Erreurs PHP dans le code de votre commande
  • Épuisement de mémoire pendant le traitement
  • Problèmes de connexion à la base de données
  • Échecs d'API externes
  • Daemon cron qui ne tourne pas
  • Le scheduler lui-même n'est pas appelé

Méthodes de Monitoring Intégrées

Utiliser pingBefore et thenPing

Laravel 8+ inclut des callbacks de ping :

$schedule->command('backup:run')
    ->daily()
    ->pingBefore('https://wizstatus.com/ping/TOKEN/start')
    ->thenPing('https://wizstatus.com/ping/TOKEN');
  • pingBefore() - Ping quand le job démarre
  • thenPing() - Ping quand le job se termine avec succès
  • pingOnSuccess() - Ping uniquement en cas de succès
  • pingOnFailure() - Ping uniquement en cas d'échec

Ping Uniquement en Cas de Succès

$schedule->command('reports:generate')
    ->daily()
    ->pingOnSuccess('https://wizstatus.com/ping/reports-success');

URLs Différentes pour Succès/Échec

$schedule->command('critical:process')
    ->hourly()
    ->pingOnSuccess('https://wizstatus.com/ping/critical-success')
    ->pingOnFailure('https://wizstatus.com/ping/critical-failed');

Configurer les Moniteurs Heartbeat

Étape 1 : Créer un Moniteur par Tâche

Pour chaque tâche planifiée :

  1. Créez un moniteur heartbeat nommé d'après la tâche
  2. Définissez le planning correspondant à la config Laravel
  3. Définissez une période de grâce appropriée

Étape 2 : Ajouter les Pings au Schedule

protected function schedule(Schedule $schedule)
{
    // Sauvegarde quotidienne
    $schedule->command('backup:run')
        ->dailyAt('02:00')
        ->pingOnSuccess(env('PING_BACKUP'));

    // Rapports horaires
    $schedule->command('reports:hourly')
        ->hourly()
        ->pingOnSuccess(env('PING_REPORTS_HOURLY'));

    // Check de santé du worker de queue
    $schedule->call(function () {
        if (Queue::size() < 1000) {
            Http::get(env('PING_QUEUE_HEALTH'));
        }
    })->everyFiveMinutes();
}

Étape 3 : Stocker les URLs de Ping de Façon Sécurisée

Ajoutez au .env :

PING_BACKUP=https://wizstatus.com/ping/backup-token
PING_REPORTS_HOURLY=https://wizstatus.com/ping/reports-token
PING_QUEUE_HEALTH=https://wizstatus.com/ping/queue-token

Monitoring du Scheduler Lui-Même

Assurez-vous que le scheduler est appelé :

// Dans Kernel.php - ajoutez un check de santé du scheduler
$schedule->call(function () {
    // Ceci s'exécute chaque minute pour confirmer que le scheduler est vivant
})->everyMinute()
  ->pingOnSuccess(env('PING_SCHEDULER_ALIVE'));

Définissez le moniteur :

  • Planning : Chaque minute
  • Période de grâce : 3 minutes

Bonnes Pratiques

  1. Un moniteur par tâche - Ne combinez pas plusieurs tâches
  2. Correspondance exacte des plannings - Planning du moniteur = planning Laravel
  3. Utilisez env pour les URLs - Gardez les tokens hors du code
  4. Pingez uniquement en cas de succès - Laissez les échecs déclencher des alertes par absence
  5. Testez en staging - Vérifiez que les pings fonctionnent avant la production
  6. Documentez les tâches - Gardez une liste de ce qui est monitoré

Checklist de Monitoring

  • Toutes les tâches planifiées critiques ont des moniteurs
  • Les plannings des moniteurs correspondent aux plannings Laravel
  • Les périodes de grâce prennent en compte la durée des jobs
  • Les URLs de ping sont stockées dans les variables d'environnement
  • Testé sur l'environnement de staging
  • Check de santé du scheduler configuré
  • Canaux d'alerte configurés de façon appropriée
Ne laissez plus jamais une tâche planifiée Laravel échouer silencieusement. Configurez le monitoring heartbeat avec WizStatus et recevez des alertes quand vos commandes artisan ne se terminent pas à temps.

Articles connexes

Comment Monitorer vos Sauvegardes et Recevoir des Alertes
Bonnes Pratiques

Comment Monitorer vos Sauvegardes et Recevoir des Alertes

Configurez un monitoring fiable pour vos sauvegardes de bases de données et fichiers. Recevez des alertes instantanées quand les jobs de sauvegarde échouent.
10 min de lecture
Comment Monitorer vos Tâches Cron : Guide Étape par Étape
Tutoriels

Comment Monitorer vos Tâches Cron : Guide Étape par Étape

Apprenez à configurer le monitoring pour vos tâches cron. Recevez des alertes quand les tâches planifiées échouent, durent trop longtemps ou ne s'exécutent pas.
10 min de lecture
Dead Man's Switch : Assurez que vos Jobs Critiques n'Échouent Jamais en Silence
Monitoring

Dead Man's Switch : Assurez que vos Jobs Critiques n'Échouent Jamais en Silence

Comprenez le monitoring dead man's switch pour les systèmes critiques. Apprenez à implémenter des alertes fail-safe pour les jobs qui doivent fonctionner de façon fiable.
9 min de lecture

Commencez à surveiller votre infrastructure dès aujourd'hui

Mettez ces conseils en pratique avec le monitoring WizStatus.

Essayer WizStatus Gratuitement