Ubuntu LNMP环境下如何监控网站
导读:Ubuntu LNMP 网站监控实操指南 一 监控目标与分层 可用性:网站能否访问、返回码是否为 200/3xx、关键接口是否超时。 性能:首字节时间 TTFB、响应时间、每秒请求数 RPS、Nginx 并发连接与排队、后端 PHP-FP...
Ubuntu LNMP 网站监控实操指南
一 监控目标与分层
- 可用性:网站能否访问、返回码是否为 200/3xx、关键接口是否超时。
- 性能:首字节时间 TTFB、响应时间、每秒请求数 RPS、Nginx 并发连接与排队、后端 PHP-FPM 进程与队列、数据库 MySQL 连接与慢查询。
- 资源:CPU、内存、磁盘 I/O、网络、文件句柄、连接数。
- 日志与异常:Nginx 访问/错误日志、PHP-FPM 错误日志、MySQL 错误与慢查询日志。
- 告警与可视化:设置阈值告警(如 5xx 比例、响应时间、磁盘使用率),用面板展示趋势与瓶颈。
二 快速上手 系统与服务状态检查
- 资源与连接
- 实时资源:top/htop、vmstat、iostat、free、df、ss(替代 netstat,更快更全)。
- 示例:iostat -x 1 查看磁盘 IO;ss -s 查看当前连接统计。
- 服务状态
- Nginx:sudo systemctl status nginx;配置语法:sudo nginx -t;优雅重载:sudo nginx -s reload。
- MySQL:sudo systemctl status mysql;状态与进程:mysqladmin status;SHOW PROCESSLIST; 慢查询日志定位瓶颈。
- PHP-FPM:sudo systemctl status php-fpm;观察进程池与慢日志(需启用 slowlog)。
- 日志排查
- Nginx 错误:tail -n50 /var/log/nginx/error.log
- MySQL 错误:tail -n50 /var/log/mysql/error.log
- PHP 错误:路径随版本与 SAPI 不同,常见如 /var/log/php/7.x/error.log 或 /var/log/php-fpm.log。
三 关键组件监控要点与配置
- Nginx
- 启用状态页:在 server 块加入
- location /nginx_status {
- stub_status on;
- allow 127.0.0.1;
- deny all;
- }
- 访问示例:curl http://127.0.0.1/nginx_status,关注 Active connections、Reading/Writing/Waiting、Requests。
- location /nginx_status {
- 日志与性能:开启 access_log,结合慢请求分析(如 5xx、超时、上游超时)。
- 启用状态页:在 server 块加入
- MySQL
- 命令行巡检:mysqladmin status、SHOW GLOBAL STATUS LIKE ‘Threads_connected’; 、SHOW PROCESSLIST;
- 慢查询:开启 slow_query_log,用 pt-query-digest 分析并优化高成本 SQL。
- PHP-FPM
- 进程与队列:pm.status_path = /fpm_status(配置于 pool 段),Nginx 通过 location 暴露仅内网访问。
- 慢请求:slowlog = /var/log/php-fpm/www-slow.log;request_slowlog_timeout = 5s。
- 外部 APM(可选)
- New Relic / Datadog / Blackfire.io:用于应用性能剖析、调用图与事务追踪,快速定位 PHP 层瓶颈。
四 告警与可视化方案
- Prometheus + Grafana(开源、灵活)
- 采集:Node Exporter(主机指标)、Nginx Exporter(stub_status)、MySQL Exporter、PHP-FPM Exporter(需开启 status)。
- 可视化:Grafana 导入 Nginx/MySQL/PHP-FPM 官方或社区仪表盘,配置阈值告警(如 5xx 比例、平均响应时间、磁盘使用率)。
- Zabbix 6.0 LTS(企业级、开箱即用)
- 架构:Zabbix Server + Zabbix Agent(主动/被动),支持 SNMP、ICMP、端口、自定义脚本等。
- Ubuntu 22.04 可基于 LNMP 部署 Zabbix 6.0 LTS,提供模板化监控与告警通知(邮件、企业微信、钉钉等)。
五 自动化自愈与巡检脚本
- 守护脚本思路(示例)
- 每分钟巡检 Nginx/MySQL/PHP-FPM;若进程异常或端口未监听,尝试重启并记录日志。
- 示例片段(需按实际路径与进程名调整):
- #!/usr/bin/env bash
- ts=$(date ‘+%F %T’)
- for svc in nginx mysql php-fpm; do
- if ! systemctl is-active --quiet $svc; then
-
systemctl restart $svc & & echo "$ts $svc restarted" > > /var/log/monitor.log - fi
- done
- #!/usr/bin/env bash
- 加入 crontab:* * * * * /usr/local/bin/monitor.sh
- 风险提示
- 自动重启可能掩盖根因,建议同时保留告警与日志,结合 APM/慢查询定位问题。
- 生产环境建议先在测试环境验证脚本与阈值,避免误重启导致业务抖动。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu LNMP环境下如何监控网站
本文地址: https://pptw.com/jishu/787098.html
