温馨提示×

如何在Linux服务器上监控Laravel应用

小樊
44
2025-12-30 02:32:57
栏目: 云计算

Linux服务器监控Laravel应用的实用方案

一 监控分层与关键指标

  • 系统层:关注CPU、内存、负载、磁盘IO、网络;常用命令有top/htop、vmstat 1、iostat -x 1、free -h、df -h、du -sh。这些能快速定位是否为资源瓶颈引发的性能问题。
  • 服务层:确保**PHP-FPM、Nginx/Apache、数据库(如 MySQL)**运行正常,连接数、慢查询、缓存命中率等是关键。
  • 应用层:跟踪请求吞吐、响应时间、异常、慢查询、队列积压与失败等业务指标。
  • 日志与追踪:集中收集Laravel 日志(storage/logs/laravel.log),必要时引入APM做代码级追踪与错误分析。

二 快速上手的命令行与日志检查

  • 实时资源与IO:
    • 进程与负载:top/htop
    • 虚拟内存与CPU:vmstat 1
    • 磁盘IO:iostat -x 1
    • 内存与磁盘:free -h、df -h、du -sh /path/to/laravel
  • 服务状态:
    • Web/队列进程:systemctl status your-laravel-service
  • 日志观察:
    • 实时查看应用日志:tail -f storage/logs/laravel.log
      这些命令适合作为日常巡检与问题初筛的第一步。

三 Laravel框架内置与官方工具

  • Laravel Telescope:开发/轻量生产可用,覆盖请求、异常、日志、数据库查询、队列、邮件、通知、调度等;安装与启用:
    • 安装:composer require laravel/telescope
    • 发布与迁移:php artisan telescope:install、php artisan migrate
    • 生产注意:限制访问权限,避免泄露敏感数据。
  • Laravel Horizon:Redis 队列监控与调优,关注吞吐量、失败任务、运行时分布;配置示例:
    • 发布:php artisan horizon:install
    • 运行:php artisan horizon
    • 配置(config/horizon.php):可按环境设置多个supervisor,如 processes、queue、balance 等。
  • Laravel Pulse(官方新工具):轻量实时应用监控,适合用户活跃、慢请求与异常、队列吞吐等;要求Laravel 10.25+
    • 安装:composer require laravel/pulse、php artisan pulse:install
  • 进程守护:使用Supervisor确保队列与工作进程常驻:
    • 示例配置要点:command 指向php artisan queue:work 或自定义命令,开启autostart/autorestart,设置stdout_logfile,然后执行supervisorctl reread && supervisorctl update

四 开源与云端APM方案

  • Prometheus + Grafana:自托管时序监控与可视化,典型组件为node_exporter(主机)+ mysqld_exporter(数据库)+ Prometheus + Grafana;Laravel 侧可用promphp/prometheus_client_php暴露自定义指标(如 http_requests_total)。
  • NetData:开箱即用的实时仪表板,1秒级刷新,覆盖CPU/RAM/Disk IO/MySQL/PHP-FPM/TCP等,访问 http://your-server:19999
  • New Relic:全链路APM与错误分析,支持代码级事务追踪慢查询定位;PHP 端安装代理并在php.ini配置newrelic.appname、newrelic.license等。
  • Datadog:云原生APM/日志/基础设施一体化,支持服务拓扑、异常检测;Laravel 集成可用datadog/dd-trace,通过环境变量如DD_SERVICE、DD_ENV启用。

五 告警与落地实践

  • 健康检查与通知:使用Spatie Laravel Server Monitor磁盘空间、证书过期、服务存活等巡检,并通过Slack/邮件/Telegram告警。
  • 外部可用性监控:接入UptimeRobot对关键域名/接口做定时拨测,异常时即时通知。
  • 日志集中化:将Laravel 日志接入ELK(Elasticsearch/Logstash/Kibana)Graylog,便于检索、可视化与长期留存。
  • 告警阈值示例:
    • 磁盘使用率:警告 80% / 严重 90%
    • 队列积压:持续超过N个任务触发告警
    • 响应时间:P95 超过阈值(按业务设定)
  • 快速巡检清单:
    • 系统:top/htop、vmstat 1、iostat -x 1、free -h、df -h
    • 服务:systemctl status php-fpm、nginx/apache、supervisorctl status
    • 应用:tail -f storage/logs/laravel.log,必要时查看Telescope/Horizon面板
    • 队列:php artisan queue:work --tries=3 --timeout=60 观察重试与超时
    • 外部:curl -I https://your-domain 检查返回码与时延

0