Урок 05

Laravel Telescope: отладка в dev

Что такое Telescope

Laravel Telescope — отладочный инструмент для dev-окружения.

Что даёт:

  • Requests — все HTTP.
  • Commands — Artisan.
  • Schedule — задачи.
  • Jobs — очередь.
  • Queries — SQL.
  • Mail — письма.
  • Notifications.
  • Cache.
  • Events.
  • Exceptions.
  • Logs.
  • Dumps.
  • Models.

Правило: только в dev. Никогда в проде.

Установка

composer require laravel/telescope --dev
php artisan telescope:install
php artisan migrate

Что создаёт:

  • Пакет в dev.
  • Миграции.
  • Конфиг config/telescope.php.
  • Дашборд на /telescope.

Ограничение по среде

app/Providers/TelescopeServiceProvider.php:

protected function gate(): void
{
    Gate::define('viewTelescope', function (User $user) {
        return in_array($user->email, ['admin@example.com']);
    });
}

Правило: никогда в проде.

Как убедиться:

// config/telescope.php
'enabled' => env('TELESCOPE_ENABLED', false),

.env:

TELESCOPE_ENABLED=true

Только в local.

Requests

Что показывает:

  • Все HTTP-запросы.
  • URL.
  • Method.
  • Status.
  • Duration.
  • Payload.
  • Queries внутри.

Что искать:

  • Медленные запросы.
  • Много SQL.
  • Ошибки.

Queries

Что показывает:

  • Все SQL.
  • SQL — текст.
  • Bindings.
  • Time.
  • Caller — где вызван.

Что искать:

  • Медленные.
  • N+1 — много одинаковых.
  • Без индексов.

Правило: главная вкладка для оптимизации.

Jobs

Что показывает:

  • Dispatch — кто отправил.
  • Processing — когда обработан.
  • Failed.
  • Payload.

Что искать:

  • Медленные jobs.
  • Повторные dispatch.
  • Failed.

Mail

Что показывает:

  • Все письма.
  • Тема.
  • Кому.
  • HTML / text.
  • Вложения.

Что даёт: не отправлять в реальности в dev.

Events

Что показывает:

  • Dispatch событий.
  • Listeners.
  • Payload.

Что искать:

  • Циклы.
  • Медленные слушатели.

Cache

Что показывает:

  • Hit / Miss.
  • Key.
  • Tags.
  • Time.

Что искать:

  • Низкий hit rate.
  • Много miss.
  • Большие значения.

Exceptions

Что показывает:

  • Все исключения.
  • Message.
  • Stack trace.
  • Request — контекст.

Что делать:

  • Открыть стек.
  • Найти причину.
  • Исправить.

Logs

Что показывает:

  • Все логи.
  • Уровень.
  • Сообщение.
  • Context.

Models

Что показывает:

  • Изменения моделей.
  • Created / Updated / Deleted.
  • Attributes.

Что искать:

  • Массовые изменения.
  • Проблемы с event-ами.

Фильтры

Что можно:

  • По типу.
  • По времени.
  • По тегу.
  • По запросу.

Правило: фильтровать — иначе много данных.

Pruning

Что важно: старые данные удаляются.

config/telescope.php:

'storage' => [
    'database' => [
        'connection' => env('DB_CONNECTION', 'mysql'),
        'chunks' => 100,
    ],
],

'prune' => [
    'hours' => 24 * 7,
],

Команда:

php artisan telescope:prune

Что даёт: автоочистка.

Сравнение с Pulse

TelescopePulse
НазначениеDev-отладкаПрод-метрики
ДанныеДеталиАгрегаты
ОбъёмТяжёлыйЛёгкий
ПродНетДа

Правило: не путать среды.

Влияние на производительность

Что важно:

  • Telescope — тяжёлый.
  • Записывает всё.
  • Замедляет dev.

Что делать:

  • Фильтры.
  • Отключать в нужный момент.
  • Не в проде.

Практика

1. Установите Telescope.

2. Откройте /telescope.**

3. Пройдите свой сайт.

4. Откройте вкладку Queries.

5. Найдите N+1.

6. Исправьте.

7. Проверьте Requests — медленные.**

8. Настройте pruning.

9. Убедитесь, что не в проде.**

Частые ошибки

1. Telescope в проде:

Тяжело + утечка

Решение: только dev.

2. Без pruning:

БД растёт

Решение: prune.

3. Игнорировать Queries:

Не видеть N+1

Решение: регулярно.

4. Без фильтров:

Много данных

Решение: фильтровать.

5. Не смотреть Exceptions:

Ошибки копятся

Решение: разбирать.

6. Постоянно включен:

Замедляет dev

Решение: включать по необходимости.

7. Смешивать с Pulse:

Тяжело

Решение: разные среды.

8. Без доступа:

Публичный дашборд

Решение: Gate.

Итог

  • Telescope — dev-отладка.
  • Queries — главная вкладка.
  • Requests — медленные.
  • Jobs, Mail, Events — детали.
  • Pruning — обязательно.
  • Не в проде.
  • Фильтры — для скорости.
  • Сравнение с Pulse — разные среды.
  • Влияет на производительность dev.
  • Для прода — Pulse.

Дальше — профилирование PHP: Xdebug и Blackfire.