Linux下監控LNMP(Linux+Nginx+MySQL+PHP)系統狀態的方法可分為系統級基礎監控、服務狀態檢查、日志分析、專業監控工具及自動化腳本五大類,以下是具體實施方案:
通過Linux自帶命令行工具快速查看系統資源使用情況及服務進程狀態,適合日??焖傺矙z:
top(動態顯示CPU、內存、進程占用排名)、htop(增強版top,支持鼠標操作,需安裝)、vmstat(報告虛擬內存、進程、CPU活動)、iostat(監控磁盤I/O和CPU利用率)、netstat/ss(查看網絡連接狀態,如sudo netstat -tuln | grep nginx查看Nginx監聽端口)等命令,實時掌握系統資源瓶頸。ps命令確認LNMP組件是否運行,例如ps aux | grep nginx(Nginx)、ps aux | grep mysqld(MySQL)、ps aux | grep php-fpm(PHP-FPM),若未運行則需手動啟動對應服務。針對LNMP各組件(Nginx、MySQL、PHP-FPM)的狀態進行精準驗證,確保服務正常運行:
systemctl status nginx(systemd系統)或service nginx status(SysVinit系統)查看服務狀態;啟用內置ngx_http_stub_status_module模塊(需修改Nginx配置文件并重載),訪問http://服務器IP/status可查看連接數、請求數等詳細指標。systemctl status mysql檢查服務狀態;使用mysqladmin -u root -p status命令快速獲取MySQL運行狀態(如連接數、查詢緩存命中率);借助pt-query-digest(Percona Toolkit工具)分析慢查詢日志,定位SQL性能瓶頸。systemctl status php-fpm或service php-fpm status查看狀態;通過php-fpm -t測試配置文件語法,確保配置正確;檢查PHP-FPM池狀態(如sudo netstat -tuln | grep php-fpm查看監聽端口)。通過分析LNMP組件的日志文件,快速定位錯誤和異常,結合實時監控提前預警:
/var/log/nginx/error.log)、MySQL錯誤日志(/var/log/mysql/error.log)、PHP錯誤日志(路徑因版本而異,如/var/log/php7.4/error.log或/var/log/php-fpm/error.log)。tail -n 10 日志文件查看最近10條日志(如tail -n 10 /var/log/nginx/error.log);使用tail -f 日志文件實時監控日志更新(如tail -f /var/log/mysql/error.log),及時發現連接超時、權限不足等問題。通過專業工具實現全面、自動化的監控與告警,適合生產環境長期使用:
通過編寫腳本定期檢查服務狀態,在異常時自動重啟服務,減少人工干預:
#!/bin/bash
timestamp=$(date +'%Y-%m-%d %H:%M:%S')
# 檢查php-fpm
if ! pgrep php-fpm > /dev/null; then
systemctl restart php-fpm
echo "$timestamp php-fpm服務異常,已重啟..." >> /var/log/lnmp_monitor.log
fi
# 檢查mysql
if ! pgrep mysqld > /dev/null; then
systemctl restart mysql
echo "$timestamp mysql服務異常,已重啟..." >> /var/log/lnmp_monitor.log
fi
# 檢查nginx
if ! pgrep nginx > /dev/null; then
systemctl restart nginx
echo "$timestamp nginx服務異常,已重啟..." >> /var/log/lnmp_monitor.log
fi
crontab -e添加定時任務(如每分鐘執行一次):* * * * * /usr/local/bin/lnmp_monitor.sh,確保腳本具備執行權限(chmod +x /usr/local/bin/lnmp_monitor.sh)。