Konfiguracja - Laravel
Na tej stronie Gdzie jest konfiguracja
Gdzie jest konfiguracja
Wszystko siedzi w config/ray.php, a każda wartość ma odpowiednik w .env.
| Klucz | Domyślnie | Znaczenie |
|---|---|---|
token, private_key | - | poświadczenia projektu; bez obu paczka milczy |
url | https://dockray.io | instancja DockRay |
environment | APP_ENV | kolumna środowiska w panelu |
release | null | wersja wdrożonej aplikacji |
sample_rate | 1 | udział wysyłanych zdarzeń błędów |
traces_sample_rate | 0 | udział wysyłanych transakcji; 0 wyłącza pomiar |
send_default_user | true | dołącza identyfikator, e-mail i nazwę zalogowanego użytkownika |
send_default_pii | false | dołącza adres IP i user agenta |
ignore_exceptions | [] | klasy wyjątków nigdy nieraportowane |
ignore_transactions | horizon*, telescope*, _debugbar* | ścieżki pomijane w pomiarze, wzorce jak w Request::is() |
options.max_request_body_size | medium | none, small, medium albo always |
options.attach_stacktrace | false | stos także przy zwykłych komunikatach |
Środowiska
Każde środowisko powinno raportować pod jednoznaczną nazwą - production, staging, preview. Nazwa jest kolumną w panelu i filtrem na liście błędów, więc bez niej awaria z produkcji wygląda dokładnie tak samo jak błąd wywołany w testach. Środowisko lokalne zostaw bez poświadczeń: bez tokenu i klucza integracja ładuje się i milczy, więc nie musisz jej wyłączać osobnym warunkiem.
Co wykluczyć z raportowania
ignore_exceptions działa ponad własną listą dontReport Laravela, więc ValidationException, AuthenticationException i HttpException są pominięte bez żadnej konfiguracji. Dopisz tu wyjątki, które w Twojej aplikacji są normalnym wynikiem, a nie awarią:
'ignore_exceptions' => [
\App\Exceptions\PaymentDeclinedException::class,
\Illuminate\Session\TokenMismatchException::class,
],
Zasada jest jedna: do DockRaya trafia to, na co ktoś ma zareagować. Oczekiwana odmowa płatności albo wygasły token formularza mieszczą się w normalnym działaniu i tylko zużywają miesięczny limit.
Nazwy transakcji
Transakcje są nazywane po wzorcu trasy - GET /orders/{order}, a nie GET /orders/8123. Dzięki temu jedna trasa zostaje jednym wierszem w panelu, niezależnie od tego, ile identyfikatorów przez nią przeszło. Jeśli widzisz tysiące osobnych transakcji, prawie zawsze znaczy to, że trasa jest zdefiniowana bez parametru.
Kontekst użytkownika
Middleware dołącza identyfikator, adres e-mail i nazwę zalogowanego użytkownika. Wyłączasz to przez RAY_SEND_DEFAULT_USER=false albo podmieniasz na własny zestaw pól:
Ray::setUser(['id' => $account->id, 'username' => $account->slug]);
Adres IP i user agent są dołączane tylko przy RAY_SEND_DEFAULT_PII=true. To osobna decyzja od tożsamości użytkownika, bo dotyczy także gości.
Ręczne raportowanie
use Dock\Ray\Laravel\Ray;
use Dock\Ray\Severity;
Ray::message('Nocny import skończył się po czasie', Severity::warning());
Kolejki i komendy Artisan
Jedno i drugie działa poza stosem middleware HTTP, więc raportuje błędy, ale nie tworzy transakcji. Hub jest singletonem na cały proces: długo żyjący worker kolejki trzyma jednego klienta i jedno połączenie, a nie buduje go przy każdym zadaniu.
Ochrona klucza prywatnego
Klucz prywatny jest sekretem projektu, a nie identyfikatorem. Trzymaj go w zmiennych środowiskowych, w menedżerze sekretów albo w konfiguracji serwera - nigdy w repozytorium, w logach, na zrzucie ekranu ani w kodzie wysyłanym do przeglądarki. Jeden projekt może mieć wiele kluczy, więc produkcja i środowisko testowe powinny dostać osobne: każdy odwołuje się niezależnie, bez przerywania raportowania z pozostałych. Podejrzenie ujawnienia klucza jest wystarczającym powodem, aby go odwołać i wygenerować nowy.