Konfiguracja - Drupal
Na tej stronie Gdzie jest konfiguracja
Gdzie jest konfiguracja
Administracja → Konfiguracja → Programowanie → DockRay, czyli /admin/config/development/dock-ray. Formularz pokazuje bieżący status konfiguracji, wynik ostatniego testu i przycisk Wyślij zdarzenie testowe, który sprawdza połączenie bez opuszczania strony.
Źródło konfiguracji
Źródło konfiguracji rozstrzyga, jak nadpisanie z settings.php współpracuje z wartościami zapisanymi w formularzu:
| Źródło | Zachowanie |
|---|---|
| Auto (domyślne) | klucz ustawiony w settings.php wygrywa dla swojego pola, resztę bierzemy z formularza. To dokładnie zachowanie sprzed wprowadzenia tego pola - niczyj settings.php nie przestaje działać. |
| Tylko settings.php | token, klucz i adres z formularza są ignorowane, choćby były wypełnione; pole bez odpowiadającego klucza spada na wartość domyślną, a nie na formularz |
| Tylko ten formularz | settings.php jest ignorowany, choćby definiował nadpisanie - przydatne, gdy wspólny plik ustawień zaszywa domyślny projekt, a jedna witryna ma mieć własny |
Zablokowane pola są pokazywane z wartością, która naprawdę obowiązuje, i z notką dlaczego. Nadal wysyłają tę wartość razem z formularzem: wyłączony element Form API przekazuje #default_value, zamiast pominąć klucz, więc zapisanie formularza przy zablokowanym polu nie może wyczyścić tego, co jest zapisane.
Ś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.
Jak działa raportowanie
Moduł rejestruje kanał loggera. Drupal i tak zamienia każdy błąd PHP i każdy nieprzechwycony wyjątek na wpis w dzienniku, więc jeden kanał obejmuje całość - i nie ma tu drugiego handlera błędów konkurującego z rdzeniem.
minimum_level to waga w skali RFC 5424: 3 (Error) raportuje błędy, zdarzenia krytyczne, alerty i sytuacje awaryjne, a pomija ostrzeżenia i notice'y. Wpis, który niesie wyjątek, jest raportowany razem ze stosem wywołań; pozostałe stają się komunikatami.
| Poziom | Co obejmuje |
|---|---|
2 Critical | tylko awarie krytyczne i wyżej |
3 Error | zalecane: błędy i wszystko poważniejsze |
4 Warning | także ostrzeżenia - w rozbudowanej witrynie znacząco więcej zdarzeń |
Transakcje
Czas obsługi żądań jest mierzony tylko wtedy, gdy traces_sample_rate jest większe od zera. Transakcja otwiera się na kernel.request i zamyka na kernel.terminate. Nic nie wychodzi w trakcie żądania: zdarzenia czekają w kolejce i idą z uchwytu zamknięcia po odesłaniu odpowiedzi, więc wolny panel nigdy nie opóźnia strony.
Błędy JavaScript
Domyślnie wyłączone. Po włączeniu moduł ładuje na stronach nieadministracyjnych kolektor, który raportuje window.onerror i nieobsłużone odrzucenia obietnic do witryny, a nie do panelu: przeglądarka nie może uwierzytelnić się w DockRayu bez klucza prywatnego, a ten byłby wtedy czytelny w źródle strony.
Zgłoszenia trafiają na POST /dock-ray/browser-error z limitem 16 kB i ograniczeniem 20 zgłoszeń na adres IP na godzinę, pilnowanym przez serwis flood Drupala. Sam kolektor jest serwowany z /dock-ray/collector.js, bo SDK leży w katalogu vendor/ projektu, czyli w większości instalacji poza docrootem. Każde żądanie kończy się odpowiedzią 202, niezależnie od tego, czy zgłoszenie przyjęto.
Ręczne raportowanie
try {
$this->import();
}
catch (\Throwable $exception) {
\Drupal::service('dock_ray.hub')->captureException($exception);
throw $exception;
}
\Drupal::logger('my_module')->error(...) również dociera do DockRaya - tym samym kanałem co wszystko inne, więc własny kod nie potrzebuje osobnej integracji.
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.