ubuntu lnmp如何监控运行状态
Ubuntu LNMP运行状态监控方法
一、基础命令行监控
1. 服务状态检查
使用systemctl(Ubuntu 16.04及以上版本)查看LNMP核心服务(Nginx、MySQL/MariaDB、PHP-FPM)的运行状态,是最直接的监控方式:
sudo systemctl status nginx # 检查Nginx状态
sudo systemctl status mysql # 检查MySQL状态(若使用MariaDB,命令为`sudo systemctl status mariadb`)
sudo systemctl status php-fpm # 检查PHP-FPM状态(版本不同可能为`php7.4-fpm`、`php8.1-fpm`等)
若服务未运行,可通过sudo systemctl start <
服务名>
启动,sudo systemctl enable <
服务名>
设置开机自启。
2. 进程存在性检查
通过ps命令结合grep过滤,确认LNMP进程是否在运行:
ps aux | grep nginx # 检查Nginx进程
ps aux | grep mysqld # 检查MySQL主进程
ps aux | grep php-fpm # 检查PHP-FPM进程
若无输出,说明进程可能崩溃,需手动重启或排查原因。
3. 端口监听检查
使用netstat(传统工具)或ss(更现代的工具)检查服务是否监听预期端口(Nginx:80/443、MySQL:3306、PHP-FPM:9000):
sudo netstat -tuln | grep -E '80|443|3306|9000' # 查看端口监听情况
# 或使用ss命令(更高效)
sudo ss -tuln | grep -E '80|443|3306|9000'
若端口未监听,可能是配置错误或服务未启动。
4. 系统资源监控
通过以下命令实时查看系统资源占用,判断LNMP是否导致资源瓶颈:
top # 实时查看CPU、内存占用(按M按内存排序,按P按CPU排序)
htop # top的增强版(需安装:`sudo apt install htop`)
free -h # 查看内存使用情况(人类可读格式)
df -h # 查看磁盘空间使用情况
iostat -x 1 # 查看磁盘I/O负载(需安装sysstat:`sudo apt install sysstat`)
高CPU、内存或磁盘占用可能导致服务响应变慢。
二、内置模块与日志分析
1. Nginx状态监控
启用Nginx的stub_status模块,查看连接数、请求数等指标:
- 编辑Nginx配置文件(
/etc/nginx/sites-available/default或自定义配置),添加以下内容:location /nginx_status { stub_status on; allow 127.0.0.1; # 仅允许本地访问(安全考虑) deny all; } - 重启Nginx:
sudo systemctl restart nginx - 访问
http://服务器IP/nginx_status(需在浏览器或curl中访问),输出示例:
关键指标:Active connections: 10 server accepts handled requests 100 100 200 Reading: 2 Writing: 3 Waiting: 5Active connections(活跃连接数)、Reading/Writing/Waiting(读/写/等待连接数)。
2. MySQL状态监控
- 使用
mysqladmin命令快速查看MySQL状态:mysqladmin -u root -p status # 需输入MySQL密码,输出包括Uptime(运行时间)、Threads(线程数)、Questions(查询数)等 - 执行SQL语句查看详细状态:
mysql -u root -p -e "SHOW GLOBAL STATUS; " # 查看全局状态变量(如连接数、缓存命中率) mysql -u root -p -e "SHOW ENGINE INNODB STATUS\G" # 查看InnoDB引擎状态(关键用于数据库性能分析)
3. 日志分析
定期检查LNMP组件的错误日志,及时发现异常:
tail -f /var/log/nginx/error.log # 实时查看Nginx错误日志
tail -f /var/log/mysql/error.log # 实时查看MySQL错误日志
tail -f /var/log/php-fpm.log # 查看PHP-FPM错误日志(路径可能为`/var/log/php7.x-fpm.log`)
日志中常见异常:Nginx的502 Bad Gateway(PHP-FPM未运行)、MySQL的Too many connections(连接数过多)。
三、第三方监控工具
1. Prometheus + Grafana
开源监控组合,适合大规模、可视化监控:
- Prometheus:收集系统和服务指标(需安装
node_exporter收集系统指标,nginx_exporter收集Nginx指标,mysqld_exporter收集MySQL指标); - Grafana:可视化Prometheus数据,创建仪表盘(如Nginx请求量、MySQL查询数、系统CPU使用率)。
安装步骤可参考:Ubuntu安装Prometheus、Ubuntu安装Grafana。
2. Zabbix
企业级开源监控系统,支持报警、自动化管理:
- 安装Zabbix服务器和代理:
sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent; - 配置数据库(MySQL/MariaDB)并初始化Zabbix;
- 通过Web界面添加主机(Ubuntu服务器),配置监控项(如Nginx状态、MySQL性能、系统资源)。
官方文档:Zabbix官方安装指南。
3. Netdata
实时监控工具,安装即用,适合快速查看系统状态:
- 安装命令:
bash < (curl -Ss https://my-netdata.io/kickstart.sh); - 访问
http://服务器IP:19999,查看实时图表(包括CPU、内存、磁盘、网络、Nginx、MySQL等)。
特点:无需复杂配置,开箱即用。
四、自动化监控与重启脚本
编写Shell脚本,定期检查LNMP服务状态,异常时自动重启并记录日志:
#!/bin/bash
timestamp=$(date '+%Y-%m-%d %H:%M:%S')
# 检查PHP-FPM
if ! pgrep -x "php-fpm" >
/dev/null;
then
systemctl restart php-fpm
echo "$timestamp PHP-FPM down, restarted." >
>
/var/log/lnmp_monitor.log
fi
# 检查MySQL
if ! systemctl is-active --quiet mysql;
then
systemctl restart mysql
echo "$timestamp MySQL down, restarted." >
>
/var/log/lnmp_monitor.log
fi
# 检查Nginx
if ! systemctl is-active --quiet nginx;
then
systemctl restart nginx
echo "$timestamp Nginx down, restarted." >
>
/var/log/lnmp_monitor.log
fi
- 给脚本添加执行权限:
chmod +x /usr/local/bin/lnmp_monitor.sh; - 添加到
crontab(每分钟检查一次):
添加以下内容:crontab -e* * * * * /usr/local/bin/lnmp_monitor.sh
该脚本可有效应对服务意外崩溃的情况。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu lnmp如何监控运行状态
本文地址: https://pptw.com/jishu/744461.html
