ejunker / laravel-queue-monitor
Laravel 队列监控工具
Requires
- php: >=5.6.4
- laravel/framework: >=5.1
README
此工具为项目添加了各种监控队列的工具。
Laravel 版本
此分支以及标签行 2.*
是针对 Laravel 5 的。对于 Laravel 4 版本,请参阅 laravel4 分支 和标签行 1.*
。
如果您使用 Laravel 5.5 或更高版本,并且使用 PHP 7.1 或更高版本,并且您的队列由 Redis 支持,您可以考虑使用 Laravel Horizon,这是一个官方工具,可以解决此包相同的问题。
安装
在您的 Laravel 项目中引入它
composer require tremby/laravel-queue-monitor
如果您正在运行 Laravel 5.4 或更低版本,您必须手动在您的 config/app.php
文件中注册服务提供者
'providers' => [ ... Tremby\QueueMonitor\ServiceProvider::class, ],
使用
为每个要监控的队列添加一个 cron 作业,该作业运行 queue:queuecheck
Artisan 任务。可以将队列名称作为参数传递,如果没有提供,则使用默认队列名称。有关详细信息,请参阅 ./artisan queue:queuecheck --help
。
检查默认队列每 15 分钟的示例 cron 作业
*/15 * * * * php /home/forge/example.com/artisan queue:queuecheck
此任务将记录在应用程序缓存中(一天),表示对该队列的检查已挂起,然后将作业推送到该队列。此作业将缓存状态更改为“OK”,因此如果作业由于任何原因未运行,则状态将保持为“挂起”。
可以通过渲染提供的状态视图来检查所有队列监控的状态。提供的视图标记对 Twitter Bootstrap 友好,并且如果使用 status-page
视图,则从 CDN 加载 Bootstrap。
Route::get('queue-monitor', function () { return Response::view('queue-monitor::status-page'); });
其他可用的视图包括 queue-monitor::status-panel
,这是 .panel
元素及其内容;以及 queue-monitor::status
,它只是 table
元素。这些都可以用来将此监控器集成到更大的监控面板中。可以传递 panel_class
选项,默认为 panel-default
。
还有一个 queue-monitor::status-json
,它渲染适合机器消费的 JSON。这允许传递渲染选项到底层的 json_encode
,可以像这样使用
Route::get('queue-monitor.json', function () { $response = Response::view('queue-monitor::status-json', [ 'options' => \JSON_PRETTY_PRINT, ]); $response->header('Content-Type', 'application/json'); return $response; });
在实际中,您可能将 cron 作业设置为每 15 分钟运行一次,然后自动运行另一个作业(例如,使用远程健康检查器)几分钟后,消耗 JSON,并确保所有队列都具有 ok
状态。如果任何一个没有,它可能发送一个带有链接到 HTML 队列状态视图的警报。它还可以检查最后挂起的检查日期是否合理,以及 cron 作业是否已停止工作。