Linux下监控LNMP(Linux+Nginx+MySQL+PHP)系统状态的方法可分为系统级基础监控、服务状态检查、日志分析、专业监控工具及自动化脚本五大类,以下是具体实施方案:
通过Linux自带命令行工具快速查看系统资源使用情况及服务进程状态,适合日常快速巡检:
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)。