laravel-monitor
Пакет для отслеживания сбоев в ларавел-проектах
https://gitflic.ru/project/adb/laravel-pulse
Установка
composer require adb/laravel-pulse
Публикация конфигурации
php artisan vendor:publish --tag=monitor
Настройка перечня storage (дисков) для проверки доступности в .env файле
Значения по умолчанию:
DISCS_FOR_MONITOR=local,input1
Добавьте свои названия storage из config/filesystems.php
Настройка prefix, middleware для роутов.
Значения по умолчанию:
'prefix' => 'api/monitor',
'middleware' => ['api', 'monitor.auth.api'],
'as' => 'api.monitor.',
Настройка компонентов для тестов.
'config' => [
MonitorEnum::PROJECT => true, // laravel and php
MonitorEnum::DB => true, // connect db
MonitorEnum::REDIS => true, // redis
MonitorEnum::NODE => false, // node and npm
MonitorEnum::HORIZON => true, // horizon
MonitorEnum::STORAGES => false, // диски
MonitorEnum::SECURITY => false, // проверка пакетов
],
Настройка перечня баз для проверки соединений.
Значения по умолчанию:
'connections_db' => [
'mongodb'
],
'connections_redis' => [
'default'
],
Добавьте свои значения.
Команда
php artisan monitor:info - запуск всех тестов согласно настройки выше.
Запуск теста для конкретного компонента:
php artisan monitor:info project
php artisan monitor:info db
php artisan monitor:info node
php artisan monitor:info redis
php artisan monitor:info horizon
php artisan monitor:info storages
php artisan monitor:info security
php artisan monitor:info > /tmp/monitor.json запись в файл для заббикса или прописать в Kernel.php нужный таймаут: $schedule->command(‘monitor:info’)->everyThirtyMinutes()->sendOutputTo(‘/tmp/monitor.json’);
Запись результатов в БД
Для активации записи в БД, поставьте true и примените миграцию (для sql бд) Так же это активирует api для выдачи самого последнего результата
'save_to_db' => false,
API
/api/monitor/monitor
авторизация по bearer token, прописать его как API_TOKEN в env
Структура json
{
"project": {
"php": "8.3.30",
"laravel": "10"
},
"db": {
"mongodb": {
"driver": "mongodb",
"host": "localhost",
"name": "mongodb",
"db": "database",
"success": true
}
},
"redis": {
"default": {
"redis_name": "default",
"redis_version": "7.4.2",
"os": "Linux 6.10.14-linuxkit aarch64",
"port": "6379",
"host": "redis",
"success": true
}
},
"horizon": {
"success": false
},
"storages": {
"local": true,
"input": true,
"archive": true,
},
"security": {
"erusev\/parsedown": {
"version": "1.7.1",
"time": "2018-03-08T01:11:30+00:00",
"advisories": [
{
"title": "Class-Name Injection",
"link": "https:\/\/github.com\/erusev\/parsedown\/issues\/699",
"cve": "CVE-2019-10905"
}
]
}
}
}