Debian LNMP如何监控管理
小樊
41
2025-12-20 17:52:31
Debian LNMP 监控与管理实操指南
一 服务状态与日志监控
- 使用 systemctl 管理并查看组件状态,异常时及时重启;按需查看 Nginx 与 MySQL/MariaDB 的错误日志,定位启动失败、权限、连接等问题;分析 Nginx 访问日志 了解流量与错误码分布;对 PHP-FPM 则结合其进程管理与错误日志排查脚本异常与慢请求。
- 常用命令示例:
- 服务状态与重启
- sudo systemctl status nginx
- sudo systemctl status mysql 或 sudo systemctl status mariadb
- sudo systemctl status php-fpm 或 sudo systemctl status php8.2-fpm
- sudo systemctl restart nginx && sudo systemctl restart mysql && sudo systemctl restart php-fpm
- 日志实时查看
- sudo tail -f /var/log/nginx/error.log
- sudo tail -f /var/log/mysql/error.log
- sudo tail -f /var/log/nginx/access.log
- PHP-FPM 错误日志路径取决于 php.ini 的 error_log 指令
- 访问与错误分析
- 统计状态码:awk ‘{print $9}’ /var/log/nginx/access.log | sort | uniq -c | sort -nr
- 查找 5xx 错误:awk ‘$9 >= 500 && $9 < 600’ /var/log/nginx/access.log | head
- MySQL 运行状态
- mysqladmin status
- mysqladmin --relative --sleep 5 extended-status # 观察 QPS、Threads、Slow_queries 等变化
- 建议将以上命令固化为日常巡检脚本,并结合时间戳输出到巡检日志,便于回溯。
二 资源与应用性能观测
- 系统层:用 top/htop 观察 CPU、内存与负载;用 vmstat 查看上下文切换与内存压力;用 iostat 关注磁盘 I/O 利用率与等待;用 ss/netstat 检查连接数、TIME_WAIT 与端口占用,定位连接瓶颈与异常来源。
- 应用层:
- Nginx:启用 stub_status 模块暴露连接/请求指标(Active connections、Reading、Writing、Waiting),便于判断并发与排队情况。
- MySQL/MariaDB:开启 慢查询日志 与 性能模式(performance_schema),配合 EXPLAIN 与 Percona Toolkit 做索引与 SQL 优化。
- PHP-FPM:开启 慢日志 slowlog 与 request_slowlog_timeout,定位耗时脚本与函数;结合 opcache 提升性能并减少重复编译开销。
- APM:对 PHP 应用接入 New Relic / Datadog APM,获取端到端事务追踪、错误与数据库调用分析。
三 可视化监控与告警方案
- 轻量即时可视化
- Netdata:实时展示 CPU、内存、磁盘、网络、Nginx、MySQL、PHP-FPM 等指标,默认端口 19999,适合快速上手与临时排障。
- Glances:跨平台监控,支持终端与 Web,适合中小型环境统一观测。
- 企业级与可观测平台
- Zabbix:集中监控、灵活告警(邮件/短信/Webhook 等),适合多主机与复杂业务场景。
- Prometheus + Grafana:以 Node Exporter 采集系统指标,配合 Nginx Exporter / PHP-FPM Exporter / mysqld_exporter 抓取应用指标,Grafana 做统一可视化与阈值告警。
- 告警建议
- 关键阈值示例:CPU 持续 > 80%、内存使用 > 80%、磁盘使用 > 80%、Nginx 5xx 比例异常、MySQL 连接数接近上限、慢查询突增、PHP-FPM 进程耗尽或大量慢请求。
四 日常运维与稳定性加固
- 变更与更新:定期 apt update && apt upgrade 与安全修复,保持 Nginx/MySQL/PHP 为稳定版本;变更前备份配置与数据,变更后回归验证。
- 安全基线:仅开放 80/443/SSH 等必要端口,使用 UFW/iptables 限制来源;SSH 采用密钥登录、禁用 root 远程;数据库仅监听内网或按需开放,执行 mysql_secure_installation。
- 连接与会话:适度调优内核与网络参数(如文件描述符、somaxconn、tcp_tw_reuse 等),并优化 PHP-FPM 进程模型(pm.max_children/start_servers/min_spare_servers/max_spare_servers) 与 Nginx worker_processes/worker_connections,避免连接耗尽与进程饥饿。
- 备份与恢复:定期备份 /etc、网站目录与数据库(如 mysqldump 或物理备份),保留多份与异地副本,定期演练恢复流程。