Vigilance - це панель моніторингу, яка відстежує поведінку фонових процесів у production-середовищі. Пакет записує jobs, artisan-команди та заплановані завдання на всіх етапах виконання - від постановки в чергу до завершення або помилки, зберігаючи параметри запуску, коди виходу та траси винятків. Ключова відмінність від існуючих інструментів полягає в тому, що Vigilance працює з будь-яким драйвером черг: database, Redis, SQS, Beanstalkd та sync - всі звітують в єдине місце. Пакет вимагає PHP 8.2+, Laravel 12 або 13, Livewire 3.5+ або 4, та поширюється під ліцензією MIT.
Один запис на кожен запуск для всіх драйверів
Horizon працює лише з чергами Redis, а Telescope призначений для локального дебагу, а не production-моніторингу. Vigilance натомість створює один рядок для кожного запуску та оновлює його протягом життєвого циклу виконання. У результаті виходить єдина часова шкала, яка охоплює jobs у черзі, команди, запущені через CLI або scheduler, та сам планувальник. Кожен запис містить параметри виконання, фінальний стан та редаговану трасу винятків у разі помилки. Секретні дані автоматично видаляються перед збереженням.
Оскільки зберігання кожного успішного запуску стає затратним, Vigilance використовує семплювання під час відправки та зберігає всі помилки незалежно від частоти вибірки:
VIGILANCE_SAMPLE_RATE=0.1
VIGILANCE_RETENTION_DAYS=7
VIGILANCE_DB_CONNECTION=monitoring
Збереження 10% успішних запусків при повному збереженні всіх помилок дозволяє керувати обсягом даних на активних чергах. Налаштування VIGILANCE_DB_CONNECTION на окрему базу даних ізолює записи моніторингу від основного з'єднання додатка. Очищення старих записів виконується запланованою командою відповідно до налаштування retention.
Ручний запуск через типізовані форми
Після увімкнення функцій керування Vigilance може запускати jobs безпосередньо з панелі. Достатньо позначити job контрактом Dispatchable, і панель зчитає сигнатуру конструктора через рефлексію, щоб побудувати форму:
use Vigilance\Contracts\Dispatchable;
class ProcessPodcast implements ShouldQueue, Dispatchable
{
public static string $vigilanceLabel = 'Process a podcast';
public function __construct(public Podcast $podcast, public bool $notify = true) {}
}
Згенерована форма обробляє скалярні типи, enum'и, дати та прив'язку Eloquent-моделей. Конструктор, що очікує модель Podcast, створює поле, яке автоматично резолвить запис. Той самий механізм дозволяє запускати дозволені artisan-команди з інтерфейсу. Обидві можливості вимкнені за замовчуванням і контролюються через конфігурацію:
VIGILANCE_CONTROL_ENABLED=true
Користувацькі метрики та Core Web Vitals
Поряд з історією запусків Vigilance збирає два типи даних додатка. Бізнес-метрики використовують API лічильників та показників, які можна викликати з власного коду:
use Vigilance\Vigilance;
Vigilance::increment('signups');
Vigilance::gauge('cart_value', $cart->total());
Для frontend-даних можна увімкнути Real User Monitoring (RUM) та додати Blade-директиву до layout'у для збору Core Web Vitals (LCP, INP, CLS, FCP, TTFB) від реальних відвідувачів:
VIGILANCE_RUM=true
@vigilanceRum
Ці дані живлять панелі продуктивності, які відображають p50, p95 та p99 латентності та показники помилок поряд з часовими шкалами черг та команд.
Встановлення та захист панелі
Встановіть пакет, запустіть інсталятор та виконайте міграції:
composer require anousss007/vigilance
php artisan vigilance:install
php artisan migrate
Панель доступна лише локально, поки ви явно не авторизуєте доступ. Визначте, хто може її бачити, через callback у методі boot() service provider'а або через Gate:
use Vigilance\Vigilance;
Vigilance::auth(fn ($request) => in_array($request->user()?->email, [
'you@example.com',
]));
За замовчуванням панель доступна за адресою /vigilance.
Додаткові можливості
Панель виходить за межі простої історії черг. Вона групує винятки у fingerprinted-inbox проблем, що охоплює веб-запити, jobs у черзі, команди та браузер. Відстежує service-level objectives з error budgets та burn-rate-алертами, моніторить здоров'я релізів, порівнюючи показники помилок до та після deploy.
Інші опціональні компоненти включають:
- Трейсинг запитів та jobs з waterfall-діаграмами для кожного запиту та виявленням N+1 проблем
- Uptime-перевірки, що записують доступність та латентність
-Log explorer з пошуком, корельований з трейсами
- Оповіщення в Slack, Discord, Teams або через webhook
- Worker supervisor, що виконує роль Horizon для не-Redis драйверів
- Read-only доступ для AI-агентів через MCP-сервер
Документацію та вихідний код можна знайти на GitHub.