Ubuntu LAMP日志查看與分析指南
LAMP(Linux、Apache、MySQL、PHP)是Ubuntu上常見的Web服務棧,其日志文件記錄了服務器運行狀態、錯誤信息及用戶請求,是故障排查、性能優化和安全監控的核心依據。以下從日志位置、查看方法、分析工具、優化實踐四方面展開說明。
LAMP的日志分散在系統及組件目錄中,需根據組件類型定位:
/var/log/apache2/access.log
;/var/log/apache2/error.log
。/var/log/mysql/error.log
;/var/log/mysql/slow.log
(需手動啟用);/var/log/mysql/query.log
(需手動啟用);/var/log/mysql/mysql-bin.log
(需手動啟用)。php.ini
中的error_log
參數指定(常見路徑如/var/log/php7.4-fpm.log
或/var/log/apache2/error.log
(若通過Apache運行))。通過命令行工具可快速查看、過濾日志內容,以下是高頻使用的命令:
tail
:實時查看日志最后N行(如sudo tail -f /var/log/apache2/access.log
實時監控訪問日志,-f
表示跟隨新內容;sudo tail -n 50 /var/log/mysql/error.log
查看最近50條錯誤日志);cat
:查看完整日志內容(如cat /var/log/apache2/error.log
,適合小文件);less
:分頁查看日志(如less /var/log/mysql/slow.log
,支持上下滾動、搜索/keyword
)。grep
:搜索特定關鍵字(如sudo grep "404" /var/log/apache2/access.log
查找所有404錯誤請求;sudo grep "ERROR" /var/log/mysql/error.log
查找MySQL錯誤日志中的ERROR級別信息);awk
:提取特定字段(如awk '{print $1, $4, $7}' /var/log/apache2/access.log
提取訪問日志中的時間、IP、請求URL);sort
/uniq
:排序并去重(如grep "2025-10-18" /var/log/apache2/error.log | awk '{print $4}' | sort | uniq -c | sort -nr
統計當天錯誤類型及出現次數)。dmesg
:查看系統內核日志(如dmesg | grep "apache"
查看與Apache相關的內核消息);journalctl
:查看systemd管理的日志(如journalctl -u apache2 -f
實時查看Apache服務日志)。對于復雜日志分析,可使用工具提升效率:
grep
+awk
+sort
+uniq
組合,可實現日志過濾、統計(如統計每日訪問量、錯誤數),適合簡單分析場景。sudo apt install goaccess
;使用:goaccess /var/log/apache2/access.log -o report.html --log-format=COMBINED
);sudo apt install logwatch
;使用:sudo logwatch --service apache2 --output mail
發送Apache日志報告到郵箱)。mysqldumpslow -s t -t 10 /var/log/mysql/slow.log
顯示執行時間最長的10條SQL);pt-query-digest /var/log/mysql/slow.log > slow_report.txt
)。logrotate
工具自動壓縮、刪除舊日志,避免日志文件過大占用磁盤空間。默認配置文件位于/etc/logrotate.d/apache2
(Apache)、/etc/logrotate.d/mysql-server
(MySQL),可修改以下參數:/var/log/apache2/*.log {
daily # 每天輪轉
rotate 30 # 保留30天日志
compress # 壓縮舊日志
missingok # 日志不存在時不報錯
notifempty # 日志為空時不輪轉
}
root
權限訪問,避免未授權修改??赏ㄟ^ls -l /var/log/apache2/
查看權限(如-rw-r--r-- 1 root adm 1024 Oct 18 10:00 access.log
),確保只有管理員可寫入。sed
替換敏感內容:sed 's/password=[^&]*/password=****/' /var/log/apache2/access.log
)。tail -f
或工具(如Zabbix、Prometheus)實時監控日志,設置報警規則(如當錯誤日志中出現"500 Internal Server Error"超過10次/分鐘時,發送郵件通知管理員)。通過以上步驟,可有效查看、分析Ubuntu LAMP環境中的日志,快速定位問題并優化系統性能。