在 Ubuntu 上监控 Laravel 的实用方案
一 监控分层与工具选型
- 应用内与开发调试
- Laravel Log:日志位于 storage/logs/,可用命令实时查看:tail -f storage/logs/laravel.log。
- Laravel Telescope:开发环境用于查看请求、异常、查询、队列、邮件等,安装:composer require laravel/telescope && php artisan telescope:install。
- Laravel Horizon:队列监控与仪表盘,安装:composer require laravel/horizon && php artisan horizon:install。
- 进程与可用性
- Supervisor:守护队列进程,崩溃自动重启,支持多进程与日志集中。
- Systemd:系统级服务管理,适合将应用或队列作为系统服务托管。
- UptimeRobot:外部可用性监控,定时探测 HTTP 并记录 响应时间/停机 告警。
- 第三方 APM 与错误追踪
- New Relic / Datadog / Sentry:提供 性能指标、事务追踪、错误聚合与告警。
- 系统与基础设施
- top/htop/vmstat/iostat:CPU、内存、磁盘、IO 等基础资源监控。
二 快速落地步骤
- 应用内日志与实时查看
- 查看实时日志:tail -f storage/logs/laravel.log;按日轮转便于归档与检索。
- 队列进程守护与自动恢复
- 使用 Supervisor 管理队列(示例配置与命令):
- 安装:sudo apt-get install supervisor
- 配置:/etc/supervisor/conf.d/laravel-worker.conf
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/your-app/artisan queue:work --sleep=3 --tries=3 --queue=default
autostart=true
autorestart=true
user=www-data
numprocs=4
redirect_stderr=true
stdout_logfile=/var/log/supervisor/laravel-worker.log
stopwaitsecs=3600
- 生效与启动:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*
- 变更队列代码后需重启:sudo supervisorctl restart laravel-worker:*
- 使用 Systemd 托管队列(示例):
- 服务文件:/etc/systemd/system/laravel-worker.service
[Unit]
Description=Laravel Queue Worker
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/your-app
ExecStart=/usr/bin/php /var/www/your-app/artisan queue:work --sleep=3 --tries=3
Restart=always
[Install]
WantedBy=multi-user.target
- 生效与启动:
sudo systemctl daemon-reload
sudo systemctl enable --now laravel-worker
- 外部可用性与响应监控
- 配置 UptimeRobot 对 /health 或首页进行 HTTP(S) 探测,设置 5 分钟 间隔与告警联系人,观察 可用性百分比与响应时间。
三 生产级监控组合建议
- 组合 A(开源优先):Laravel Log + Horizon + Supervisor + Prometheus + Grafana + UptimeRobot
- 日志与队列由应用与 Supervisor 保障;Horizon 观测队列积压与速率;Prometheus 采集 PHP-FPM/NGINX/系统 指标,Grafana 做可视化与阈值告警;UptimeRobot 负责外网可达性。
- 组合 B(全托管 APM):Laravel Log + New Relic 或 Datadog 或 Sentry
- 在 Laravel 中安装对应 APM/错误追踪 的 PHP 扩展与配置,获得 事务追踪、慢查询、错误堆栈、部署标记 与 SLA 告警 的一体化能力。
四 告警与维护要点
- 队列与进程
- 关注 队列积压、失败重试、进程存活;代码变更后记得 重启队列进程(Supervisor 或 Systemd)。
- 日志与错误
- 对 laravel.log 设置 轮转与保留策略;将 严重异常 通过 Sentry/邮件 同步告警,避免只落盘不响应。
- 资源与性能
- 用 top/htop/vmstat/iostat 建立 CPU/内存/IO 基线;在 APM 中设置 P95/P99 响应时间、吞吐、错误率 阈值告警。
- 安全与合规
- Telescope/Horizon 仅在内网或受控环境启用;对外仅暴露必要的 状态与健康检查 端点。