Laravel Horizon监控Redis队列queue
前几日开始断断续续在看Laravel5.5 发现其中有个扩展包,针对现有的项目缺陷很有参考价值。
Laravel Horizon监控你的Redis队列。
Horizon 可以帮助你轻松实现对 Redis 队列系统的一些关键指标的监控,例如作业吞吐量,运行时间等。
资料目前不太多,先简单整理下mark
首先说明下此扩展包只支持PHP7.1以上,Laravel5.5框架。原计划在Laravel5.2上尝试失败。。
一、Installation安装
composer require laravel/horizon
安装完之后,注册服务
php artisan vendor:publish --provider="LaravelHorizonHorizonServiceProvider"
二、Configuration配置
配置文件在config/horizon.php下面,这里每一个参数都包含一份完整的说明,这里不再赘述。
负载均衡配置:
Horizon 有三种负载均衡策略:simple、auto、 和 false,默认策略是 simple,会将接收到的任务均分给队列进程:
//本地开发配置
'local' => [// 本地
'supervisor-1' => [
'connection' => 'redis',
'queue' => ['default', 'zztest_2', 'zztest_1'],//队列名称
'balance' => 'auto',
'processes' => 3,
'tries' => 3,
],
],
这里策略默认是:'balance' => 'simple'按顺序处理队列, 个人倾向于 'balance' => 'auto',资源自动分配,繁忙的队列会分派执行进程给空闲队列。具体怎么实现的暂时没去研究。
这里顺便说明下,.env文件中
SESSION_DRIVER=file,QUEUE_DRIVER=redis,
部分内容需要配置的,比如队列驱动选择redis,同时需要配置redis信息:
REDIS_HOST= Redis_IP
REDIS_PASSWORD=null
REDIS_PORT=6379
三、Metrics 仪表盘
这个可以加入访问策略权限限制,一般都是登录之后才能看。官网给的例子:
Horizon::auth(function ($request) {
// return true / false;
});
Horizon包括一个度量仪表板Metrics,它提供关于您的工作和队列等待时间和吞吐量的信息。为了填充此仪表板,您应该配置应用程序的调度程序,在文件/app/Console/Kernel.php中,为及时看到效果个人设置每隔一分钟运行一次:
/**
* Define the application's command schedule.
* @param IlluminateConsoleSchedulingSchedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule){
$schedule->command('horizon:snapshot')->everyMinutes();
}
那这里还需要配置计划任务,到Web服务器中添加如下命令:
#crontab -e
加入命令:
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
例如:
* * * * * /usr/bin/php /var/www/html/artisan schedule:run >> /dev/null 2>&1
具体计划任务配置测试请移驾本站文章:Laravel 的任务调度计划任务的测试
四、运行Horizon
bash-4.3# php artisan horizon
Horizon started successfully.
[2017-11-07 10:09:39] Processing: AppJobsRenderVideo
[2017-11-07 10:09:40] Processed: AppJobsRenderVideo
[2017-11-07 10:09:40] Processing: AppJobsRenderVideo
[2017-11-07 10:09:40] Processed: AppJobsRenderVideo
......
主要代码截图:
队列:
控制器:
相关结果截图:dashboard:Monitoring:
Metrics:
Recent Jobs:那这里队列任务状态显示的橙色暂停符号⏸️。
那么这里就有问题,队列未执行,检查下horizon.php配置文件中队列名称是否已经配置。个人配置如下:'queue' => ['default', 'zztest_2', 'zztest_1'],绿色对勾正常了。
本文尚未对标签tags,通知notifications,supervisor的监控作解释。
可供参考资源:
Horizon官方文档: https://laravel.com/docs/master/horizon
Github :https://github.com/laravel/horizon
本文链接二维码可以保存在本地:保存
http://shixiangcun.cc/index.php?c=index&id=95&m=articleDetailInfo
分类 Laravel | 浏览 (6544) | 赞 (0) | 踩 (0) | | 2017-11-07 20:04:23 |
相关文章
- Mac安装Swoole扩展phpize 时 Cannot find autoconf 解决方法
- mac下安装swoole扩展报错PHP Startup Unable to load dynamic library
- Laravel 数据库事务
- PHP贷款等额本息、等额本金计算月供还款计划公式
- Laravel 关闭过滤排除部分路由VerifyCsrfToken 验证
- Laravel 的任务调度计划任务的测试