使用 Monit 监控 Laravel 队列工作线程

2024-02-26

我目前正在考虑从 Supervisor 迁移到 Monit,以监视 Laravel 队列工作人员。主要原因是能够监视 CPU、内存和设置电子邮件警报(据主管说,我必须安装另一个软件包),因为我希望尽快监视其他内容,例如 Redis,或许还有 Web 服务器的整体稳定性和性能。

据我对过程监控的有限了解,Monit 更强大并且更适合这项工作。

我能找到的有关 Laravel 和队列/作业监控的所有文档都涉及使用 Supervisor,并且当尝试手动设置它时,我陷入了为队列侦听器设置 pid 文件的困境(我不是系统管理员)。

Laravel 有理由只支持 Supervisor 而根本不提及 Monit 吗? (https://laravel.com/docs/5.3/queues#queue-workers-and-deployment https://laravel.com/docs/5.3/queues#queue-workers-and-deployment)

如果没有 - 有人可以帮助了解如何为每个 Laravel 队列工作程序设置 Monit 配置吗?

假设我有一个项目/var/www/html/laravel我希望监控的过程是/var/www/html/laravel/artisan queue:work --daemon

我尝试跟随这个问题 https://stackoverflow.com/questions/1226302/how-to-monitor-delayed-job-with-monit但没有取得多大成功。


如果您仍然需要答案:

当然可以设置 Monit 来控制您的队列,但需要注意一点(如他们的常见问题解答 https://mmonit.com/wiki/Monit/FAQ#pidfile);您需要将命令包装在 shell 脚本中。

在Monit配置文件中(在 Ubuntu 14.04 /etc/monit/monitrc 上)你可以添加:

    # beanstalk
    check process beanstalkd with pidfile /var/run/beanstalkd.pid
    start program = "/etc/init.d/beanstalkd start"
    stop program = "/etc/init.d/beanstalkd stop"
    if failed host 127.0.0.1 port 11300 then restart
    if 15 restarts within 15 cycles then timeout
    # beanstalk-queue
    check process beanstalk-queue with pidfile /var/run/beanstalk-queue.pid
    start = "YOUR_CHOSEN_PATH/beanstalk-queue.sh start"
    stop = "YOUR_CHOSEN_PATH/beanstalk-queue.sh stop"

然后在 YOUR_CHOSEN_PATH 中创建脚本 beanstalk-queue.sh:

    #!/bin/bash
    case $1 in
            start)
                    echo $$ > /var/run/beanstalk-queue.pid;
                    exec 2>&1 php /PATH_TO_YOUR_LARAVEL_INSTALLATION/artisan queue:work --daemon 1>/tmp/beanstalk-queue.out
                    ;;
            stop)  
                    kill `cat /var/run/beanstalk-queue.pid` ;;
            *)  
                    echo "usage: beanstalk-queue.sh {start|stop}" ;;
    esac
    exit 0

给它可执行权限就可以了!

聚苯乙烯 我使用的目录适用于 Ubuntu 14.04,请检查其他发行版。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Monit 监控 Laravel 队列工作线程 的相关文章

随机推荐

  • MySQL 配置的 JDBC url 使用 utf8 字符编码

    MySQL 5 6 配置 我已经配置了 etc mysql my cnf手动使用utf8 见下文 mysqld character set server utf8 character sets dir usr share mysql cha
  • 如何将命令行参数传递给 Gradle Kotlin DSL

    这是 Groovy 的一个示例 它准确地代表了我想要实现的目标 Command line gradlew jib PmyArg hello build gradle kts task myTask doFirst println myArg
  • RecyclerView 以编程方式单击

    我正在尝试以编程方式单击 recyclerView 的一项 我在用着 recyclerView findViewHolderForAdapterPosition index itemView performClick 当索引属于可见项时 这
  • 如何将 Google Analytics 与 next.js 应用程序一起使用?

    我将 styled components 与 next js 一起使用 因此我的样式需要在服务器端渲染 因此如何将 google 分析添加到我的网站 我检查了next js 谷歌分析示例 https github com zeit next
  • 使用 pandas 查找数据框列中的前 3 个

    我有一个时间序列数据集 如下所示 Date Newspaper City1 City2 Region1Total City3 City4 Region2Total 2017 12 01 NewsPaper1 231563 8696 2402
  • 矢量化照片:寻找合适的算法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用CSS动画移动文本?

    有什么想法为什么这个动画不起作用吗 div move from top to bottom div http jsfiddle net vdb3ofmL 1 http jsfiddle net vdb3ofmL 1 你应该position正
  • Rails:如何访问应用程序控制器中的方法?

    我想这是菜鸟范围问题 class ApplicationController lt ActionController Base protect from forgery locations get locations def get loc
  • 获取体式项目 ID

    我试图找出如何从主网络应用程序获取工作区和项目 ID 我似乎无法在任何地方找到它们 我正在尝试编写一个 VB Net 应用程序 并尝试从 API 中获取除 400 Bad request 之外的一些信息 如果我有这些 ID 我可能会走得更远
  • Sencha vs Ionic vs Jquery Mobile vs Appcelerator Titanium [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我在 HTML5 Javascript jQuery AngularJS 方面有很好的经验 我即将开发一个混合移动应用程序 我只是想知道其中哪一
  • FROM 子句中的 JPA 子查询可能吗?

    我在 JPA 方面遇到了一些问题 考虑这种情况 表 A id a 表B id b id a 我需要的是这样的查询 Select a c quantity from A as a Select Count as quantity from B
  • Symfony2 DoctrineFixturesBundle 命名空间错误

    我的灯具捆绑有一个大问题 我无法解决 我 按照预期的步骤进行操作 将行添加到 deps 文件 安装它们 在自动加载中注册它们并 应用程序内核 当我尝试只跑步时app console 它打破了 Fatal error Class Doctri
  • Soundcloud (Oauth2) API 获取访问令牌失败

    我正在尝试根据 Soundcloud 登录对我的网站上的用户进行授权 它使用 Oauth 身份验证 用户必须单击我网站上的按钮 然后重定向到 Soundcloud 网站并登录 之后 用户被重定向回我的网站 我必须在其中获取 accessTo
  • 在自定义转场转换期间,视图的导航栏项目错位

    我有一个自定义 Segue 它使用 UIViewAnimationOptionTransitionFlipFromLeft 在视图之间进行转换 当新视图出现在屏幕上时 由于导航栏元素从左对齐状态跳转到适当的位置 会出现短暂但明显的 闪烁 以
  • Windows Phone 7 WebBrowser 控件吞下操作事件?

    如果我将 WebBrowser 控件放置在任何页面上 该页面将不再响应 WebBrowser 下的操作事件 页面的其他区域工作正常 通过覆盖很容易确认OnManipulationCompleted在页面中 然后将 WebBrowser 控件
  • 用C#解析并执行JS

    我有一个简单的爬虫 可以爬行和搜索页面 但现在我遇到了如何执行和解析该页面的 js 链接的问题 有谁知道如何解析和执行js页面吗 example some url 很容易用 webhtmltoolktit 解析 JAVASCRIPT run
  • OCR 解决方案可以检测数字手写体吗?

    有没有一种解决方案可以很好地书写数字 1 10 我尝试了超正方体 但我只得到垃圾 理想情况下是 OSS 但商业也可以 OpenCV 现在附带手写数字识别 OCR 示例 你可以参考一下 http code opencv org project
  • iPhone核心数据“自动轻量级迁移”

    我正在尝试更新一个实现核心数据存储的应用程序 我正在向其中一个实体添加属性 我将以下代码添加到我的委托类中 NSPersistentStoreCoordinator persistentStoreCoordinator if persist
  • 不用Gforth 就可以编译Gforth 吗?

    当我尝试编译 Gforth 0 7 0 时 出现以下错误 configure make compiling Undefined symbols main referenced from start in crt1 10 6 o ld sym
  • 使用 Monit 监控 Laravel 队列工作线程

    我目前正在考虑从 Supervisor 迁移到 Monit 以监视 Laravel 队列工作人员 主要原因是能够监视 CPU 内存和设置电子邮件警报 据主管说 我必须安装另一个软件包 因为我希望尽快监视其他内容 例如 Redis 或许还有