Laravel Pulse: метрики приложения
Что такое Pulse
Laravel Pulse — дашборд метрик приложения от создателей Laravel.
Что даёт:
- Slow requests.
- Slow queries.
- Slow jobs.
- Exceptions.
- Queue sizes.
- User activity.
- Cache hit rate.
- Server metrics.
Правило: первый инструмент для Laravel-приложения.
Установка
composer require laravel/pulse
php artisan pulse:install
php artisan migrate
Что создаёт:
- Таблицы для метрик.
- Конфиг
config/pulse.php. - Провайдер
PulseServiceProvider. - Дашборд на
/pulse.
Доступ
По умолчанию — только local.
Открыть в проде:
app/Providers/PulseServiceProvider.php:
protected function gate(): void
{
Gate::define('viewPulse', function (User $user) {
return $user->is_admin;
});
}
Правило: только для админов.
Дашборд
URL: /pulse.
Что видно:
- Сводка по метрикам.
- Графики за период.
- Фильтр по времени.
- Детали при клике.
Slow Requests
Что показывает:
- Самые медленные HTTP-запросы.
- Time — сколько занимают.
- Path.
- Count — сколько раз.
Что смотреть:
- Топ-10 по времени.
- Топ-10 по частоте.
Что делать:
- Клик → посмотреть детали.
- Найти причину.
- Оптимизировать.
Slow Queries
Что показывает:
- Самые медленные SQL-запросы.
- Query — текст.
- Time.
- Count.
Что искать:
- Без индексов.
- N+1.
- Тяжёлые JOIN.
Правило: каждая медленная query — кандидат на оптимизацию.
Slow Jobs
Что показывает:
- Медленные задачи в очереди.
- Job — класс.
- Time.
- Queue.
Что делать:
- Разбить на части.
- Оптимизировать логику.
- Проверить внешние вызовы.
Exceptions
Что показывает:
- Все исключения.
- Тип.
- Сообщение.
- Count.
Что делать:
- Проверить логи.
- Исправить причину.
- Убедиться, что не спам.
Queue Sizes
Что показывает:
- Размер очередей.
- Сколько ждёт.
- Растёт / падает.
Что смотреть:
- Рост — проблема.
- Большой размер — добавить воркеров.
User Activity
Что показывает:
- Активные пользователи.
- Запросы по времени.
- Пиковые часы.
Что даёт: понимание нагрузки.
Cache Metrics
Что показывает:
- Hit rate — % попаданий.
- Miss rate.
- Общее число запросов.
Цель: hit rate > 90%.
Что делать:
- Увеличить TTL.
- Правильные ключи.
- Добавить кеш.
Server Metrics
Что показывает:
- CPU.
- RAM.
- Disk.
- Network.
Требует: настройки.
Правило: полезно, но не заменяет Prometheus.
Custom Metrics
Свои метрики:
use Laravel\Pulse\Facades\Pulse;
use Laravel\Pulse\Recordables\Value;
Pulse::record('order.created', Value::sum($total));
Что даёт: бизнес-метрики в дашборде.
Record Types
Что можно:
Value— сумма, среднее, max.Trend— тренд.Aggregate— агрегат.
Свои карточки
Класс:
namespace App\Livewire;
use Laravel\Pulse\Livewire\Card;
class Orders extends Card
{
public function render()
{
return view('livewire.orders', [
'orders' => Order::count(),
]);
}
}
Регистрация:
// config/pulse.php
'dashboard' => [
'cards' => [
'orders' => [
'enabled' => true,
],
],
],
Retention
Что важно: хранить не вечно.
config/pulse.php:
'storage' => [
'trim' => [
'keep' => env('PULSE_TRIM_KEEP', '7 days'),
],
],
Что даёт: автоочистка старых.
Alerts
На основе Pulse:
if (Pulse::values('slow_queries')->count() > 100) {
Notification::route('slack', 'webhook')->notify(new SlowQueriesAlert());
}
Что даёт: оповещение при аномалии.
Сравнение с Telescope
| Pulse | Telescope | |
|---|---|---|
| Назначение | Прод-метрики | Dev-отладка |
| Производительность | Лёгкий | Тяжёлый |
| Данные | Агрегаты | Детали |
| Прод | Да | Только dev |
Правило: Pulse в проде, Telescope в dev.
Практика
1. Установите Pulse.
2. Настройте доступ через Gate.**
3. Откройте /pulse.**
4. Найдите топ-10 slow requests.
5. Найдите топ-10 slow queries.
6. Проверьте queue sizes.
7. Проверьте cache hit rate.
8. Добавьте 1 custom metric.
9. Настройте retention.
Частые ошибки
1. Публичный доступ:
Все видят метрики
Решение: Gate.
2. Без retention:
БД растёт
Решение: keep.
3. Ignore slow queries:
Не оптимизировать
Решение: разбирать.
4. Не смотреть cache hit rate:
Низкий процент
Решение: регулярно.
5. Puse в dev:
Тяжелее, чем нужно
Решение: Telescope в dev.
6. Без custom metrics:
Не видеть бизнес
Решение: добавить.
7. Игнорировать exceptions:
Ошибки копятся
Решение: Sentry + Pulse.
8. Разово:
Деградация
Решение: мониторинг.
Итог
- Pulse — метрики прода.
- Slow requests — топ.
- Slow queries — оптимизация.
- Slow jobs — очереди.
- Cache hit rate — > 90%.
- Queue sizes — следить.
- Custom metrics — бизнес.
- Gate — доступ.
- Retention — 7 дней.
- Pulse + Telescope — вместе.
Дальше — Laravel Telescope: отладка в dev.