温馨提示×

如何使用Ubuntu PHP日志监控

小樊
34
2025-12-23 18:33:34
栏目: 编程语言

Ubuntu PHP日志监控实操指南

一 快速定位日志路径

  • 常见日志位置与用途如下(按你的PHP 版本Web 服务器选择):
    • PHP-FPM:/var/log/php-fpm.log 或 /var/log/php7.x-fpm.log(x 为版本号)
    • Apache:/var/log/apache2/error.log(PHP 错误通常写入此文件)
    • Nginx:/var/log/nginx/error.log(PHP-FPM 错误常与此配合查看)
  • 不确定位置时,优先检查对应服务的配置文件(如 php.iniwww.conf、Nginx/Apache 虚拟主机配置)中的 error_log 指令。以上路径在不同系统与配置下可能略有差异,请以实际环境为准。

二 命令行实时监控

  • 使用 tail -f 跟踪文件尾部新增内容(最常用、最轻量):
    • 示例:sudo tail -f /var/log/php7.4-fpm.log
  • 同时跟踪多个日志(需安装 multitail):
    • 安装:sudo apt install multitail
    • 示例:multitail /var/log/php7.4-fpm.log /var/log/nginx/error.log
  • 使用 less + F 进入“跟随模式”,按 Ctrl+C 退出跟随:
    • 示例:sudo less +F /var/log/apache2/error.log
  • 以上命令适合临时排查与值守观察,配合 grep 可做关键字过滤(如:tail -f … | grep -i “error”)。

三 进阶集中化监控 ELK

  • 架构建议:PHP 应用 → Filebeat → Logstash → Elasticsearch → Kibana(集中存储、检索、可视化与告警)。
  • 关键配置要点(示例为 8.x 版本):
    • Filebeat(PHP 服务器):收集应用与 FPM 日志
      • filebeat.inputs:
        • type: log enabled: true paths:
          • /var/www/html/storage/logs/*.log
          • /var/log/php.log*
      • output.logstash: hosts: [“logstash-server:5044”]
    • Logstash:解析与丰富日志
      • input { beats { port => 5044 } }
      • filter { grok { match => { “message” => “%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{GREEDYDATA:message}” } } date { match => [“timestamp”,“ISO8601”] target => “@timestamp” } mutate { remove_field => [“timestamp”] } }
      • output { elasticsearch { hosts => [“http://localhost:9200”] index => “php-logs-%{+YYYY.MM.dd}” user => “elastic” password => “your_password” } }
    • Elasticsearch:存储与检索(单节点示例)
      • 配置:network.host: 0.0.0.0;discovery.type: single-node
    • Kibana:可视化与仪表板(默认端口 5601
  • 应用侧建议用 Monolog 输出结构化(JSON)日志,便于 grok 解析与检索。

四 日志轮转与保留策略

  • 使用 logrotate 管理日志轮转、压缩与清理,避免磁盘被占满:
    • 手动触发一次轮转:sudo logrotate -f /etc/logrotate.conf
    • 建议为 PHP-FPM 与业务日志单独配置轮转周期、保留份数与压缩,确保长期可观测与合规留存。

五 实用排查与配置要点

  • 确保 PHP 错误日志已开启并指向可写路径(编辑 php.ini):
    • error_reporting = E_ALL
    • log_errors = On
    • error_log = /var/log/php_errors.log
    • 修改后重启服务:sudo systemctl restart apache2 或 sudo systemctl restart nginx(若使用 PHP-FPM,还需重启 php-fpm
  • 快速排查顺序建议:
    • 先看 PHP-FPM 日志(如:/var/log/php7.x-fpm.log)是否有进程异常、慢请求
    • 再看 Web 服务器错误日志(如:/var/log/nginx/error.log 或 /var/log/apache2/error.log)定位请求处理阶段的错误
    • 如启用 Filebeat,确认采集路径、权限与 Logstash/ES 连通性。

0