温馨提示×

Laravel项目Linux上如何监控

小樊
43
2025-11-16 17:54:14
栏目: 智能运维

Linux上监控Laravel项目的实用方案

一 监控分层与总体思路

  • 建议按四层构建监控体系:
    1. 应用层:Laravel 日志、异常与性能洞察(如 Telescope、Horizon、Sentry/New Relic/Datadog APM)。
    2. 队列层:队列长度、处理速率、失败重试、工作进程存活(Horizon、Supervisor)。
    3. 服务层NginxPHP-FPM 运行状态与吞吐(状态页、慢请求日志)。
    4. 系统层CPU内存磁盘 I/O网络 与连接数(top/htop/vmstat/iostat/netstat)。
    5. 可用性层:外部HTTP 拨测与证书过期监控(UptimeRobot、自建拨测)。
    6. 可视化告警层:自建或托管的可视化与告警(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

0