温馨提示×

Laravel项目在Ubuntu上如何监控

小樊
43
2025-12-06 17:30:50
栏目: 智能运维

在 Ubuntu 上监控 Laravel 的实用方案

一 监控分层与工具选型

  • 应用内与开发调试
    • Laravel Log:日志位于 storage/logs/,可用命令实时查看:tail -f storage/logs/laravel.log
    • Laravel Telescope:开发环境用于查看请求、异常、查询、队列、邮件等,安装:composer require laravel/telescope && php artisan telescope:install
    • Laravel Horizon:队列监控与仪表盘,安装:composer require laravel/horizon && php artisan horizon:install
  • 进程与可用性
    • Supervisor:守护队列进程,崩溃自动重启,支持多进程与日志集中。
    • Systemd:系统级服务管理,适合将应用或队列作为系统服务托管。
    • UptimeRobot:外部可用性监控,定时探测 HTTP 并记录 响应时间/停机 告警。
  • 第三方 APM 与错误追踪
    • New Relic / Datadog / Sentry:提供 性能指标、事务追踪、错误聚合与告警
  • 系统与基础设施
    • top/htop/vmstat/iostat:CPU、内存、磁盘、IO 等基础资源监控。

二 快速落地步骤

  • 应用内日志与实时查看
    • 查看实时日志:tail -f storage/logs/laravel.log;按日轮转便于归档与检索。
  • 队列进程守护与自动恢复
    • 使用 Supervisor 管理队列(示例配置与命令):
      • 安装:sudo apt-get install supervisor
      • 配置:/etc/supervisor/conf.d/laravel-worker.conf
        [program:laravel-worker]
        process_name=%(program_name)s_%(process_num)02d
        command=php /var/www/your-app/artisan queue:work --sleep=3 --tries=3 --queue=default
        autostart=true
        autorestart=true
        user=www-data
        numprocs=4
        redirect_stderr=true
        stdout_logfile=/var/log/supervisor/laravel-worker.log
        stopwaitsecs=3600
        
      • 生效与启动:
        sudo supervisorctl reread
        sudo supervisorctl update
        sudo supervisorctl start laravel-worker:*
        
      • 变更队列代码后需重启:sudo supervisorctl restart laravel-worker:*
    • 使用 Systemd 托管队列(示例):
      • 服务文件:/etc/systemd/system/laravel-worker.service
        [Unit]
        Description=Laravel Queue Worker
        After=network.target
        
        [Service]
        Type=simple
        User=www-data
        WorkingDirectory=/var/www/your-app
        ExecStart=/usr/bin/php /var/www/your-app/artisan queue:work --sleep=3 --tries=3
        Restart=always
        
        [Install]
        WantedBy=multi-user.target
        
      • 生效与启动:
        sudo systemctl daemon-reload
        sudo systemctl enable --now laravel-worker
        
  • 外部可用性与响应监控
    • 配置 UptimeRobot/health 或首页进行 HTTP(S) 探测,设置 5 分钟 间隔与告警联系人,观察 可用性百分比与响应时间

三 生产级监控组合建议

  • 组合 A(开源优先):Laravel Log + Horizon + Supervisor + Prometheus + Grafana + UptimeRobot
    • 日志与队列由应用与 Supervisor 保障;Horizon 观测队列积压与速率;Prometheus 采集 PHP-FPM/NGINX/系统 指标,Grafana 做可视化与阈值告警;UptimeRobot 负责外网可达性。
  • 组合 B(全托管 APM):Laravel Log + New Relic 或 Datadog 或 Sentry
    • Laravel 中安装对应 APM/错误追踪 的 PHP 扩展与配置,获得 事务追踪、慢查询、错误堆栈、部署标记SLA 告警 的一体化能力。

四 告警与维护要点

  • 队列与进程
    • 关注 队列积压、失败重试、进程存活;代码变更后记得 重启队列进程(Supervisor 或 Systemd)。
  • 日志与错误
    • laravel.log 设置 轮转与保留策略;将 严重异常 通过 Sentry/邮件 同步告警,避免只落盘不响应。
  • 资源与性能
    • top/htop/vmstat/iostat 建立 CPU/内存/IO 基线;在 APM 中设置 P95/P99 响应时间、吞吐、错误率 阈值告警。
  • 安全与合规
    • Telescope/Horizon 仅在内网或受控环境启用;对外仅暴露必要的 状态与健康检查 端点。

0