Laravel Pulse
Laravel Pulse 是一个实时性能监控和调试工具,它提供了应用程序的实时性能指标,帮助你监控和优化应用程序的性能。
为什么选择 Pulse?
- 📊 实时性能监控:直观展示应用性能指标,包括请求、队列和系统资源
- 🔍 性能瓶颈检测:快速识别慢查询、慢任务和性能瓶颈
- 📈 用户活跃度分析:实时追踪和分析用户行为数据
- 🚦 异常追踪:自动捕获并分析应用异常
- 🔄 队列监控:实时监控队列任务执行状态和性能
- 📱 响应式界面:支持多设备访问,随时随地监控应用
- 🛠 易于集成:无需复杂配置,开箱即用
- 🔒 安全可控:灵活的访问权限控制
快速开始
Laravel Skeleton 已经内置了 Pulse,使用前请确认:
确保数据库配置正确
- 数据库:MySQL、MariaDB 或 PostgreSQL
- Redis(推荐用于数据摄取)
验证基础配置
envPULSE_ENABLED=true PULSE_STORAGE_DRIVER=database
配置访问权限(见访问控制)
访问仪表板
- 访问
/pulse
查看监控面板 - 确认数据是否正常采集
- 检查各项指标是否显示
- 访问
注意
必须正确配置访问权限,否则将无法访问 Pulse 仪表板。
访问控制
Pulse 仪表板的访问权限需要在 App\Providers\AppServiceProvider
中的 boot
方法中定义:
php
use Illuminate\Support\Facades\Gate;
public function boot(): void
{
Gate::define('viewPulse', function ($user) {
return in_array($user->email, [
'zhaiyuxin103@hotmail.com',
]);
});
}
提示
只有邮箱在允许列表中的用户才能访问 Pulse 仪表板,请确保将需要访问的用户邮箱添加到列表中。
功能与配置
监控功能
- 📊 系统监控:CPU、内存、磁盘 I/O、网络流量
- ⚡ 性能分析:请求响应时间、慢查询检测(>100ms)
- 📥 队列监控:任务状态、处理时间、失败追踪
- ⚠️ 异常追踪:实时捕获、趋势分析、自动报警
- 👥 用户分析:在线统计、行为追踪、访问来源
基础配置
env
# 是否启用 Pulse
PULSE_ENABLED=true
# 访问路径,默认为 pulse
PULSE_PATH=pulse
# 存储驱动:database 或 redis
PULSE_STORAGE_DRIVER=database
# 数据摄取驱动,推荐使用 redis
PULSE_INGEST_DRIVER=redis
# 数据清理概率(1/100),建议保持默认
PULSE_TRIM_LOTTERY=1
# 数据保留时间(分钟)
PULSE_TRIM_GRACE_PERIOD=60
提示
完整的配置选项请参考 Laravel Skeleton Pulse 配置。
数据管理
数据采集
php
use Laravel\Pulse\Facades\Pulse;
// 记录请求处理时间
Pulse::record(
name: 'request-time',
value: $time,
type: 'timing'
)->avg();
// 记录用户行为
Pulse::record(
name: 'user-action',
key: $user->id,
value: 1
)->count();
// 高流量场景(仅记录 10% 的数据)
Pulse::record(
name: 'api-requests',
value: $response->status()
)->sample(0.1)->count();
性能优化要点
- 使用专用数据库存储监控数据
- 配置 Redis 实现高效数据摄取
- 合理设置采样率(高流量建议 0.1-0.3)
- 定期清理历史数据(默认保留 60 分钟,可根据需要调整)
使用建议
监控策略
- 识别关键指标:请求延迟、错误率、资源使用
- 设置告警阈值:根据业务重要性分级
- 定期检查和评估:及时发现潜在问题
最佳实践
- 配置专用数据库,避免影响主业务
- 高流量系统使用采样监控
- 设置合理的数据保留期限
- 建立异常处理和升级机制
常见问题
1. 访问权限问题
- 问题描述:无法访问仪表板
- 解决方案:
- 检查用户邮箱是否在允许列表
- 确认
AppServiceProvider
中的权限配置 - 清除路由缓存:
php artisan route:clear
2. 数据延迟问题
- 问题描述:数据更新不及时
- 解决方案:
- 检查 Redis 连接状态
- 确认
PULSE_INGEST_DRIVER
设置 - 调整采样率降低负载
3. 性能问题
- 问题描述:监控影响系统性能
- 解决方案:
- 使用专用数据库存储监控数据
- 适当增加采样率(0.1-0.3)
- 减少保留数据的时间
- 启用 Redis 数据摄取