Konfigurácia
Publikovaný config/alerts.php bez blokov komentárov:
<?php
declare(strict_types=1);
use RoundlyConsulting\Alerts\Alert;
use RoundlyConsulting\Alerts\AlertSilence;
use RoundlyConsulting\Alerts\HealthCheck;
use RoundlyConsulting\Alerts\HealthCheckRun;
use RoundlyConsulting\Alerts\Jobs\HealthCheckJob;
return [
'health-check' => HealthCheck::class,
// Check classes (or instances) registered globally on boot.
'checks' => [
// RoundlyConsulting\Alerts\Checks\DatabaseCheck::class,
],
'alert' => Alert::class,
// Key type of your notifiable (owner) models: bigint | uuid | ulid
'key_type' => env('ALERTS_KEY_TYPE', 'bigint'),
'job' => HealthCheckJob::class,
// Auto-register the perform command on the scheduler.
'schedule' => [
'enabled' => env('ALERTS_SCHEDULE', true),
'frequency' => env('ALERTS_SCHEDULE_FREQUENCY', 'everyMinute'),
],
// Opt-in JSON status endpoint registered via Health::routes().
'route' => [
'uri' => env('ALERTS_ROUTE_URI', 'health'),
'name' => 'alerts.health',
],
// Master switch for maintenance-window muting + the silence model.
'silence' => env('ALERTS_SILENCE', true),
'silence-model' => AlertSilence::class,
// Run history + latency tracking, retention, and the run model.
'history' => [
'enabled' => env('ALERTS_HISTORY', true),
'retention_days' => env('ALERTS_HISTORY_RETENTION', 30),
'model' => HealthCheckRun::class,
],
// Optional global default escalation policy (data-only).
'escalation' => [
// 1 => 'owner', 3 => 'team', 5 => 'oncall',
],
];Všetky kľúče
| Kľúč | Predvolené | Env | Účel |
|---|---|---|---|
health-check | HealthCheck::class | — | Model, ktorý ukladá naplánované kontroly. |
checks | [] | — | Triedy (alebo inštancie) kontrol registrované pri štarte. |
alert | Alert::class | — | Model, ktorý zaznamenáva alerty. |
key_type | bigint | ALERTS_KEY_TYPE | Typ stĺpcov notifiable_id v tabuľkách health_checks, alerts a alert_silences — bigint, uuid alebo ulid (bez ohľadu na veľkosť písmen; iná hodnota vyhodí InvalidConfigurationException). Číta sa pri behu migrácií, preto ho nastavte vopred. |
job | HealthCheckJob::class | — | Job vo fronte, ktorý sa odošle pre každú splatnú kontrolu. Prázdna hodnota sa považuje za nenastavenú a použije sa job z balíka. |
schedule.enabled | true | ALERTS_SCHEDULE | Automaticky zaregistruje alerts:perform-health-checks v plánovači. Prečistenie sa pri zapnutej histórii plánuje v každom prípade. |
schedule.frequency | everyMinute | ALERTS_SCHEDULE_FREQUENCY | Metóda plánovača pre príkaz: everyMinute, everyTwoMinutes, everyThreeMinutes, everyFourMinutes, everyFiveMinutes, everyTenMinutes, everyFifteenMinutes, everyThirtyMinutes, hourly, everyOddHour, everyTwoHours, everyThreeHours, everyFourHours, everySixHours, daily, twiceDaily, weekly, monthly, quarterly alebo yearly. Prázdna hodnota sa považuje za nenastavenú (everyMinute); iný názov vyhodí výnimku pri zostavení plánovača. |
route.uri | health | ALERTS_ROUTE_URI | URI voliteľného JSON endpointu so stavom. Prázdna hodnota sa považuje za nenastavenú a použije sa health — nikdy nie koreň webu; hodnota, ktorá nie je reťazec, vyhodí výnimku. |
route.name | alerts.health | — | Názov routy stavového endpointu. Prázdna hodnota sa považuje za nenastavenú a použije sa predvolený názov; hodnota, ktorá nie je reťazec, vyhodí výnimku. |
silence | true | ALERTS_SILENCE | Hlavný vypínač stlmenia počas údržby; false ignoruje všetky stlmenia. |
silence-model | AlertSilence::class | — | Model, ktorý ukladá záznamy o stlmení. |
history.enabled | true | ALERTS_HISTORY | Zaznamenávať každý beh (stav + latencia) a denne plánovať alerts:prune-runs — aj pri vypnutom schedule.enabled. |
history.retention_days | 30 | ALERTS_HISTORY_RETENTION | Počet dní histórie behov, kým ich alerts:prune-runs zmaže. Musí to byť celé číslo, aspoň 1; prázdna hodnota sa považuje za nenastavenú (30); čokoľvek iné (five, 5.5, 0) namiesto prečistenia vyhodí výnimku, takže preklep nikdy nezmaže históriu behov. |
history.model | HealthCheckRun::class | — | Model, ktorý zaznamenáva behy. |
escalation | [] | — | Globálna predvolená eskalačná politika (prah ⇒ skupina) pre kontroly, ktoré nemajú vlastnú. |
Prostredie
ALERTS_KEY_TYPE=bigint
ALERTS_SCHEDULE=true
ALERTS_SCHEDULE_FREQUENCY=everyMinute
ALERTS_ROUTE_URI=health
ALERTS_SILENCE=true
ALERTS_HISTORY=true
ALERTS_HISTORY_RETENTION=30Prepínače schedule.enabled, silence a history.enabled prijímajú boolean hodnoty aj bežné env reťazce: 1, true, on a yes ich zapnú, 0, false, off a no vypnú. Prázdna hodnota (ALERTS_SCHEDULE=) sa považuje za nenastavenú, takže prepínač si ponechá predvolenú hodnotu (zapnuté). Akákoľvek iná hodnota vyhodí InvalidConfigurationException s názvom kľúča aj hodnoty, takže preklep prepínač nikdy potichu neprepne.
Rovnako prísne sa čítajú aj všetky ostatné nastavenia: nenastavený kľúč — chýbajúci, null alebo prázdny (KEY= v .env) — použije predvolenú hodnotu a akákoľvek iná neplatná hodnota vyhodí InvalidConfigurationException s názvom kľúča. Nič sa potichu nenahrádza.
V poli checks uvádzajte len názvy tried. Nakonfigurované inštancie, napríklad DatabaseCheck::make('mysql'), radšej registrujte zo service providera — objekty v konfiguračnom súbore znemožnia serializáciu cez php artisan config:cache.
Vlastné modely
Každý kľúč modelu môže ukazovať na vašu podtriedu modelu z balíka. Každý sa rieši cez jediné miesto, takže vymenený model sa použije všade — vo vzťahoch, akciách, príkazoch aj v reporte:
namespace App\Models;
use RoundlyConsulting\Alerts\HealthCheck as BaseHealthCheck;
class HealthCheck extends BaseHealthCheck
{
// your own scopes, relations, observers…
}// config/alerts.php
'health-check' => App\Models\HealthCheck::class,
'alert' => App\Models\Alert::class,
'silence-model' => App\Models\AlertSilence::class,
'history' => [
// …
'model' => App\Models\HealthCheckRun::class,
],Nenastavený kľúč — chýbajúci, null alebo prázdny — použije model z balíka. Čokoľvek iné musí byť model z balíka alebo jeho podtrieda — balík sa spolieha na jeho metódy a scopes —, inak vyhodí InvalidConfigurationException s názvom kľúča. Cudzia trieda sa nikdy potichu nenahradí.
Vlastný job
Kľúč job určuje job vo fronte, ktorý sa odošle pre každú splatnú kontrolu. Dostane riadok HealthCheck ako jediný argument; pribalený HealthCheckJob je final, preto napíšte vlastný job a riadok spustite cez Health::for($row->notifiable)->run($row) — napríklad aby monitoring bežal na samostatnej fronte. Cesta, ktorá za tým stojí, RunHealthCheckAction, je interná; priamo ju nevolajte:
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use RoundlyConsulting\Alerts\Facades\Health;
use RoundlyConsulting\Alerts\HealthCheck;
class MonitoringJob implements ShouldQueue
{
use Dispatchable;
use InteractsWithQueue;
use Queueable;
use SerializesModels;
public function __construct(public HealthCheck $healthCheck)
{
$this->onQueue('monitoring');
}
public function handle(): void
{
// Runs this scheduled row as-is, through the same pipeline as HealthCheckJob.
Health::for($this->healthCheck->notifiable)->run($this->healthCheck);
}
}
// config/alerts.php
'job' => App\Jobs\MonitoringJob::class,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 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.