laravel项目在centos如何监控性能
小樊
31
2025-12-11 12:36:24
监控思路与分层
- 建议按四层搭建:系统层(CPU、内存、磁盘、网络)、服务层(Nginx、PHP-FPM)、应用层(Laravel 日志、异常、慢查询)、告警层(阈值与可视化)。
- 生产环境优先使用“系统监控 + APM/错误追踪 + 日志聚合 + 可视化告警”的组合,开发/预发可叠加调试组件辅助定位。
系统层监控
- 实时与交互
- 使用 top/htop 观察进程与资源占用;glances 一站式查看 CPU、内存、磁盘、网络与进程;nmon 获取 CPU、内存、磁盘、网络等综合指标。
- 资源与 I/O
- free 查看内存与 Swap;df 检查磁盘空间;vmstat 报告虚拟内存、进程与 CPU 活动;iostat 监控磁盘读写与 CPU 利用率;dstat 综合展示 CPU、内存、磁盘、网络等。
- 网络
- iftop 实时流量监控;nethogs 按进程统计带宽;ss/netstat 查看连接与端口;tcpdump 抓包分析;ntopng 提供 Web 化流量分析。
- 历史与可视化
- sar(来自 sysstat)收集并回放历史性能数据;Cockpit 提供基于 Web 的服务器资源监控;Zabbix/Prometheus 负责指标采集、存储与告警;Netdata 提供轻量级实时可视化。
服务层监控 Nginx 与 PHP-FPM
- 启用状态页
- Nginx:在 server 配置中添加 location /nginx_status 并限制内网访问,重启后在 http://your-domain/nginx_status 查看 Active connections、Reading/Writing/Waiting 等。
- PHP-FPM:在 /etc/php-fpm.d/www.conf 中开启 pm.status_path = /fpm-status,用 listen = 127.0.0.1:9000 或 unix socket 暴露,配合 Nginx 反代访问 /fpm-status 查看 pool、processes、slow requests 等。
- 采集与告警
- 使用 Zabbix/Prometheus 的 Nginx 与 PHP-FPM 状态模块采集指标,设置阈值告警(如 Active connections 持续过高、slow requests 增长、FPM 进程异常退出)。
- 进程守护
- 使用 Supervisor 管理队列与工作进程,确保异常退出自动拉起;或用 systemd 托管服务并设置 Restart=always,保障稳定性。
应用层监控 Laravel
- 开发/预发
- Laravel Debugbar:开发环境分析 SQL、时间线、内存 等;Laravel Telescope:监控 请求、异常、日志、数据库查询、队列任务,便于定位问题。
- 生产环境
- Sentry:错误跟踪与聚合,捕获异常堆栈与上下文;New Relic APM:追踪 事务、慢事务、外部调用、数据库 等,提供 吞吐量、错误率、响应时间 面板与告警。
- 日志与慢查询
- 实时查看 Laravel 日志:tail -f storage/logs/laravel.log;结合 MySQL slow query log 或 Percona Toolkit 定位慢 SQL。
告警与可视化落地
- 快速方案
- Zabbix 采集系统与服务指标,配置触发器(如 CPU > 80% 持续 5 分钟、磁盘使用率 > 85%、Nginx 5xx 增多、FPM slow requests > 0),通过邮件/企业微信/钉钉告警;Grafana 对接 Zabbix/Prometheus 做统一可视化。
- 自建时序与可视化
- Prometheus 抓取 Nginx/PHP-FPM/应用指标,Grafana 建立 CPU、内存、磁盘 I/O、网络、请求时延、错误率 等看板,设置 Alertmanager 阈值告警。
- 轻量可视化
- Netdata 一键部署,提供 实时 指标与健康告警,适合快速上线与临时排查。
5 分钟快速上手清单
- 安装基础观测:执行 yum install -y epel-release htop iotop iftop nmon sysstat;启动 systemctl start sysstat && systemctl enable sysstat 以启用 sar 历史采集。
- 暴露服务状态:开启 Nginx status 与 PHP-FPM status,用 curl 本地验证可访问性。
- 部署守护与日志:用 Supervisor 或 systemd 托管队列/常驻进程;配置 logrotate 轮转 Laravel 日志。
- 接入 APM/错误追踪:安装 Sentry 或 New Relic 并配置 DSN/应用名,确认生产环境 APP_DEBUG=false。
- 配置告警与看板:在 Zabbix 或 Prometheus+Grafana 中建立主机、采集项、触发器与看板,先覆盖 CPU、内存、磁盘、连接数、5xx、慢查询 等关键指标。