tremby / 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
。
检查默认队列的示例 cron 作业,每 15 分钟执行一次
*/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 作业是否已停止工作。