actinity/laravel-queue-status

此包的最新版本(3.2)没有提供许可证信息。

队列状态监控器

3.2 2023-06-27 11:55 UTC

This package is auto-updated.

Last update: 2024-08-27 14:34:59 UTC


README

安装后,该工具将自动加入任务计划,并在默认队列上每分钟调度一次任务以更新缓存值。

/queue-status-monitor 端点显示监控器的状态,并将返回 200 OK 或 400(如果队列未在预期的阈值内运行,默认为 5 分钟。此端点可以被 Pingdom 或类似工具监控)。

如果您使用多个队列,或希望自定义阈值,您可以在 config/queue.php 中添加一个 monitor 数组。例如:

监控单个队列

    "monitor" => "myqueue"

监控多个队列

    "monitor" => [
        "myqueue",
        "myotherqueue"
    ]

监控具有自定义阈值的队列

    "monitor" => [
        ["name" => myqueue","threshold" => 600],
    ]

阈值值以秒为单位指定,表示监控器报告队列失败的时间点,如果作业在此期间未运行。

延迟

除了报告最后运行时间外,/queue-status-monitor 端点还报告 延迟。这是作业被调度和处理之间的时间。这不会影响整体状态,也不会触发失败。它仅用于参考。

失败的任务

默认情况下,如果您有失败的任务表,那么任何失败都将被视为错误并生成 400 状态码。您可以通过在 config/queue.php 中添加以下内容来禁用此功能。

"do_not_monitor_failed_jobs" => true

或者,如果您准备容忍失败的任务,但不想停止您知道是否存在其他问题;您可以通过监控独立端点而不是默认端点。

queue-status-monitor/without-failed 将忽略失败的任务,并仅报告阈值和配置错误。

queue-status-monitor/only-failed 将仅检查失败的任务。

超时与retry_after配置检查

队列工作进程通常通过 Supervisor 或类似工具配置,并且 queue:work 命令包含一个 --timeout 属性。如果此值高于相应的 retry_after 属性(在 config.queue 中),则可能导致作业重复。监控器会检查这一点,并在端点中发出警报(并抛出 400 响应)。

最后调度

队列监控器顶部的 最后调度 值表示调度器调度 queue-status:ping 命令的最后时间(通常在您使用标准的 Laravel crontab 配置时每分钟一次)。这本身不会触发任何错误,但显示为参考,以帮助调试如果问题是您的 crontab。

认证

如果您想保护您的监控端点,请将以下内容添加到队列配置中:

"status_password" => "YOURPASSWORD"

到队列配置。默认用户名为 'queues',但您也可以通过设置以下内容来自定义此名称:

"status_user" => "USERNAME"

在特定环境中禁用

您可以通过添加以下内容到队列配置中禁用队列监控器:

"status_monitor_disabled" => env("QUEUE_MONITOR_DISABLED",false)

然后,在您的 .env 文件中将该值设置为 true。