前几日开始断断续续在看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 有三种负载均衡策略:simpleauto、 和 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



本文链接二维码可以保存在本地:保存

| 浏览 (5968) | (0) | (0) | | 2017-11-07 20:04:23 |


相关文章

  1. Mac安装Swoole扩展phpize 时 Cannot find autoconf 解决方法
  2. mac下安装swoole扩展报错PHP Startup Unable to load dynamic library
  3. Laravel 数据库事务
  4. PHP贷款等额本息、等额本金计算月供还款计划公式
  5. Laravel 关闭过滤排除部分路由VerifyCsrfToken 验证
  6. Laravel 的任务调度计划任务的测试