Pulse записує події з кожного запиту, завдання, SQL-запиту й звернення до кешу. На застосунку з тисячами запитів за хвилину це означає мільйони записів, які треба зберегти й агрегувати для панелі. Без налаштувань моніторинг починає навантажувати ту саму базу, яку мав би спостерігати.
1. Окрема база даних для Pulse:
PULSE_DB_CONNECTION=pulse
Записи й важкі агрегуючі запити панелі не конкурують з основними запитами застосунку.
2. Приймання через Redis:
PULSE_INGEST_DRIVER=redis
PULSE_REDIS_CONNECTION=pulse
За замовчуванням Pulse пише в базу після відправлення відповіді - запит користувача не чекає, але воркер PHP зайнятий. З драйвером redis записи йдуть у Redis-стрім, а окремий процес php artisan pulse:work переносить їх у базу пакетами. Підключення Redis для Pulse має бути іншим, ніж для черги.
3. Семплювання:
Recorders\UserRequests::class => [
'sample_rate' => env('PULSE_USER_REQUESTS_SAMPLE_RATE', 0.1),
],
Записується лише ~10% подій, значення на панелі масштабуються й позначаються ~. Чим частіша подія, тим нижчу частоту можна ставити без втрати точності. Рідкісні події (винятки, повільні запити) семплювати не варто.
4. Фільтрація й групування:
- ігнорувати шумні маршрути (
/up,/livewire/*,/horizon/*) і ключі кешу; - групувати ключі кешу й URL з ідентифікаторами регулярними виразами - інакше
user:1,user:2... стають мільйоном окремих рядків; - пороги «повільного» під свій застосунок (
threshold), можна окремо для конкретних маршрутів.
5. Обрізання даних - Pulse видаляє записи поза вікном панелі за лотереєю під час приймання.
6. Процеси, що треба запускати й перезапускати:
pulse:checkна кожному сервері для картки серверів;pulse:workпри прийманні через Redis;pulse:restartпід час деплою - обидві команди довгоживучі й не бачать нового коду.
7. Збої самого Pulse: якщо сховище Pulse недоступне, помилка не має ламати застосунок. Pulse за замовчуванням логує свої винятки, а обробник можна перевизначити через Pulse::handleExceptionsUsing().
Доступ: гейт viewPulse - панель показує email користувачів, SQL-запити й URL, це чутливі дані.