Laravel
Планировщик Laravel умеет отчитываться сам — правкой одной строки.
У планировщика есть встроенные хуки pingBefore, thenPing и pingOnFailure. Отдельный скрипт не нужен.
use Illuminate\Support\Facades\Schedule;
Schedule::command('reports:build')
->dailyAt('03:00')
->timezone('Europe/Moscow')
->withoutOverlapping()
->pingBefore(config('services.tickwatch.ping') . '/start')
->thenPing(config('services.tickwatch.ping'))
->pingOnFailure(config('services.tickwatch.ping') . '/fail');'tickwatch' => [
'ping' => env('TICKWATCH_PING'),
],Отдельная забота: сам планировщик
Все эти хуки замолкают разом, если schedule:run перестал вызываться — а это самая частая поломка в Laravel-проектах: строку из crontab потеряли при переносе на новый сервер. Заведите отдельный монитор с минутным интервалом прямо на планировщик.
* * * * * cd /var/www/app && php artisan schedule:run >> /dev/null 2>&1 && curl -fsS -m 5 https://ping.tickwatch.dev/ВАШ-КЛЮЧ > /dev/null