监控CentOS环境下LNMP(Linux+Nginx+MySQL+PHP)的状态,需覆盖系统基础状态、各组件运行情况、性能指标及日志分析等多个维度,以下是具体方法:
通过系统自带命令快速查看服务器整体运行状态,适用于快速排查系统级问题:
top/htop:实时显示系统进程的CPU、内存占用情况,top按P(CPU)、M(内存)排序可快速定位高消耗进程;htop(需sudo yum install htop安装)提供更友好的交互界面,支持鼠标操作。vmstat:报告系统虚拟内存、CPU、磁盘I/O等统计信息,vmstat 1表示每秒刷新一次,重点关注r(运行队列长度)、b(阻塞进程数)、si/so(内存交换情况)。free:查看内存使用情况(包括已用、空闲、缓存),free -h以人类可读格式(GB/MB)显示,重点关注available(可用内存)。df:检查磁盘空间使用情况,df -h显示各分区挂载点及使用率,避免磁盘爆满导致服务异常。针对LNMP核心组件(Nginx、MySQL、PHP-FPM),可通过专用命令或配置模块查看详细运行状态:
systemctl(CentOS 7+)或service命令查看Nginx服务状态:sudo systemctl status nginx # 查看Nginx是否运行及最近日志
sudo service nginx status # 旧版本CentOS使用
stub_status模块,获取请求、连接等详细指标(需修改Nginx配置文件):nginx.conf的server块中添加:location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1; # 仅允许本地访问
deny all;
}
重启Nginx后,访问http://服务器IP/nginx_status可看到Active connections(活跃连接数)、requests(总请求数)等信息。systemctl或service命令查看MySQL服务状态:sudo systemctl status mysqld # MySQL服务名可能为mysqld或mariadb
sudo service mysqld status
mysqladmin工具:快速获取MySQL服务器状态(如运行时间、连接数、查询次数):mysqladmin -u root -p status # 输入密码后显示Uptime(运行时间)、Threads(线程数)、Questions(查询数)
SHOW STATUS命令:登录MySQL命令行,执行SHOW STATUS;查看所有状态变量(如Threads_connected当前连接数、Slow_queries慢查询数),或针对性查询特定指标:SHOW STATUS LIKE 'Threads_connected'; -- 查看当前连接数
SHOW STATUS LIKE 'Slow_queries'; -- 查看慢查询数量
my.cnf配置文件):slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2 # 超过2秒的查询视为慢查询
使用pt-query-digest(Percona Toolkit工具包)分析慢查询日志:sudo yum install percona-toolkit
sudo pt-query-digest /var/log/mysql/slow.log
```。
systemctl或service命令查看PHP-FPM服务状态:sudo systemctl status php-fpm # CentOS 7+默认使用php-fpm
sudo service php-fpm status
php-fpm.conf(或www.conf)配置文件,启用状态页面:[www]
pm.status_path = /status # 状态路径
在Nginx中添加location块允许访问(需与PHP-FPM同用户权限):location /php_status {
fastcgi_pass 127.0.0.1:9000; # PHP-FPM监听端口
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
allow 127.0.0.1;
deny all;
}
访问http://服务器IP/php_status可看到pool(进程池)、process manager(进程管理方式)、active processes(活跃进程数)等信息。通过专业工具实现长期性能数据收集、可视化及告警,适用于深度性能分析:
nmon:轻量级性能监控工具,支持实时查看CPU、内存、磁盘、网络等指标,也可后台收集数据(nmon -f -s 10 -c 60表示每10秒采集一次,共60次,生成nmon文件,用nmon analyser分析)。sudo yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent;zabbix库及用户);mysql -uzabbix -p zabbix < /usr/share/doc/zabbix-server-mysql*/create.sql.gz);/etc/zabbix/zabbix_server.conf)中的数据库连接信息;sudo systemctl start zabbix-server zabbix-agent。wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz,解压后修改prometheus.yml添加LNMP监控目标);sudo yum install grafana),配置Prometheus为数据源;通过分析日志文件快速定位错误、异常请求,是排查问题的关键手段:
tail -f命令实时跟踪日志文件更新(如Nginx访问日志、MySQL错误日志):tail -f /var/log/nginx/access.log # Nginx访问日志(记录所有请求)
tail -f /var/log/nginx/error.log # Nginx错误日志(记录错误信息)
tail -f /var/log/mysql/error.log # MySQL错误日志(记录数据库错误)
grep命令过滤日志中的关键字(如“ERROR”“404”),快速定位问题:grep "ERROR" /var/log/mysql/error.log # 查找MySQL错误日志中的ERROR信息
grep "404" /var/log/nginx/access.log # 查找Nginx访问日志中的404请求
通过上述方法的组合,可实现从系统基础状态到组件详细运行情况、性能趋势及问题排查的全方位监控,确保CentOS环境下LNMP的稳定运行。