Laravel Telescope - vývojový i produkční monitoring

PHP, Laravel, Tipy & triky

Telescope je balíček přímo od tvůrců Laravelu, který sleduje vše, co se v systému děje. Je určen převážně pro lokální vývoj, ale s vhodnou konfigurací může dobře posloužit i v produkci.

Laravel Telescope - vývojový i produkční monitoring

Při lokálním vývoji mám osobně raději Laravel Debugbar. Zobrazuje se totiž automaticky dole na každé stránce a tím pádem je vše hned po ruce. Telescope se otevírá v novém okně, což může být výhodnější zase pro oddělení na samostatný monitor. Jenže někteří, včetně mě, se rozhodli nasadit Telescope také do produkčního prostředí jako takový jednoduchý monitoring.

Ukládání až po dokončení requestu

Monitorovací služby, jako je Datadog, vyžadují instalaci agenta. Ten běží na daném stroji jako servica a přijímá logy, metriky apod. Data si ale pouze uloží a následně zpracovává v samostatném procesu. Tím nedochází ke zpomalování hlavní aplikace, což je v produkci nejdůležitější.

A to je i výhoda Telescopu, který sice data ukládá do databáze, ale všechny až když se aplikace ukončuje. Což je až poté, co byl request zpracován a výsledek odeslán. Tento přístup sice může celý požadavek trochu zpomalit, nebo to to může vypadat, že stránka stále načítá. Všechna data ale byla již předtím odeslána, takže se stránka může mezitím vykreslovat.

Filtrace a mazání monitorovacích logů

Telescope nabízí mnoho možností, co sledovat. Ne vše je ale vhodné na produkci nechat zapnuté.  Například ukládat každý celý request včetně celého response na produkci velmi rychle zabere všechno místo. Naštěstí je ale možné si jednotlivé watchery upravit nebo některé vypnout. A také je vhodně průběžně starší data buď zálohovat nebo smazat.

Mazat staré záznamy lze jednoduše pomocí artisan příkazu php artisan telescope:prune

Osobně sleduji pomalé requesty, pomalé SQL dotazy, frontu, notifikace a emaily. Navíc ještě změny v modelech, protože Telescope kromě jednotlivých změn uloží také přihlášeného uživatele. Dá se tak zpětně dohledat, kdo jaké změny kdy provedl.

// Vlastní RequestWatcher který loguje pouze pomalé requesty
class RequestWatcher extends Laravel\Telescope\Watchers\RequestWatcher { public function recordRequest(Illuminate\Foundation\Http\Events\RequestHandled $event) { $startTime = defined('LARAVEL_START') ? LARAVEL_START : $event->request->server('REQUEST_TIME_FLOAT'); $duration = $startTime ? floor((microtime(true) - $startTime) * 1000) : 0; if ($duration < ($this->options['slow'] ?? 750)) { return; } parent::recordRequest($event); } }

Používáte jiný monitoring, nebo máte zkušenosti s Telescopem? Podělte se s ostatními čtenáři v komentářích. Úvodní obrázek je převzat z freepik.com

K tomuto článku již není možné přidávat další komentáře