Skip to content
hellocron.com

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

Okno terminala
composer require hellocron/laravel

Dodaj klucz ingest (panel, zaczyna się od ck_) do .env:

HELLOCRON_INGEST_KEY=ck_twoj_klucz

To 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

  • run na starcie, complete przy sukcesie, fail przy niezerowym kodzie wyjścia lub wyjątku (z komunikatem), skip gdy filtr taki jak withoutOverlapping zablokuje uruchomienie
  • czas trwania w sekundach, kod wyjścia, hostname
  • identyfikator series wiążą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:

Okno terminala
php artisan hellocron:sync --dry-run
php artisan hellocron:sync

Komenda 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

Okno terminala
php artisan vendor:publish --tag=hellocron-config
KluczEnvDomyślnie
enabledHELLOCRON_ENABLEDtrue
ingest_keyHELLOCRON_INGEST_KEYbrak (pakiet bez niego jest bierny)
management_keyHELLOCRON_MANAGEMENT_KEYbrak (potrzebuje go tylko hellocron:sync)
prefixHELLOCRON_PREFIXlaravel-<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.