Laravel 队列监控面板 - Horizon
介绍
Horizon 为 Laravel 官方出品的 Redis 队列提供了一个可以通过代码进行配置、并且非常漂亮的仪表盘,并且能够轻松监控队列的任务吞吐量、 执行时间以及任务失败情况等关键指标。
队列执行者的所有配置项都存放在一个简单的配置文件中,所以团队可以通过版本控制进行协作维护。
安装
由于 Horizon 中使用了异步处理信号,所以需要 PHP 7.1+
可以使用 Composer 将 Horizon 安装进你的 Laravel 项目:
composer require laravel/horizon
安装完成后,使用 vendor:publish
Artisan 命令发布相关文件:
php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"
配置
发布相关文件过程中,Horizon 的主要配置文件会被放置到 config/horizon.php
,我们可以通过此文件配置队列执行者的所有配置项,此文件中的每个配置项都包含一份完整的使用说明,所以推荐认真阅读此文件。
负载均衡配置
Horizon 有三种负载均衡策略:simple
、auto
、 和 false
,默认策略是 simple
,会将接收到的任务均分给队列进程:
'balance' => 'simple',
策略 auto
会根据每个队列的压力自动调整其执行者进程数目,例如:如果 notifications
有 1000 个待执行的任务,但是你的 render
队列是空的,Horizon 会分派更多执行者进程给 notifications
队列,直到队列任务全部执行完毕(即队列为空)。当配置项 balance
设置为 false
时,Horizon 的执行策略与 Laravel 默认行为一致,及根据队列在配置文件中配置的顺序处理队列任务。
仪表盘权限验证
Horizon 仪表盘的路由是 /horizon
,默认只能在 local
环境中访问仪表盘。我们可以使用 Horizon::auth
函数定义更具体的访问策略。auth
函数能够接受一个回调函数,此回调函数需要返回 true
或 false
,从而确认当前用户是否有权限访问 Horizon 仪表盘:
Horizon::auth(function ($request) {
// return true / false;
});