Laravel Scheduler
Pakiet hellocron/laravel automatycznie instrumentuje Laravel Scheduler. Zainstaluj go, ustaw jeden klucz, a każde zaplanowane zadanie raportuje run na starcie oraz complete lub fail na końcu, z czasem trwania i kodem wyjścia. Gdy zadanie w ogóle przestaje się uruchamiać, alert podnosi sam brak raportu, czyli tryb awarii, którego logi schedule:run nigdy nie pokażą.
Instalacja
composer require hellocron/laravelDodaj klucz ingest (panel, zaczyna się od ck_) do .env:
HELLOCRON_INGEST_KEY=ck_twoj_kluczTo wszystko. Najbliższy schedule:run zaczyna pingować, a monitory tworzą się automatycznie przy pierwszym pingu, w ramach limitu monitorów Twojego planu.
Co jest raportowane
runna starcie,completeprzy sukcesie,failprzy niezerowym kodzie wyjścia lub wyjątku (z komunikatem),skipgdy filtr taki jakwithoutOverlappingzablokuje uruchomienie- czas trwania w sekundach, kod wyjścia, hostname
- identyfikator
serieswiążący start i koniec danego uruchomienia, więc nakładające się przebiegi tego samego zadania nigdy nie sparują się źle (zobacz Ping przez GET)
Nazwy monitorów pochodzą od komendy: laravel-<hash aplikacji>-inspire. Hash liczony jest z app.url, więc kilka aplikacji na jednym koncie się nie miesza. Prefiks nadpiszesz zmienną HELLOCRON_PREFIX.
Sync monitorów (opcjonalny)
Same pingi tworzą monitory z ustawieniami domyślnymi. Żeby ustawić oczekiwane interwały i okresy grace policzone z faktycznych wyrażeń cron zadań, dodaj klucz Management API (mk_, scope read + write) i uruchom:
php artisan hellocron:sync --dry-runphp artisan hellocron:syncKomenda tworzy brakujące monitory, aktualizuje istniejące i raportuje monitory, które nie pasują już do żadnego zadania. Niczego nie usuwa. Uruchamiaj ją po deploymentach zmieniających harmonogram.
Konfiguracja
php artisan vendor:publish --tag=hellocron-config| Klucz | Env | Domyślnie |
|---|---|---|
enabled | HELLOCRON_ENABLED | true |
ingest_key | HELLOCRON_INGEST_KEY | brak (pakiet bez niego jest bierny) |
management_key | HELLOCRON_MANAGEMENT_KEY | brak (potrzebuje go tylko hellocron:sync) |
prefix | HELLOCRON_PREFIX | laravel-<md5(app.url)[0:8]>- |
tags | - | [] (sync zawsze dodaje laravel i hostname) |
Bezpieczeństwo
Monitoring nigdy nie może położyć Twojej aplikacji. Pingi mają 1 s na połączenie i 2 s na całe żądanie, a każdy błąd jest połykany: gdy endpoint monitoringu jest niedostępny, zadania działają dokładnie tak jak wcześniej. Management API jest wywoływane wyłącznie z konsolowej komendy hellocron:sync, nigdy podczas wykonywania harmonogramu.
Wymagania
PHP 8.1+, Laravel 10, 11 lub 12.