Laravel项目Linux上如何监控
小樊
43
2025-11-16 17:54:14
Linux上监控Laravel项目的实用方案
一 监控分层与总体思路
- 建议按四层构建监控体系:
- 应用层:Laravel 日志、异常与性能洞察(如 Telescope、Horizon、Sentry/New Relic/Datadog APM)。
- 队列层:队列长度、处理速率、失败重试、工作进程存活(Horizon、Supervisor)。
- 服务层:Nginx、PHP-FPM 运行状态与吞吐(状态页、慢请求日志)。
- 系统层:CPU、内存、磁盘 I/O、网络 与连接数(top/htop/vmstat/iostat/netstat)。
- 可用性层:外部HTTP 拨测与证书过期监控(UptimeRobot、自建拨测)。
- 可视化告警层:自建或托管的可视化与告警(Prometheus + Grafana、商业 APM)。
以上组合能在开发、预发、生产形成闭环,既覆盖错误与性能,也覆盖可用性与容量。
二 快速上手命令与配置
- 应用日志实时查看
- 实时跟踪 Laravel 日志:tail -f /storage/logs/laravel.log
- 结合 grep 过滤错误:tail -f /storage/logs/laravel.log | grep -i “error|exception”
- 进程守护与自启
- Supervisor 管理队列/自定义命令(建议仅用于队列等非 Web 进程):
- 安装:sudo yum install -y epel-release && sudo yum install -y supervisor
- 配置示例:/etc/supervisor/conf.d/laravel-worker.conf
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=/usr/bin/php /path/to/artisan queue:work --queue=default --tries=3 --sleep=3
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/log/laravel-worker.log
- 生效与启动:sudo supervisorctl reread && sudo supervisorctl update && sudo supervisorctl start laravel-worker:*
- Systemd 管理 Artisan serve(仅用于临时/内网调试,生产建议使用 Nginx+PHP-FPM):
- /etc/systemd/system/laravel.service
[Unit]
Description=Laravel App
After=network.target
[Service]
User=www-data
WorkingDirectory=/path/to/your/laravel/project
ExecStart=/usr/bin/php /path/to/artisan serve --host=0.0.0.0 --port=80
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
- 生效与启动:sudo systemctl daemon-reload && sudo systemctl enable --now laravel
- Web 与 PHP-FPM 健康
- 配置 PHP-FPM 状态页 与 Nginx 状态页,在 Grafana/Prometheus 或 Zabbix 中采集;Nginx 默认根目录建议指向 /public,并正确代理 .php 到 PHP-FPM。
三 关键 Laravel 组件与第三方工具
- Laravel Telescope:开发/预发环境的请求、异常、查询、邮件、通知等洞察;生产建议限制访问与采样。
- Laravel Horizon:队列仪表盘与配置中心,监控作业吞吐、失败重试、工作进程负载;与 Supervisor 配合保证进程存活。
- 错误与性能 APM:
- Sentry(错误跟踪与告警)、New Relic(事务追踪、慢 SQL、外部调用)、Datadog(APM + 日志 + 基础设施)。
- 日志与可视化:
- Laravel 使用 Monolog,可输出到文件、邮件或第三方(如 Papertrail/Loggly);
- Prometheus + Grafana 采集系统与应用指标并做可视化与阈值告警。
四 告警与可视化落地
- 告警规则建议
- 系统:CPU 持续 > 80%、可用内存 < 10%、磁盘使用 > 80%、I/O 长时间高占用、TCP 连接数异常激增。
- PHP-FPM:进程池满、慢请求 持续出现。
- Laravel:日志中出现未捕获异常、队列失败持续增长、Horizon 工作进程 down。
- 可用性:HTTP 5xx 比例升高、响应时延超过阈值、SSL 证书 30 天内 将过期。
- 可视化与拨测
- Grafana 看板:系统资源、Nginx/PHP-FPM、Laravel(请求时延、异常、Top SQL)、队列(待处理/处理速率/失败)。
- 外部拨测:UptimeRobot 或自建脚本对关键接口做 1–5 分钟 间隔拨测,结合 Webhook 推送告警。
五 生产环境注意事项
- 关闭调试:生产环境将 APP_DEBUG=false,避免泄露敏感信息与性能损耗。
- 运行方式:优先使用 Nginx + PHP-FPM;Artisan serve 仅用于开发/调试。
- 队列与进程:使用 Horizon 管理队列,配合 Supervisor/systemd 保证工作进程高可用与自动拉起。
- 安全:对 Telescope 等调试组件加访问控制与采样;限制状态页暴露面;密钥与敏感配置纳入 Secrets 管理。
- 容量与优化:开启 路由/配置/视图缓存,优化 N+1 查询与索引,耗时任务入队,静态资源走 CDN。