Modely vlastníkov
Model, ktorý vlastní kontroly, určuje, kto dostane notifikácie o alertoch. Implementujte HasNotifiablesForAlerts a použite trait UsesHealthChecks:
use Closure;
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Alerts\Interfaces\HasNotifiablesForAlerts;
use RoundlyConsulting\Alerts\Traits\UsesHealthChecks;
class Team extends Model implements HasNotifiablesForAlerts
{
use UsesHealthChecks;
public function forEachNotifiableForAlerts(Closure $callback): void
{
$this->members()
->where('alerts_enabled', true)
->each(fn (Member $member) => $callback($member));
}
}forEachNotifiableForAlerts() odovzdá callbacku každého príjemcu z predvolenej skupiny. Notifikácie sa posielajú cez fasádu Notification v Laraveli, preto príjemcom dajte trait Notifiable. Trait pridáva:
- healthChecks() a alerts() — vzťahy morphMany na naplánované kontroly a alerty vlastníka.
- monitorCheck(string $check) — skratka pre Health::for($this)->monitor($check), fluentný builder na plánovanie (pozri Plánovanie kontrol).
- monitor(ScheduleHealthCheckData $data) — skratka pre Health::for($this)->schedule($data); createHealthCheck(…) je jej variant s pozičnými argumentmi.
- notifiablesForAlertGroup(string $group) — cez pribalený trait ResolvesAlertGroups vráti pre akýkoľvek názov predvolenú skupinu. Pre pomenované eskalačné skupiny ho prepíšte (pozri Eskalačné politiky).
Skratky na plánovanie delegujú na Health::for($this), takže sa správajú presne ako volania fasády — a Health::fake() ich tiež zaznamená.
Vlastníkom môže byť akýkoľvek model
Tímy, tenanti, projekty či jeden používateľ — čokoľvek, čo má vlastniť svoje kontroly. Používateľ môže jednoducho upozorniť sám seba:
use Closure;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use RoundlyConsulting\Alerts\Interfaces\HasNotifiablesForAlerts;
use RoundlyConsulting\Alerts\Traits\UsesHealthChecks;
// A user can own checks and receive its own alerts.
class User extends Authenticatable implements HasNotifiablesForAlerts
{
use Notifiable;
use UsesHealthChecks;
public function forEachNotifiableForAlerts(Closure $callback): void
{
$callback($this);
}
}Ak kontrola zlyhá pre vlastníka, ktorý rozhranie neimplementuje, beh vyhodí InvalidNotifiableForHealthCheck.
Čítanie alertov
Alert má scopes open() a recovered() a vzťahy späť na vlastníka a kontrolu:
$team->healthChecks()->get(); // scheduled HealthCheck rows
$team->alerts()->open()->get(); // incidents still in progress
$team->alerts()->recovered()->latest('recovered_at')->first();
$alert = $team->alerts()->open()->first();
$alert->status; // Status::Failed or Status::Warning
$alert->message; // the result message that opened it
$alert->meta; // the result meta (plus 'muted' => true when muted)
$alert->escalation_level; // 0 until a policy escalates it
$alert->triggered_at; // Carbon
$alert->recovered_at; // null while open
$alert->healthCheck; // the scheduled HealthCheck row
$alert->notifiable; // the ownerPrejavte 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 kryptomienOdoslaní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.