温馨提示×

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:9000unix 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 logPercona 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 statusPHP-FPM status,用 curl 本地验证可访问性。
  • 部署守护与日志:用 Supervisorsystemd 托管队列/常驻进程;配置 logrotate 轮转 Laravel 日志。
  • 接入 APM/错误追踪:安装 SentryNew Relic 并配置 DSN/应用名,确认生产环境 APP_DEBUG=false
  • 配置告警与看板:在 ZabbixPrometheus+Grafana 中建立主机、采集项、触发器与看板,先覆盖 CPU、内存、磁盘、连接数、5xx、慢查询 等关键指标。

0