LNMP环境下监控方法与工具指南
使用Linux自带工具实时查看CPU、内存、磁盘、网络等核心资源使用情况,快速定位系统级瓶颈:
top为命令行工具,htop需安装(更直观,支持鼠标操作);通过系统命令验证LNMP核心组件(Nginx、MySQL、PHP-FPM)的运行状态,确保服务正常:
systemctl status nginx(查看服务是否运行)、nginx -t(测试配置文件语法);systemctl status mysql、mysqladmin ping(检查数据库连通性);systemctl status php-fpm、netstat -anp | grep php-fpm(确认PHP-FPM进程监听端口)。定期查看服务错误日志,定位具体问题根源:
tail -n 10 /var/log/nginx/error.log(查看最近10条错误记录,如404/500错误、连接超时);tail -n 10 /var/log/mysql/error.log(排查数据库启动失败、查询错误等问题);/var/log/php7.x/error.log(需根据PHP版本调整),记录PHP脚本语法错误、致命错误等。适合需要集中管理的场景,支持监控服务器、网络设备及应用程序:
适合需要灵活定制的场景,擅长时间序列数据存储与可视化:
适合需要深入代码级分析的场景,提供应用性能全景视图:
编写Shell脚本定期检查服务状态,异常时自动重启并记录日志:
#!/bin/bash
# 获取当前时间
TIME=$(date '+%Y-%m-%d %H:%M:%S')
# 检查php-fpm服务
if ! netstat -anp | grep php-fpm | grep -q 'LISTEN'; then
systemctl restart php-fpm
echo "$TIME php-fpm服务异常,已重启" >> /var/log/lnmp_monitor.log
fi
# 检查mysql服务
if ! systemctl is-active --quiet mysql; then
systemctl restart mysql
echo "$TIME mysql服务异常,已重启" >> /var/log/lnmp_monitor.log
fi
# 检查nginx服务
if ! systemctl is-active --quiet nginx; then
systemctl restart nginx
echo "$TIME nginx服务异常,已重启" >> /var/log/lnmp_monitor.log
fi
crontab,设置为每分钟执行一次(* * * * * /path/to/script.sh)。使用logrotate工具定期压缩、删除旧日志,避免日志文件过大占用磁盘空间:
/etc/logrotate.conf或创建/etc/logrotate.d/lnmp文件,添加以下配置(以Nginx为例):/var/log/nginx/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
systemctl reload nginx > /dev/null 2>&1 || true
endscript
}
上述配置表示每天轮转日志,保留7天,压缩旧日志,轮转后重新加载Nginx。