如何使用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.ini、www.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 连通性。