Vstavané kontroly
Balík obsahuje fluentné kontroly pre bežné prípady, každú s predvolenou notifikáciou, takže ju nemusíte písať:
use RoundlyConsulting\Alerts\Checks\{CacheCheck, DatabaseCheck, HttpPingCheck, QueueCheck, StorageCheck};
use RoundlyConsulting\Alerts\Facades\Health;
Health::check(DatabaseCheck::make('mysql'));
Health::check(CacheCheck::make('redis'));
Health::check(QueueCheck::make()->onQueue('emails')->maxSize(1000));
Health::check(StorageCheck::make('uploads')->minimumBytes(2 * 1024 ** 3));
Health::check(HttpPingCheck::make('https://api.example.com')->timeout(5)->expectStatus(200)->slowerThan(800));| Kontrola | V poriadku, keď | Varuje, keď | Zlyhá, keď |
|---|---|---|---|
DatabaseCheck | sa spojenie otvorí | — | je spojenie nedostupné |
CacheCheck | sa kontrolná hodnota zapíše a prečíta späť | — | je úložisko nedostupné alebo vráti inú hodnotu |
QueueCheck | sa spojenie podarí získať | fronta presiahne maxSize() | sa spojenie nepodarí získať |
StorageCheck | je voľného miesta dosť | miesto klesne pod varovný prah | miesto klesne pod minimumBytes() |
HttpPingCheck | príde očakávaný status | odpoveď je pomalšia než slowerThan() | príde neočakávaný status alebo požiadavka vyprší |
Voľby a predvolené hodnoty
| Kontrola | Kľúč | Nastavenie | Predvolené |
|---|---|---|---|
DatabaseCheck | database_check | make(?string $connection), connection(string) | database.default; otvorí PDO spojenie |
CacheCheck | cache_check | make(?string $store), store(string) | cache.default; zapíše alerts:cache-check na 10 sekúnd a prečíta ho späť |
QueueCheck | queue_check | make(?string $connection), connection(string), onQueue(string), maxSize(int) | queue.default, predvolená fronta, bez limitu |
StorageCheck | storage_check | make(?string $disk), disk(string), minimumBytes(int), warnBytes(int) | filesystems.default; zlyhá pod 1 GB voľného miesta, varuje pod 2× minimom |
HttpPingCheck | http_ping_check | make(string $url), timeout(int $seconds), expectStatus(int), slowerThan(int $ms) | timeout požiadavky 5 sekúnd, očakáva 200, bez limitu latencie |
use RoundlyConsulting\Alerts\Checks\QueueCheck;
use RoundlyConsulting\Alerts\Checks\StorageCheck;
Health::check(
StorageCheck::make('local')
->minimumBytes(5 * 1024 ** 3) // fail below 5 GB free
->warnBytes(20 * 1024 ** 3) // warn below 20 GB free
);
Health::check(QueueCheck::make('redis')->onQueue('default')->maxSize(500));- StorageCheck meria voľné miesto v lokálnej koreňovej ceste disku, preto ho nasmerujte na lokálny disk. Bez warnBytes() varuje pod dvojnásobkom minima.
- timeout() pri HttpPingCheck je timeout HTTP požiadavky. S voľbou timeout() pri plánovaní monitoringu nesúvisí.
- Každý výsledok nesie užitočné meta: connection, store, size a max_size, free_bytes a minimum_bytes, alebo url, status a latency_ms — a pri zachytenej výnimke aj error.
- Správy výsledkov pochádzajú z prekladového súboru alerts::checks, takže ich po publikovaní prekladov môžete upraviť.
- Každá vstavaná kontrola sa registruje pod kľúčom z tabuľky. Ak potrebujete viac inštancií jednej vstavanej kontroly — dve databázy, tri endpointy —, dajte každej vlastný kľúč cez as() (pozri Registrácia kontrol).
Plánovanie vstavanej kontroly
Nakonfigurovanú inštanciu zaregistrujte raz a potom ju naplánujte podľa triedy pre každého vlastníka. Riadok ukladá len kľúč; pri behu prácu vykoná registrovaná inštancia s vašou URL, spojením či prahmi:
// Register the configured instance once, in a service provider…
Health::check(HttpPingCheck::make('https://api.example.com/health')->slowerThan(800));
// …then attach it to every owner that should hear about it.
Health::for($team)->monitor(HttpPingCheck::class)
->everyMinute()
->failAfter(2)
->save();Inštanciu registrovanú cez as() naplánujete podľa jej kľúča — Health::for($team)->monitor('mysql_database'). Každá vstavaná kontrola posiela pribalenú HealthCheckFailedNotification s dôvodom zlyhania a rešpektuje smerovanie kanálov cez notifyVia() (pozri Notifikácie a obmedzovanie).
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.