NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Alerts for Laravel

Spúšťanie kontrol

Keď je schedule.enabled true (predvolené), balík zaregistruje alerts:perform-health-checks v plánovači Laravelu s withoutOverlapping() a metódou zo schedule.frequency. Pri zapnutej histórii naplánuje aj denný alerts:prune-runs, bez ohľadu na schedule.enabled. Ak chcete príkaz zapojiť sami, prepínač vypnite a príkaz pridajte do routes/console.php — denné prečistenie zostane naplánované:

use Illuminate\Support\Facades\Schedule;

Schedule::command('alerts:perform-health-checks')->everyMinute();
php artisan alerts:perform-health-checks

Príkaz zavolá Health::runDue(), ktorý prejde všetky naplánované riadky, pre každý, ktorého cron je v aktuálnej minúte splatný, odošle nakonfigurovaný job (predvolene HealthCheckJob) a vráti počet odoslaných jobov — príkaz ho vypíše. Soft-deleted riadky a riadky na požiadanie preskočí. Riadok s cronom, ktorý nemožno vyhodnotiť (zapísaný seederom alebo ručne, keďže save() overuje), preskočí a nahlási vášmu exception handleru; riadky za ním odošle ďalej. Zavolať ho môžete aj sami, odkiaľkoľvek:

use RoundlyConsulting\Alerts\Facades\Health;

$queued = Health::runDue(); // int — what alerts:perform-health-checks calls

Keďže splatnosť sa overuje v minúte, keď príkaz beží, nechajte ho na everyMinute, pokiaľ všetky vaše crony nesedia s hrubším intervalom.

Plánovač a fronta

HealthCheckJob je job vo fronte, preto musí bežať plánovač Laravelu aj queue worker. So sync ovládačom fronty kontroly bežia priamo.

# Laravel's scheduler must run for scheduled checks to fire
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

# Locally: php artisan schedule:work
# And a queue worker to execute the queued HealthCheckJob:
php artisan queue:work

Čo urobí jeden beh

Každý beh — z fronty aj synchrónny — prejde jednou internou cestou, RunHealthCheckAction. Voľby sa čítajú z uloženého riadka, takže prežijú serializáciu vo fronte:

  • Spustí check() s časovým limitom riadka a ochranou pred výnimkami a zmeria čas.
  • Zapíše HealthCheckRun (ak je história zapnutá).
  • Výsledok skipped tu končí — žiadne počítadlá ani vedľajšie účinky alertu.
  • Aktualizuje consecutive_failures alebo consecutive_successes. Prírastky sú atomické, takže prekrývajúce sa behy nikdy nestratia započítanie.
  • Overí aktívne stlmenie pre kľúč kontroly, jej tagy alebo *.
  • Pri zlyhaní: otvorený alert najprv prevezme výsledok — stav, správu a príznak stlmenia. Po dosiahnutí failAfter() otvorí alert (alebo použije otvorený), odošle HealthCheckFailed a potom upozorní alebo eskaluje. Kontrola má najviac jeden otvorený alert, aj keď sa dva behy prekrývajú.
  • Pri úspechu: po dosiahnutí recoverAfter() zatvorí otvorený alert, vynuluje eskalačnú úroveň a odošle HealthCheckRecovered — raz, aj keď sa dva behy prekrývajú.

Spustenie kontroly hneď

Spustite kontrolu synchrónne pre vlastníka. Vykoná rovnaké vedľajšie účinky ako job vo fronte — alert, notifikácie aj obnovu — a vráti CheckResult. Názov triedy spustí inštanciu, ktorú ste pre túto triedu zaregistrovali, aj s jej konfiguráciou; inštancia spustí seba samu. Registrovanú kontrolu nezmení ani jedno:

use RoundlyConsulting\Alerts\Facades\Health;

$result = Health::for($team)->run(DiskUsageCheck::class);
$result->status; // Status::Ok | Warning | Failed | Skipped

// Run one of the team's scheduled rows as-is (another owner's row is refused):
Health::for($team)->run($team->healthChecks()->first());

// An inline check has no class — run it by its registered key:
Health::for($team)->run('redis-up');

Okamžité spustenie kontrolu nikdy nezačne monitorovať. Ak má vlastník pre kontrolu naplánovaný riadok, beh prejde cez neho a zdieľa jeho počítadlá, históriu aj alerty. Inak balík vytvorí riadok na požiadanie (frequency je null), ktorý medzi ručnými behmi uchováva počítadlá, históriu a alerty vlastníka pre túto kontrolu. Plánovač ho nikdy nespustí a monitors() ho nevypíše — na pravidelné monitorovanie použite monitor().

S niektorým z riadkov vlastníka run() spustí tento riadok tak, ako je; riadok iného vlastníka vyhodí InvalidHealthCheck. Trieda registrovaná cez as() pod viacerými kľúčmi je podľa názvu triedy nejednoznačná — spustite ju podľa kľúča.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.