阅读量:2
CentOS 上 LNMP 状态监控实操指南
一 系统与服务状态快速检查
- 服务运行状态:使用 systemd 查看组件是否存活与开机自启
- Nginx:
sudo systemctl status nginx - MySQL/MariaDB:
sudo systemctl status mysqld(或mariadb) - PHP-FPM:
sudo systemctl status php-fpm
- Nginx:
- 端口与进程:确认监听端口与进程存在
- 监听端口:
ss -tulnp | egrep ':(80|443|3306|9000)' - 进程存活:
ps aux | egrep 'nginx|mysqld|php-fpm'
- 监听端口:
- 配置与日志:变更前后校验与实时排错
- Nginx 配置语法:
sudo nginx -t - 实时查看日志:
tail -f /var/log/nginx/error.log、tail -f /var/log/mysqld.log、tail -f /var/log/php-fpm/error.log
- Nginx 配置语法:
- 资源概况:快速了解负载与资源瓶颈
- 资源使用:
top/htop、free -h、df -h、iostat -x 1、vmstat 1
以上命令覆盖服务存活、端口连通、配置校验与日志定位,适合日常巡检与故障排查。
- 资源使用:
二 组件级关键指标与常用命令
| 组件 | 关键指标 | 常用命令或路径 |
|---|---|---|
| Nginx | 连接数、请求数、请求耗时、状态码分布 | 启用模块:ngx_http_stub_status_module,配置 location /status { stub_status; } 后访问;日志:/var/log/nginx/access.log、/var/log/nginx/error.log |
| MySQL/MariaDB | 连接数、线程、查询吞吐、慢查询 | mysqladmin -u root -p status、SHOW STATUS;、SHOW PROCESSLIST;、SHOW VARIABLES LIKE 'slow_query_log%';,慢查询分析:pt-query-digest /var/log/mysql/slow.log |
| PHP-FPM | 进程池状态、排队、慢请求 | sudo systemctl status php-fpm、pm.status_path(如 /status)、slowlog、request_terminate_timeout,日志:/var/log/php-fpm/error.log |
| 系统 | CPU、内存、磁盘 IO、网络 | top/htop、free -h、iostat -x 1、vmstat 1、ss -s、df -h |
| 以上指标与方法可定位连接瓶颈、慢查询、进程异常与资源紧张等常见问题。 |
三 日志与慢查询分析
- Nginx:实时观察错误与访问异常
- 错误日志:
tail -f /var/log/nginx/error.log - 访问日志:结合
awk/goaccess做状态码、URL、UA、耗时等分析
- 错误日志:
- MySQL:慢查询定位与优化
- 确认慢查询日志开启:
SHOW VARIABLES LIKE 'slow_query_log%'; - 分析慢日志:
pt-query-digest /var/log/mysql/slow.log,找出 Top SQL、扫描行数、执行计划问题
- 确认慢查询日志开启:
- PHP-FPM:慢请求与进程异常
- 开启并查看慢日志(在
www.conf中配置slowlog与request_slowlog_timeout),结合tail -f观察长耗时请求与异常堆栈
日志与慢查询分析是定位业务异常与性能瓶颈的关键环节。
- 开启并查看慢日志(在
四 第三方监控与告警方案
- Zabbix:开箱即用的主机与服务监控,支持自定义监控项、触发器与告警媒介(邮件/短信/企业微信/钉钉等),适合中小团队统一纳管。
- Prometheus + Grafana:以 Nginx Exporter、mysqld_exporter、node_exporter 采集指标,Grafana 做可视化与阈值告警,适合需要时序与可视化能力的团队。
- Nagios / Datadog / New Relic:Nagios 做可用性与服务检查;Datadog/New Relic 提供 APM 与应用性能洞察,适合云上或需要 SaaS 告警与可视化的场景。
建议优先选择具备“采集-存储-可视化-告警”完整链路的方案,并与现有告警通道(如企业微信/钉钉/短信网关)打通。
五 一键巡检脚本示例
#!/usr/bin/env bash
set -e
echo "=== 服务状态 ==="
systemctl is-active --quiet nginx && echo "Nginx: active" || echo "Nginx: inactive"
systemctl is-active --quiet mysqld && echo "MySQL: active" || echo "MySQL: inactive"
systemctl is-active --quiet php-fpm && echo "PHP-FPM: active" || echo "PHP-FPM: inactive"
echo -e "\n=== 端口监听 ==="
ss -tulnp | egrep ':(80|443|3306|9000)' || echo "未检测到关键端口监听"
echo -e "\n=== Nginx 配置与错误 ==="
sudo nginx -t && echo "Nginx 配置 OK" || echo "Nginx 配置 ERROR"
tail -n20 /var/log/nginx/error.log | sed 's/^/Nginx: /'
echo -e "\n=== MySQL 状态与慢查询 ==="
mysqladmin --connect-timeout=5 -u root -p status 2>/dev/null && echo "MySQL ping OK" || echo "MySQL ping FAILED"
mysql -u root -p -e "SHOW STATUS LIKE 'Threads_connected';" 2>/dev/null || echo "MySQL 查询失败"
[ -f /var/log/mysql/slow.log ] && echo "慢查询样例:" && tail -n20 /var/log/mysql/slow.log | sed 's/^/MySQL Slow: /' || echo "未找到慢查询日志"
echo -e "\n=== PHP-FPM 状态 ==="
sudo systemctl status php-fpm --no-pager | head -20
tail -n20 /var/log/php-fpm/error.log | sed 's/^/PHP-FPM: /'
echo -e "\n=== 系统资源 ==="
free -h | head -2
df -h | head -2
iostat -x 1 2 | tail -n +4 | head -10
将脚本加入 crontab(如每 5 分钟)并结合企业微信/钉钉 Webhook 或邮件网关实现自动告警,可显著提升故障发现速度。
以上就是关于“centos lnmp如何监控状态”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm