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

Stavové reporty a health endpoint

Report všetkých naplánovaných kontrol zostavíte cez Health::report(), report kontrol jedného vlastníka cez Health::for($owner)->report() — oba voliteľne filtrované podľa tagov:

use RoundlyConsulting\Alerts\Facades\Health;

$report = Health::report();                  // HealthReport across every scheduled check
$report->overall();                          // worst Status across all checks
$report->isHealthy();                        // bool

foreach ($report->checks() as $check) {
    // CheckStatus: key, name, status, lastAlertAt, message, tags, uptime, p95LatencyMs, muted
}

Health::status();                            // Status roll-up
Health::report(['critical']);                // only checks tagged with one of these (row tags or the check's tags())
Health::for($team)->report(['critical']);    // one owner, optionally tag-filtered
Health::for($team)->status();                // that owner's roll-up
$report->whereTag('db');                     // filter an in-memory report

Report sa zostavuje z riadkov health_checks — vrátane riadkov na požiadanie —, nie z registra. Stav každého riadka je stav jeho otvoreného alertu, alebo ok, ak žiadny otvorený nie je — zlyhania pod failAfter() preto stále vyzerajú ako ok. Otvorený alert sa riadi posledným zlyhaným výsledkom, takže varovanie, ktoré prejde do zlyhania, sa vykáže ako failed. overall() je najhorší stav podľa závažnosti a isHealthy() je true, keď nič nevyžaduje alert.

Vlastnosť CheckStatusVýznam
keyKľúč kontroly naplánovaného riadka.
namename() registrovanej kontroly, alebo kľúč, ak nie je registrovaná.
statusStav otvoreného alertu riadka — riadi sa posledným zlyhaným výsledkom — alebo Status::Ok, ak žiadny nie je otvorený.
lastAlertAtKedy sa tento otvorený alert spustil (null, ak žiadny nie je).
messageSpráva otvoreného alertu z posledného zlyhaného výsledku.
tagsEfektívne tagy — tagy riadka zlúčené s tags() kontroly.
uptimeuptimePercentage() za celú históriu behov.
p95LatencyMsp95LatencyMs() za celú históriu behov.
mutedTrue, ak posledný zlyhaný beh otvoreného alertu prebehol počas stlmenia.
  • Health::report(['critical']) aj Health::for($team)->report(['critical']) ponechajú riadky označené niektorým zo zadaných tagov — na riadku alebo cez tags() kontroly; status(), alerts:status --tag aj /health?tag= filtrujú rovnako.
  • $report->whereTag('db') filtruje hotový report podľa efektívnych tagov — tagov riadka zlúčených s tags() triedy kontroly.
  • HealthReport::toArray() a CheckStatus::toArray() dávajú JSON štruktúru, ktorú vracia endpoint.

V príkazovom riadku

Súhrn v CLI, ktorý skončí nenulovým kódom, keď niečo vyžaduje alert — praktické v CI alebo pri sondách dostupnosti:

php artisan alerts:status
php artisan alerts:status --tag=db   # filter by tag

JSON endpoint

Voliteľný endpoint vracia 200, keď je všetko v poriadku, inak 503. Zaregistrujte ho z vlastného súboru rout — balík predvolene žiadne routy nepridáva:

// routes/web.php
use RoundlyConsulting\Alerts\Facades\Health;

Health::routes();   // GET /health            -> { "status": "...", "checks": [...] }
                    // GET /health?tag=critical -> only checks tagged "critical" (on the row or by the check's tags())

// Or on your own URI, behind your own middleware (routes() returns the Route):
Health::routes('internal/health')->middleware('auth.basic');
{
    "status": "warning",
    "checks": [
        {
            "key": "http_ping_check",
            "name": "Http Ping Check",
            "status": "warning",
            "last_alert_at": "2026-09-26T08:15:00+00:00",
            "message": "Endpoint [https://api.example.com] responded slowly (912 ms).",
            "tags": ["critical"],
            "uptime": 99.31,
            "p95_latency_ms": 840,
            "muted": false
        }
    ]
}

Endpoint vypisuje všetky naplánované kontroly všetkých vlastníkov a zámerne nemá autentifikáciu. Ak majú názvy kontrol zostať súkromné, dajte ho za middleware alebo na ťažko uhádnuteľnú URI. URI a názov routy sú predvolene route.uri a route.name z konfigurácie.

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.