LNMP如何监控服务器
导读:LNMP监控体系与落地步骤 一、监控目标与分层 系统层:CPU、内存、磁盘IO、网络、文件句柄、负载等基础资源。 服务层:Nginx(连接/请求、状态码)、MySQL(连接、慢查询、复制)、PHP-FPM(进程池、排队、响应时间)。 应用...
LNMP监控体系与落地步骤
一、监控目标与分层
- 系统层:CPU、内存、磁盘IO、网络、文件句柄、负载等基础资源。
- 服务层:Nginx(连接/请求、状态码)、MySQL(连接、慢查询、复制)、PHP-FPM(进程池、排队、响应时间)。
- 应用层:关键接口时延、错误率、吞吐、依赖可用性。
- 日志层:Nginx 访问/错误、MySQL 错误/慢查询、PHP-FPM 错误、系统日志。
- 告警层:阈值/异常检测、多渠道通知、告警升级与收敛。
二、快速上手 命令行巡检与日志
- 系统资源
- 实时与概况:top/htop、vmstat、iostat -x 1(需安装 sysstat)、free -m、df -h、du -sh /var/log。
- 网络与连接:ss -tulpen | head、netstat -tulpen | head(两者皆可,ss更快)。
- 服务状态
- sudo systemctl status nginx、sudo systemctl status mysql、sudo systemctl status php-fpm。
- Nginx
- 配置检查:nginx -t;优雅重载:nginx -s reload。
- 状态页:启用模块 ngx_http_stub_status_module,在 server 中配置 location /status 并访问查看连接与请求数。
- MySQL
- 运行状态:mysqladmin status、mysqladmin --relative --sleep 5 extended-status(增量)、SHOW STATUS LIKE ‘Threads_connected’; 、SHOW PROCESSLIST; 。
- 慢查询:开启慢查询日志,定期分析定位性能瓶颈。
- PHP-FPM
- 进程池状态:配置 pm.status_path(如 /fpm-status),通过 Nginx 受限访问;关注 active/ idle/ max children/ queue。
- 日志排查
- tail -n50 /var/log/nginx/error.log、tail -n50 /var/log/mysql/error.log、tail -n50 /var/log/php-fpm.log(路径因发行版/版本不同可能位于 /var/log/php/7.x-fpm.log 等)。
三、组件关键指标与采集方式
| 组件 | 关键指标 | 采集方式 |
|---|---|---|
| Linux | CPU利用率、内存使用、swap、磁盘IO、网络吞吐、文件句柄 | top/htop、vmstat、iostat、free、df、ss |
| Nginx | 活跃/等待连接、接受/处理请求数、读/写等待、5xx/4xx 状态码 | stub_status、访问日志分析、错误日志 |
| MySQL | 连接数、慢查询数、查询缓存命中、复制延迟、线程/临时表 | mysqladmin、SHOW STATUS/PROCESSLIST、慢查询日志 |
| PHP-FPM | 进程池活跃/空闲/最大、排队请求、慢请求、请求耗时 | status_path、日志、PHP 慢日志 |
| 应用 | 关键接口P95/P99时延、错误率、吞吐 | APM(如 New Relic/Datadog)、自定义埋点 |
| 以上指标与采集方式可组合使用命令行与状态页,形成持续观测基线。 |
四、可视化与告警方案
- 开源自建
- Prometheus + Grafana:以 Nginx stub_status/Exporter、MySQL Exporter、PHP-FPM Exporter 采集指标,Grafana 做可视化与阈值告警(如连接数、慢查询、5xx 比例、磁盘使用率)。
- Zabbix:部署 Server/Agent,创建 Nginx/MySQL/PHP-FPM 监控项与触发器模板,配置邮件/企业微信/钉钉等通知。
- Nagios:通过插件监控主机与服务状态,设置告警升级策略。
- Netdata:一键安装,面向实时可视化与告警,适合快速补齐可视化能力。
- 托管与APM
- New Relic / Datadog:集成 Nginx/MySQL/PHP,提供应用性能分析、分布式追踪与告警,降低自建运维成本。
- 告警建议
- 关键阈值示例:CPU持续> 80%、内存> 80%、磁盘> 80%、Nginx **5xx> **1% 持续5分钟、MySQL Threads_connected 接近上限、PHP-FPM queue > 0 持续1分钟。
- 通知渠道:邮件 + 即时通讯(企业微信/钉钉/Slack),按严重级别分级与升级。
五、自动化自愈与巡检脚本
- 服务存活巡检与自启(示例思路)
- 用 systemctl is-active 或 curl -f 探测 Nginx/PHP-FPM/MySQL;异常时执行 systemctl restart 并记录日志,加入 crontab 每分钟执行。
- 示例(需按实际环境调整路径与重启命令):
- */1 * * * * /usr/local/bin/check_lnmp.sh > > /var/log/monitor.log 2> & 1
- 慢查询与错误日志巡检
- 定时分析 MySQL 慢查询日志(如 pt-query-digest),对 Top SQL 建立索引或改写;对 Nginx/PHP-FPM 错误日志做关键字告警(如 “upstream timed out”、“PHP Fatal”)。
- 风险提示
- 自动重启可能掩盖根因,建议配合告警与工单闭环;重启前尽量采集现场信息(如 dmesg、netstat -s、SHOW FULL PROCESSLIST)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: LNMP如何监控服务器
本文地址: https://pptw.com/jishu/775026.html
