tremby/laravel-queue-monitor

Laravel 队列监控工具

2.3.7 2017-11-20 18:58 UTC

This package is auto-updated.

Last update: 2024-09-18 03:54:55 UTC


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 作业是否已停止工作。