LaraOwl - це open-source платформа моніторингу для Laravel-застосунків, яку ви розгортаєте та запускаєте на власній інфраструктурі. Замість відправлення даних застосунку до стороннього сервісу ви налаштовуєте LaraOwl-сервер і встановлюєте клієнтський пакет у застосунки, які потрібно відстежувати. Клієнт збирає телеметрію та надсилає її на ваш сервер для зберігання та відображення.
Платформа охоплює схожу функціональність з Laravel Nightwatch - моніторинг запитів, винятків, запитів до бази даних та черг. Однак Nightwatch є хостинговим сервісом, тоді як LaraOwl ви запускаєте самостійно. Проєкт ліцензовано під Apache 2.0.
Що відстежує клієнт
Після встановлення пакета laraowl/client у моніторинговому застосунку LaraOwl записує дані на кількох рівнях життєвого циклу запиту:
- HTTP-запити - включають метод, шлях, код статусу, тривалість та розмір відповіді
- Винятки - групуються разом зі stack trace та статусом вирішення, який можна відмітити
- Запити до бази даних - з виявленням повільних запитів та ідентифікацією проблеми N+1
- Завдання та активність черг - включають статус обробки, тривалість та помилки
- Активність користувачів - історія запитів для кожного користувача
Телеметрія надсилається асинхронно через систему черг Laravel, тому збір даних не впливає на критичний шлях обробки запиту.
WAF-аналіз та інтеграція з Cloudflare
Окрім даних про продуктивність, LaraOwl аналізує вхідний трафік на наявність поширених патернів атак. WAF-аналіз позначає запити, які виглядають як спроби SQL-ін'єкції, міжсайтового скриптингу (XSS) та обходу шляхів (path traversal).
Платформа також підключається безпосередньо до Cloudflare API, що дозволяє керувати правилами файрволу з дашборду замість перемикання між різними інструментами.
Дашборд у реальному часі та сповіщення
Дашборд оновлюється в реальному часі через WebSockets за допомогою Laravel Reverb. Графіки відображають нові запити, винятки та завдання в міру їх надходження.
Коли щось потребує уваги, LaraOwl може надіслати сповіщення через Slack, Discord, Telegram, email або вебхук на ваш вибір. Платформа також підтримує перевірки uptime та heartbeat для моніторингу доступності сервісів.
Встановлення
Сервер - це Laravel-застосунок, який ви створюєте за допомогою Composer, після чого збираєте frontend-ресурси та запускаєте міграції:
composer create-project laraowl/laraowl laraowl
cd laraowl
npm install
cp .env.example .env
php artisan key:generate
php artisan migrate
npm run build
Оскільки дашборд покладається на чергову обробку даних, заплановані завдання та Reverb, сервер запускає три допоміжні процеси:
php artisan queue:work
php artisan reverb:start
php artisan schedule:work
У кожному застосунку, який ви хочете моніторити, встановіть клієнтський пакет і запустіть його інсталятор:
composer require laraowl/client
php artisan laraowl:install
Системні вимоги
LaraOwl потребує PHP 8.3+, Node.js 18+ та MySQL 8.0+ або PostgreSQL. Документацію та вихідний код можна переглянути на GitHub.