Відстежуйте та керуйте Schedules, Queues і Errors у Laravel за допомогою Watchtower

Перекладено ШІ 0 Laravel News 24 червня, 2026

Шукаєте спосіб об’єднати моніторинг черг, розкладів та помилок Laravel на одній панелі? Watchtower пропонує потужний інструмент для контролю фонових процесів та швидкого виправлення збоїв у реальному часі.

Watchtower — це пакет для Laravel, який об'єднує заплановані завдання, черги, джоби та помилки на єдиній панелі моніторингу, адаптованій для роботи у production. Основні можливості інструменту:

  • Єдиний dashboard для контролю розкладу, черг, завдань та помилок.
  • Функціональність, а не лише моніторинг: запуск завдань за запитом, масовий перезапуск failed jobs та керування статусом помилок.
  • Підтримка будь-яких драйверів черг (database, Redis або SQS) без обов'язкової залежності від Redis.
  • Сумісність із multi-tenant системами та конфігураціями з кількома базами даних.
  • Безпека для production: відкладений запис даних (deferred writes), sampling та автоматичне очищення логів.
  • Контроль доступу через Gate у стилі Horizon та Telescope.
  • Сповіщення через Slack, webhook або email.

# Три розділи для фонових процесів

Панель керування розділена на три основні вкладки. Вкладка Schedule відображає всі заплановані завдання з cron-виразами, описаними простою англійською. Тут можна переглянути історію запусків, їхню тривалість, відстежити пропущені завдання та миттєво запустити будь-яке з них кнопкою «Run now».

У вкладці Queues & Jobs метрики черг у реальному часі відображаються поруч із таблицею failed-jobs. Ви можете перезапускати окремі завдання або виконувати масовий ретрай за типом помилки чи часовим проміжком.

Вкладка Errors групує помилки за типом та кількістю, надаючи повний stack trace, контекст запиту чи джоби, а також інструменти для позначення помилок як вирішених.

Watchtower не прив'язаний до конкретного драйвера: черги можуть працювати на database, Redis або SQS. Якщо ваш додаток використовує кілька баз даних або архітектуру multi-tenant, Watchtower зчитує дані через окреме з'єднання.

# Безпека в production за замовчуванням

Щоб моніторинг не створював зайвого навантаження на систему, Watchtower використовує callback terminating() у Laravel для запису даних після відправки відповіді користувачу. Для високонавантажених проєктів можна налаштувати sampling, щоб фіксувати лише частину активності, при цьому зберігаючи інформацію про всі збої та виконання розкладу. Для економії місця всі поля автоматично обрізаються, а команда watchtower:prune щодня видаляє застарілі записи (за замовчуванням — через 30 днів для помилок і 7 днів для черг).

Більшість параметрів налаштовуються через змінні оточення:

WATCHTOWER_ENABLED=true
WATCHTOWER_DB_CONNECTION=monitoring
WATCHTOWER_SAMPLING_RATE=0.25
WATCHTOWER_AFTER_RESPONSE=true
WATCHTOWER_RETAIN_EXCEPTIONS=30

Опція WATCHTOWER_ENABLED=false миттєво зупиняє будь-яку активність пакета, а списки ігнорування дозволяють приховати зайвий «шум» від окремих завдань чи помилок.

# Авторизація

За замовчуванням доступ до панелі відкритий лише у локальному середовищі. Для інших оточень необхідно визначити Gate viewWatchtower:

use Illuminate\Support\Facades\Gate;
 
Gate::define('viewWatchtower', function ($user) {
    return $user !== null & $user->isAdmin();
});

Також можна використати callback безпосередньо через метод пакета:

use Watchtower\Watchtower;
 
Watchtower::auth(fn ($request) => $request->user()?->isAdmin());

Користувачі без відповідних прав отримають відповідь 403.

# Гнучкі сповіщення

Watchtower може надсилати повідомлення про невдалі або пропущені завдання, а також про перевищення ліміту помилок (наприклад, понад 25 за годину). Сповіщення активуються параметром WATCHTOWER_ALERTS_ENABLED=true і надсилаються у Slack, через webhook або поштою. Перевірку стану виконує команда watchtower:monitor, яку слід додати до розкладу завдань:

$schedule->command('watchtower:monitor')->everyFiveMinutes();

Watchtower вимагає PHP 8.2+ та Laravel 11 або 12 і розповсюджується за ліцензією MIT. Вихідний код та документація доступні на GitHub.

Популярні

Інше, що варто прочитати

16 Оновлено 24 червня, 2026

Простий пакет RabbitMQ для Laravel

Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!

18 Оновлено 24 червня, 2026

Перетворення даних у типобезпечні DTO за допомогою пакету Data Model

Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю

Використання повнотекстового пошуку в Laravel
178 Оновлено 24 червня, 2026

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом