Skip to content

Laravel Pulse

Laravel Pulse 是一个实时性能监控和调试工具,它提供了应用程序的实时性能指标,帮助你监控和优化应用程序的性能。

为什么选择 Pulse?

  • 📊 实时性能监控:直观展示应用性能指标,包括请求、队列和系统资源
  • 🔍 性能瓶颈检测:快速识别慢查询、慢任务和性能瓶颈
  • 📈 用户活跃度分析:实时追踪和分析用户行为数据
  • 🚦 异常追踪:自动捕获并分析应用异常
  • 🔄 队列监控:实时监控队列任务执行状态和性能
  • 📱 响应式界面:支持多设备访问,随时随地监控应用
  • 🛠 易于集成:无需复杂配置,开箱即用
  • 🔒 安全可控:灵活的访问权限控制

快速开始

Laravel Skeleton 已经内置了 Pulse,使用前请确认:

  1. 确保数据库配置正确

    • 数据库:MySQL、MariaDB 或 PostgreSQL
    • Redis(推荐用于数据摄取)
  2. 验证基础配置

    env
    PULSE_ENABLED=true
    PULSE_STORAGE_DRIVER=database
  3. 配置访问权限(见访问控制

  4. 访问仪表板

    • 访问 /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();

性能优化要点

  1. 使用专用数据库存储监控数据
  2. 配置 Redis 实现高效数据摄取
  3. 合理设置采样率(高流量建议 0.1-0.3)
  4. 定期清理历史数据(默认保留 60 分钟,可根据需要调整)

使用建议

监控策略

  • 识别关键指标:请求延迟、错误率、资源使用
  • 设置告警阈值:根据业务重要性分级
  • 定期检查和评估:及时发现潜在问题

最佳实践

  • 配置专用数据库,避免影响主业务
  • 高流量系统使用采样监控
  • 设置合理的数据保留期限
  • 建立异常处理和升级机制

常见问题

1. 访问权限问题

  • 问题描述:无法访问仪表板
  • 解决方案
    1. 检查用户邮箱是否在允许列表
    2. 确认 AppServiceProvider 中的权限配置
    3. 清除路由缓存:php artisan route:clear

2. 数据延迟问题

  • 问题描述:数据更新不及时
  • 解决方案
    1. 检查 Redis 连接状态
    2. 确认 PULSE_INGEST_DRIVER 设置
    3. 调整采样率降低负载

3. 性能问题

  • 问题描述:监控影响系统性能
  • 解决方案
    1. 使用专用数据库存储监控数据
    2. 适当增加采样率(0.1-0.3)
    3. 减少保留数据的时间
    4. 启用 Redis 数据摄取

更多资源