承接 charsen/moo-monitor-laravel 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

charsen/moo-monitor-laravel

Composer 安装命令:

composer require charsen/moo-monitor-laravel

包简介

Laravel runtime error & slow SQL monitoring SDK for moo-scaffold-cloud

README 文档

README

Laravel 后端监控采集 SDK,用来把项目里的 运行时异常慢 SQL 上报到 moo-scaffold-cloud 集中查看、告警和处理。

这个包是一个 headless 采集端:不提供本地页面、不注册业务路由,只负责采集数据、写入本地缓冲目录,再推送到云端。

适用场景

  • Laravel 项目需要统一收集后端异常。
  • 想知道哪些 SQL 超时、在哪个文件和行号触发。
  • 多个项目需要在同一个云端控制台查看问题、告警和处理状态。
  • moo-scaffold <= 3.8 升级后,需要继续沿用原来的监控数据。

业务功能

功能 说明
运行时异常监控 自动接入 Laravel 异常上报链路,记录异常类型、消息、文件行号、请求 URL、用户、调用栈和源码片段。
日志异常兜底 自动捕获 Log::error(..., ['exception' => $e]) 这类只写日志的异常,避免队列 failed / 业务 catch 漏进云端。
队列失败捕获 监听 Laravel JobFailed 事件,把 connection、queue、job name、attempts 等失败上下文带进 runtime。
慢 SQL 监控 监听 Laravel QueryExecuted 事件,超过阈值的 SQL 会被记录,包含执行耗时、SQL 内容、触发位置和请求信息。
相同问题聚合 相同异常或相同慢 SQL 会按 hash 聚合,累计出现次数,避免同一个问题刷屏。
敏感信息脱敏 对 password、token、secret、authorization 等常见敏感字段做脱敏处理。
本地缓冲 数据先写入 storage/moo-monitor/,云端或网络异常不会影响业务请求。
云端推送 通过 moo:cloud:push 增量推送到 moo-scaffold-cloud,云端负责查看、告警和处置。
AI / MCP 辅助处理 可通过 moo:cloud:mcp 让 Claude Code / Codex 等工具读取云端 runtime 错误和待办,并回写处理状态。
旧版迁移 支持从 moo-scaffold <= 3.8 的本地监控目录迁移到新目录。

环境要求

  • PHP 8.0+
  • Laravel 8.54 / 9 / 10 / 11 / 12
  • 依赖:laravel/frameworksymfony/yaml

维护侧会优先在当前 Laravel 12 测试套件上跑完整功能测试;跨版本兼容以安装解析 + 最小 Laravel 应用启动验证守护,确保服务提供者、命令注册和基础配置在 Laravel 8–12 都能正常加载。

安装

composer require charsen/moo-monitor-laravel

如果包还没有发布到 Packagist,需要先在宿主项目的 composer.json 增加仓库源:

{
  "repositories": [
    {
      "type": "vcs",
      "url": "git@gitee.com:charsen/moo-monitor-laravel.git"
    }
  ]
}

本地联调可以使用 path repository:

{
  "repositories": [
    {
      "type": "path",
      "url": "../moo-monitor-laravel"
    }
  ]
}

如果项目已经安装 moo-scaffold >= 3.9,通常不需要单独安装本包,scaffold 会自动依赖它。

快速接入

在宿主项目 .env 中配置云端推送:

MOO_MONITOR_CLOUD_ENABLED=true
MOO_MONITOR_CLOUD_TOKEN=moo_xxxxxxxx

# 私有部署时再配置,默认是 https://c.mooeen.com
# MOO_MONITOR_CLOUD_URL=https://c.mooeen.com

Token 在 moo-scaffold-cloud 的「接入 Token」页面生成,建议开启 runtimesslow_queries 能力。

运行时异常默认开启:

MOO_MONITOR_RUNTIME_ENABLED=true

慢 SQL 默认关闭,需要时开启:

MOO_MONITOR_SQL_SLOW_ENABLED=true
MOO_MONITOR_SQL_SLOW_THRESHOLD_MS=100

发布配置文件可查看更多选项:

php artisan vendor:publish --tag=moo-monitor-config

配置文件位置:

config/moo-monitor.php

验证是否接入成功

清理配置缓存:

php artisan config:clear

推荐:一键自检。 不用等真异常发生,直接推一条 runtime + 一条慢 SQL 到云端,逐步确认配置是否有效:

php artisan moo:cloud:test

输出会逐项反馈:配置检查 → 心跳(连通 + 鉴权 + SDK/宿主元信息)→ 推送自检 runtime → 推送自检慢 SQL。全绿即说明「采集 → 推送 → 云端」整条管道通畅。自检记录是可识别的(runtime 类名 SelfTestException、SQL 带 self-test 标记),默认保留为「未处理」,这样你能去云端 runtimes / slow_queries 列表亲眼确认数据已到达;确认后在 UI 解决即可,或加 --resolve 让命令推送后自动标记已解决。重复运行只 upsert 同一条,不会堆积。

也可以用既有方式手动验证 —— 查看本地是否有待推送数据:

php artisan moo:cloud:push --dry-run

真实推送一次:

php artisan moo:cloud:push

如果云端没有数据,按顺序检查:

  1. .envMOO_MONITOR_CLOUD_ENABLED 是否为 true
  2. MOO_MONITOR_CLOUD_TOKEN 是否正确,且 token 有对应能力。
  3. 项目是否真的触发过异常或慢 SQL。
  4. 慢 SQL 是否已开启,阈值是否过高。
  5. 服务器是否能访问 MOO_MONITOR_CLOUD_URL
  6. 内网自签证书导致 TLS 校验失败时,设 MOO_MONITOR_CLOUD_VERIFY=false

推送一直失败

为保证不丢数据,某一类(runtimes / slow_sql)只要有一批推送失败,游标就不前进、下次重试同一批,该类的本地缓冲也不会被回收。因此单条被云端持久拒收的记录会卡住整类推送并让本地缓冲持续增长

moo:cloud:push 失败时会打印卡住的记录 hash(自动调度的后台运行则写入日志),据此定位:

storage/moo-monitor/<runtimes|sql-slows>/<open|resolved>/<hash>.yaml

确认该记录无需保留后,可手动移走或删除对应 yaml,再重新推送。

自动推送

当以下配置同时满足时,包会自动注册每分钟推送任务:

MOO_MONITOR_CLOUD_ENABLED=true
MOO_MONITOR_CLOUD_SCHEDULE=true

宿主项目仍然需要正常运行 Laravel scheduler。服务器 crontab 示例:

* * * * * cd /path/to/project && php artisan schedule:run >> /dev/null 2>&1

没有接入 scheduler 时,也可以用自己的定时任务执行:

php artisan moo:cloud:push

常用命令

命令 说明
php artisan moo:cloud:test 自检:推一条 runtime + 一条慢 SQL 到云端,确认接入配置有效。
php artisan moo:cloud:push 推送 runtime 异常和慢 SQL 到云端。
php artisan moo:cloud:push --dry-run 只统计待推送数量,不发送请求。
php artisan moo:cloud:push --type=runtimes 只推送运行时异常。
php artisan moo:cloud:push --type=slow_sql 只推送慢 SQL。
php artisan moo:cloud:push --all 忽略游标,全量重推。云端按 hash 幂等处理。
php artisan moo:cloud:mcp 启动 MCP server,供 AI 工具读取云端错误和待办。
php artisan moo:monitor:migrate moo-scaffold <= 3.8 迁移旧监控数据。

常用配置

配置 默认值 说明
MOO_MONITOR_RUNTIME_ENABLED true 是否采集运行时异常。
MOO_MONITOR_EXCEPTION_LOG_CONTEXT_HOOK true 是否捕获错误日志 context 里的 exception 对象。
MOO_MONITOR_EXCEPTION_QUEUE_FAILED_HOOK true 是否捕获 Laravel 队列失败事件。
MOO_MONITOR_RUNTIME_MAX_OPEN 500 本地 open 异常最大数量。
MOO_MONITOR_RUNTIME_DAILY_CAP 10 同一异常每天最多写盘次数。
MOO_MONITOR_SQL_SLOW_ENABLED false 是否采集慢 SQL。
MOO_MONITOR_SQL_SLOW_THRESHOLD_MS 100 慢 SQL 阈值,单位毫秒。
MOO_MONITOR_SQL_SLOW_MAX_OPEN 500 本地 open 慢 SQL 最大数量。
MOO_MONITOR_CLOUD_ENABLED false 是否启用云端推送。
MOO_MONITOR_CLOUD_URL https://c.mooeen.com 云端地址。
MOO_MONITOR_CLOUD_TOKEN 项目接入 token。
MOO_MONITOR_CLOUD_TIMEOUT 5 推送 HTTP 超时(秒)。
MOO_MONITOR_CLOUD_VERIFY true TLS 证书校验,内网自签证书可设为 false
MOO_MONITOR_CLOUD_BATCH 100 每批推送数量。
MOO_MONITOR_CLOUD_SCHEDULE true ENABLED 同时为真时自动挂每分钟推送。
MOO_MONITOR_CLOUD_LOCAL_RETENTION_DAYS 7 推送成功后本地缓冲保留天数。

更多配置见 config/moo-monitor.php,每个字段都有注释。

本地数据目录

数据默认写在宿主项目的 storage/moo-monitor/

storage/moo-monitor/
├── runtimes/
│   ├── open/
│   ├── resolved/
│   └── deleted/
├── sql-slows/
│   ├── open/
│   ├── resolved/
│   └── deleted/
└── cloud-sync.json

该目录会自动写入 .gitignore,监控数据不会进入宿主项目 git。

MCP 接入

MCP 用于让 AI 工具直接读取云端 runtime 错误和待办,适合“拉问题 → 看上下文 → 修复 → 回写已解决”的流程。

示例:

claude mcp add moo-cloud -- php artisan moo:cloud:mcp

MCP 复用 .env 中的 MOO_MONITOR_CLOUD_URLMOO_MONITOR_CLOUD_TOKEN,不需要额外 token。

待办分两类:bug(Chrome 扩展采集的缺陷)和 task(云端管理界面手动新建的任务)。list_open_todos / get_todo 返回的「类型」字段会标明,便于 AI 区分「修缺陷」和「做任务」。

从 moo-scaffold <= 3.8 迁移

moo-scaffold <= 3.8 中的监控能力已经拆分到本包。升级时按下面步骤处理:

composer update charsen/moo-scaffold
php artisan moo:monitor:migrate
php artisan moo:cloud:push --dry-run

旧环境变量需要改名前缀:

旧变量 新变量
SCAFFOLD_RUNTIME_* MOO_MONITOR_RUNTIME_*
SCAFFOLD_SQL_SLOW_* MOO_MONITOR_SQL_SLOW_*
SCAFFOLD_CLOUD_* MOO_MONITOR_CLOUD_*

不要在 moo-scaffold <= 3.8 的项目上单独安装本包,否则旧采集器和新采集器可能重复记录。建议先升级到 moo-scaffold >= 3.9

开发

composer install
composer test
./vendor/bin/pint

License

MIT

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-07-05

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固