如何监控Ubuntu上的LNMP
导读:Ubuntu 上 LNMP 监控实操指南 一 快速巡检与系统指标 服务存活与端口 使用 systemd 查看状态:sudo systemctl status nginx、sudo systemctl status mysql、sudo...
Ubuntu 上 LNMP 监控实操指南
一 快速巡检与系统指标
- 服务存活与端口
- 使用 systemd 查看状态:sudo systemctl status nginx、sudo systemctl status mysql、sudo systemctl status php-fpm
- 使用进程与端口检查:ps aux | grep -E ‘nginx|mysqld|php-fpm’;ss -tulpen | grep -E ‘80|443|3306’
- 资源与负载
- 实时与交互:top/htop(htop 需安装:sudo apt-get install htop)
- 内存与交换:free -h
- 虚拟内存与 CPU:vmstat 1
- 磁盘 I/O:iostat -x 1(需安装:sudo apt-get install sysstat)
- 日志定位
- Nginx:/var/log/nginx/error.log
- MySQL:/var/log/mysql/error.log
- PHP-FPM:/var/log/php-fpm/error.log
- 一键巡检脚本示例
- 保存为 check_lnmp.sh,执行:bash check_lnmp.sh
- 用途:快速判断服务存活、端口监听与关键错误日志是否出现
以上命令与路径覆盖了 Ubuntu 上 LNMP 的常用巡检与系统级监控要点,适合作为日常排障与值守基线。#!/usr/bin/env bash set -e echo "=== 服务状态 ===" systemctl is-active --quiet nginx & & echo "Nginx: active" || echo "Nginx: inactive" systemctl is-active --quiet mysql & & echo "MySQL: active" || echo "MySQL: inactive" systemctl is-active --quiet php-fpm & & echo "PHP-FPM: active" || echo "PHP-FPM: inactive" echo "=== 端口监听 ===" ss -tulpen | egrep '(:80|:443|:3306)' echo "=== 近期错误日志 ===" tail -n50 /var/log/nginx/error.log /var/log/mysql/error.log /var/log/php-fpm/error.log 2> /dev/null | sed 's/^/ /'
二 组件级监控要点
- Nginx
- 启用状态页:在 server 配置中加入
重载:sudo systemctl reload nginx;访问:http://服务器IP/nginx_statuslocation /nginx_status { stub_status on; allow 127.0.0.1; deny all; } - 关键指标:Active connections、accepts/handled/requests、Reading/Writing/Waiting
- 启用状态页:在 server 配置中加入
- MySQL/MariaDB
- 运行状态:mysqladmin -u root -p status
- 慢查询分析:mysqldumpslow /var/log/mysql/slow.log
- 深入诊断:使用 pt-query-digest(Percona Toolkit)分析慢查询,定位性能瓶颈
- PHP-FPM
- 进程与池状态:ps aux | grep php-fpm;检查 /etc/php//fpm/pool.d/.conf 的 pm.max_children、pm.start_servers 等
- 日志:/var/log/php-fpm/error.log,关注 WARNING/ERROR 与慢请求日志(若启用)
- 小结
- Nginx 状态页提供连接与请求吞吐;MySQL 通过管理命令与慢查询日志定位负载与 SQL 问题;PHP-FPM 关注进程池与错误日志,三者配合可快速闭环性能与可用性。
三 可视化与告警方案
- Prometheus + Grafana(开源、灵活)
- 典型抓取目标与端口
- 节点资源:Node Exporter :9100
- Nginx(状态页或 Nginx Exporter):nginx_status :9113
- MySQL:mysqld_exporter :9104
- 部署步骤
- 安装 Prometheus,配置 prometheus.yml 抓取上述目标
- 安装 Grafana,添加 Prometheus 数据源,导入 Node Exporter/MySQL/Nginx 仪表盘
- 典型抓取目标与端口
- Zabbix(企业级、开箱即用)
- 安装 Zabbix Server/Agent,在 Web 界面添加主机,配置监控项(CPU、内存、磁盘、Nginx、MySQL、PHP-FPM)、触发器与告警媒介
- 其他可选
- Nagios(成熟稳定,插件丰富)、Netdata(轻量实时)、New Relic/Datadog(SaaS,集成度高)
- 选型建议
- 需要自建与可控:优先 Prometheus + Grafana
- 需要快速交付与完善告警:选择 Zabbix
- 追求低门槛与即时可视化:尝试 Netdata 以上方案在 LNMP 场景下被广泛采用,均支持指标采集、可视化与告警能力。
四 日志集中与 PHP 性能分析
- 日志集中与可视化
- 使用 ELK Stack(Elasticsearch + Logstash + Kibana) 聚合 Nginx/MySQL/PHP-FPM 日志,进行检索、分析与可视化
- PHP 应用性能分析
- Xdebug:代码级调试与性能分析(开发/预发环境)
- Blackfire.io:生产友好的性能剖析与调用图
- New Relic/Datadog APM:应用性能监控与事务追踪
- 建议
- 生产环境优先使用 采样与限流 的 APM,避免额外开销;日志与指标分离存储,便于扩容与回溯。
五 告警阈值与日常巡检清单
- 建议阈值与动作
- CPU 持续 > 80% 持续 5 分钟:扩容或降载,检查热点进程
- 内存可用 < 10%:排查缓存/泄漏,增加内存或优化应用
- 磁盘使用 > 80%:清理日志/归档,扩容磁盘
- Nginx 5xx 比例 > 1%(5 分钟):检查后端 PHP-FPM/MySQL 健康与超时配置
- MySQL 慢查询数/秒突增:用 pt-query-digest 分析,优化索引与 SQL
- PHP-FPM 进程耗尽或队列堆积:调优 pm.max_children/pm.start_servers,检查慢脚本
- 日常巡检清单
- 每日:服务存活、端口监听、错误日志关键字、磁盘/IO、慢查询
- 每周:Nginx/MySQL/PHP-FPM 配置与版本审计、备份有效性、证书有效期
- 每月:容量与性能回顾、告警演练、基线对比与优化
- 安全提示
- 状态页与 Exporter 仅对内网开放,或加 IP 白名单/认证;数据库与后台管理口限制来源;密钥与凭据妥善存储 以上阈值与清单可作为起步基线,需结合业务峰值与 SLA 持续调优。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何监控Ubuntu上的LNMP
本文地址: https://pptw.com/jishu/757249.html
