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

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-checkHealthCheck::class—Model, ktorý ukladá naplánované kontroly.
checks[]—Triedy (alebo inštancie) kontrol registrované pri štarte.
alertAlert::class—Model, ktorý zaznamenáva alerty.
key_typebigintALERTS_KEY_TYPETyp 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.
jobHealthCheckJob::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.enabledtrueALERTS_SCHEDULEAutomaticky zaregistruje alerts:perform-health-checks v plánovači. Prečistenie sa pri zapnutej histórii plánuje v každom prípade.
schedule.frequencyeveryMinuteALERTS_SCHEDULE_FREQUENCYMetó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.urihealthALERTS_ROUTE_URIURI 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.namealerts.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.
silencetrueALERTS_SILENCEHlavný vypínač stlmenia počas údržby; false ignoruje všetky stlmenia.
silence-modelAlertSilence::class—Model, ktorý ukladá záznamy o stlmení.
history.enabledtrueALERTS_HISTORYZaznamenávať každý beh (stav + latencia) a denne plánovať alerts:prune-runs — aj pri vypnutom schedule.enabled.
history.retention_days30ALERTS_HISTORY_RETENTIONPoč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.modelHealthCheckRun::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=30

Prepí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 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.