Laravel Pulse 是一款全新的免费开源性能监控和洞察工具,适用于 Laravel 应用程序。它由 Laravel 核心团队的 Jess Archer 在 Laracon AU 2023 上宣布。
什么是 Laravel Pulse?
Laravel Pulse 为您的 Laravel 应用程序提供 **性能数据聚合视图**。它跟踪以下指标:
- 系统统计信息(CPU、内存、存储使用情况)
- 应用程序使用情况(请求、慢速路由、作业等)
- 队列吞吐量
- 慢速作业
- 慢速查询
- 异常
- 缓存命中率/未命中率
- 传出请求时间
Pulse 是专门为 Laravel 设计的,它了解所有核心组件,例如队列、事件、邮件、通知、缓存等等。
它收集显示有用见解所需的最少数据量。数据保存在本地,因此您可以完全控制。
Laravel Pulse 是 **自托管的**,并且可以在 Laravel 运行的任何地方使用 - VPS、Laravel Forge、Vapor 等等。它具有响应式 UI,并提供浅色和深色模式。
最棒的是,它是完全 **免费和开源的**!感谢 Taylor Otwell 使这一切成为可能。
Pulse 与 Telescope 的比较
有些人可能想知道 Pulse 与 Laravel Telescope(另一个 Laravel 调试工具)相比如何。
Telescope 非常适合 **本地开发**,因为它记录了大量请求数据,例如所有查询和事件。但这种高度的细节使其不太适合生产环境。
Laravel Pulse 提供 **高级聚合数据**,因此它轻巧且适合生产环境。它不会取代错误跟踪器,而是很好地补充了它们。
交互式现场演示
在 Laracon AU 上,Jess Archer 使用观众的手机对 Laravel Pulse 进行了交互式现场演示!
观众充当一家名为 Acme Airlines 的虚拟航空公司的航班管理员。他们可以执行以下操作:
- 销售机票
- 提高价格
- 延误航班
- 取消航班
同时,Jess 展示了 Laravel Pulse 如何在仪表盘上实时跟踪这些操作。
以下是部分亮点回顾
应用程序使用情况
**应用程序使用情况** 卡片显示
- 按请求数排名的热门用户
- 按慢速端点排名的热门用户
- 按排队作业排名的热门用户
这可以深入了解谁在使用您的应用程序以及他们遇到的任何性能问题。
慢速路由
**慢速路由** 卡片显示超过配置阈值(默认值为 1 秒)的任何应用程序路由。
它显示路由名称和操作方法,以便您可以准确找出慢速代码。
慢速作业
**慢速作业** 卡片类似,显示超过阈值的排队作业。它显示作业类名称和位置。
重试的失败作业会每次递增计数,因此您可以发现有问题的作业。
慢速查询
**慢速查询** 卡片显示超过阈值的查询。它仅显示没有绑定项的 SQL,因此它
- 混淆 PII
- 将相同的查询聚合到一个结果中
- 显示查询发生的代码文件位置
您可以选择禁用位置以进一步聚合结果。
异常
**异常** 卡片跟踪抛出的异常,包括位置、计数和最后一次出现。
您还可以按最近的异常排序。
缓存
**缓存** 卡片跟踪缓存密钥的使用情况,以及缓存的命中率和未命中率。
它不会对您的密钥进行任何假设,但允许您重新组合和汇总收集的数据,如果您需要更通用的数据视图。
传出请求
Laravel 的 HTTP 客户端使用情况在 **传出请求** 中跟踪。您可以看到您的应用程序进行的慢速外部请求。
演示使用配置文件中的正则表达式将唯一的 URL 压缩成一个通用的域名,类似于缓存数据。
自定义您的仪表盘
Pulse blade 文件可以发布和自定义。例如,您可以
- 切换全宽模式
- 调整列数
- 设置卡片跨度和位置
- 将卡片拆分成单独的部分
您还可以创建自己的自定义卡片来显示特定于业务的指标。演示包含一个“航班”卡片,显示售出的机票、收入、延误和最热门的销售人员。
性能注意事项
Pulse 收集最少的数据,并且可以处理繁重的生产工作负载。Larave Forge 为 **每天 200 万个请求** 运行它,无需任何采样。
默认情况下,Pulse 在发送响应后将请求数据保存到您的数据库。一些扩展选项
- 使用专用 Pulse 数据库
- 使用 Redis 摄取进行排队,并在请求循环之外保存
- 在单独的服务器上运行 Pulse
- 为高流量启用采样
- 创建自定义数据驱动程序
何时可以使用 Pulse?
Laravel Pulse 预计将在下周左右发布。它将通过 `composer require` 提供。请关注官方发布!
结论
Laravel Pulse 为您提供 Laravel 应用程序的性能和使用情况的简单见解。它的可定制性和最小的开销使其成为任何 Laravel 项目的出色开源补充。
感谢整个 Laravel 团队为社区提供了另一个出色的免费工具!