LNMP环境下如何监控
导读:LNMP环境下监控方法与工具指南 一、基础监控:系统资源与服务状态 1. 系统资源监控 使用Linux自带工具实时查看CPU、内存、磁盘、网络等核心资源使用情况,快速定位系统级瓶颈: top/htop:动态展示进程资源占用(CPU、内存、...
LNMP环境下监控方法与工具指南
一、基础监控:系统资源与服务状态
1. 系统资源监控
使用Linux自带工具实时查看CPU、内存、磁盘、网络等核心资源使用情况,快速定位系统级瓶颈:
- top/htop:动态展示进程资源占用(CPU、内存、运行时间等),
top
为命令行工具,htop
需安装(更直观,支持鼠标操作); - vmstat:报告虚拟内存统计(如空闲内存、交换分区使用)、进程状态、CPU活动(用户态/内核态占比);
- iostat:监控CPU利用率及磁盘I/O(读写速率、I/O等待时间),识别磁盘性能瓶颈;
- netstat/ss:查看网络连接(TCP/UDP端口、连接状态)、路由表及接口统计(收发数据包量、错误数),排查网络问题。
2. 服务状态检查
通过系统命令验证LNMP核心组件(Nginx、MySQL、PHP-FPM)的运行状态,确保服务正常:
- Nginx:
systemctl status nginx
(查看服务是否运行)、nginx -t
(测试配置文件语法); - MySQL:
systemctl status mysql
、mysqladmin ping
(检查数据库连通性); - PHP-FPM:
systemctl status php-fpm
、netstat -anp | grep php-fpm
(确认PHP-FPM进程监听端口)。
3. 日志分析
定期查看服务错误日志,定位具体问题根源:
- Nginx错误日志:
tail -n 10 /var/log/nginx/error.log
(查看最近10条错误记录,如404/500错误、连接超时); - MySQL错误日志:
tail -n 10 /var/log/mysql/error.log
(排查数据库启动失败、查询错误等问题); - PHP错误日志:路径通常为
/var/log/php7.x/error.log
(需根据PHP版本调整),记录PHP脚本语法错误、致命错误等。
二、专业监控:全面指标与可视化
1. Zabbix:开源分布式监控系统
适合需要集中管理的场景,支持监控服务器、网络设备及应用程序:
- 安装部署:按官方文档安装Zabbix服务器、数据库(MySQL/PostgreSQL)及Web前端;
- 配置监控项:为Nginx(连接数、请求数)、MySQL(QPS、TPS、连接数)、PHP-FPM(活跃进程数、慢请求数)添加监控项,设置阈值(如CPU使用率超过80%触发告警);
- 告警与模板:配置邮件/短信通知,创建通用监控模板,批量应用到LNMP组件。
2. Prometheus + Grafana:开源监控+可视化组合
适合需要灵活定制的场景,擅长时间序列数据存储与可视化:
- Prometheus:作为时间序列数据库,通过Exporter收集指标(如Nginx Exporter获取Nginx状态、MySQL Exporter获取MySQL指标、Node Exporter获取系统指标);
- Grafana:连接Prometheus,创建仪表盘展示关键指标(如Nginx QPS、MySQL慢查询数、系统负载),支持折线图、柱状图等多种可视化形式;
- 告警规则:在Prometheus中配置告警规则(如PHP-FPM活跃进程数超过50),通过Alertmanager发送通知。
3. 第三方APM工具:全链路性能监控
适合需要深入代码级分析的场景,提供应用性能全景视图:
- New Relic/Datadog:集成Nginx、MySQL、PHP,监控请求响应时间、数据库查询性能、PHP代码热点(如慢函数、高耗时API),支持实时告警与根因分析;
- Blackfire.io:专注于PHP性能分析,提供代码级调用图、内存占用分析,帮助优化PHP代码性能。
三、自动化运维:脚本与自动恢复
1. 自定义监控脚本
编写Shell脚本定期检查服务状态,异常时自动重启并记录日志:
#!/bin/bash
# 获取当前时间
TIME=$(date '+%Y-%m-%d %H:%M:%S')
# 检查php-fpm服务
if ! netstat -anp | grep php-fpm | grep -q 'LISTEN';
then
systemctl restart php-fpm
echo "$TIME php-fpm服务异常,已重启" >
>
/var/log/lnmp_monitor.log
fi
# 检查mysql服务
if ! systemctl is-active --quiet mysql;
then
systemctl restart mysql
echo "$TIME mysql服务异常,已重启" >
>
/var/log/lnmp_monitor.log
fi
# 检查nginx服务
if ! systemctl is-active --quiet nginx;
then
systemctl restart nginx
echo "$TIME nginx服务异常,已重启" >
>
/var/log/lnmp_monitor.log
fi
- 定时任务:将脚本添加到
crontab
,设置为每分钟执行一次(* * * * * /path/to/script.sh
)。
2. 日志轮转
使用logrotate
工具定期压缩、删除旧日志,避免日志文件过大占用磁盘空间:
- 编辑
/etc/logrotate.conf
或创建/etc/logrotate.d/lnmp
文件,添加以下配置(以Nginx为例):
上述配置表示每天轮转日志,保留7天,压缩旧日志,轮转后重新加载Nginx。/var/log/nginx/*.log { daily missingok rotate 7 compress delaycompress notifempty create 0640 www-data adm sharedscripts postrotate systemctl reload nginx > /dev/null 2> & 1 || true endscript }
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: LNMP环境下如何监控
本文地址: https://pptw.com/jishu/724175.html