ejunker/laravel-queue-monitor

Laravel 队列监控工具

2.3.10 2020-09-14 00:46 UTC

This package is auto-updated.

Last update: 2024-09-14 09:41:12 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

检查默认队列每 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 作业是否已停止工作。