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.
Что показывает:
- Все письма.
- Тема.
- Кому.
- 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
| Telescope | Pulse | |
|---|---|---|
| Назначение | 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.