Laravel项目在Linux上的性能监控方法
小樊
38
2025-11-14 18:34:07
监控分层与总体思路
- 建议将监控划分为四层:系统层、应用层、队列层、可用性层,形成从底层资源到业务可观测性的闭环。
- 系统层关注CPU、内存、磁盘IO、网络;应用层关注请求耗时、异常、慢查询、外部依赖;队列层关注吞吐量、失败重试、处理时长;可用性层关注端口存活、证书过期、磁盘空间与HTTP可达性。
系统层监控
- 实时资源观测:使用top/htop查看进程与负载,vmstat观察进程/内存/IO,iostat聚焦磁盘IO,glances获取跨平台总览,dstat做多维度资源对比。
- 可视化与告警:自建可用Prometheus + Grafana,配合node_exporter采集主机指标;开箱即用可选NetData,提供1秒级刷新与MySQL/PHP-FPM等应用指标面板,默认访问 http://your-server:19999。
Laravel应用层监控
- 日志与异常:Laravel 日志位于**/storage/logs/laravel.log**,可用tail -f实时查看;结合Monolog将日志发送到Papertrail/Loggly等集中平台,便于检索与告警。
- 开发/轻量生产观测:使用Laravel Telescope查看请求、异常、数据库查询、队列与邮件等;生产需限制访问权限并谨慎记录敏感数据。
- 官方实时观测:使用Laravel Pulse(要求Laravel 10.25+)获取慢请求、异常统计、队列吞吐、用户活跃等实时指标,低开销、易接入。
- 第三方 APM:接入New Relic / Datadog获取代码级事务追踪、错误分析、拓扑与告警;示例环境变量:设置NEW_RELIC_LICENSE_KEY与NEW_RELIC_APP_NAME,或在 Datadog 使用dd-trace进行埋点与追踪。
队列与异步任务监控
- 队列仪表盘:使用Laravel Horizon监控Redis 队列的任务吞吐量、失败任务、运行时分布与进程平衡;配置示例可设置生产环境的processes与balance=auto。
- 进程守护:用Supervisor管理队列/自定义进程,异常自动重启并上报状态,保障队列长期稳定。
可用性与基础设施监控
- 外部可用性:用UptimeRobot对HTTP/HTTPS做定时探测,宕机即时通知,弥补内部监控盲点。
- 服务器健康检查:用Spatie Laravel Server Monitor定期巡检磁盘空间、证书过期、服务存活等,并通过Slack/邮件/Telegram告警,适合与 APM/日志联动形成闭环。