Linux LAMP怎样监控系统资源
导读:Linux LAMP系统资源监控实操指南 一 系统级监控命令与用法 CPU与进程 实时与交互:top、htop(按CPU/内存排序,定位占用最高的进程) 多核与历史:mpstat -P ALL 1(逐核使用率)、sar -u 1 3(查...
Linux LAMP系统资源监控实操指南
一 系统级监控命令与用法
- CPU与进程
- 实时与交互:top、htop(按CPU/内存排序,定位占用最高的进程)
- 多核与历史:mpstat -P ALL 1(逐核使用率)、sar -u 1 3(查看历史/当前CPU利用率)
- 内存
- 快速概览:free -h
- 虚拟内存与上下文:vmstat 1 5
- 更细内存占用:smem -r -k
- 磁盘空间与目录
- 挂载点使用:df -h
- 目录占用:du -sh /var/log /var/lib/mysql /var/www/html
- 磁盘I/O
- 设备层统计:iostat -x 1 3
- 进程级I/O:iotop
- 综合资源:dstat
- 网络
- 连接与端口:ss -tuln、netstat -tulnp
- 带宽与流量:nload、iftop
- 抓包分析:tcpdump
- 历史与持续记录
- 系统活动回放:sar(需启用sysstat收集)
- 带历史记录监控:atop
以上命令覆盖CPU、内存、磁盘、网络等关键资源,适合快速排障与持续巡检。
二 LAMP各组件的关键监控点
- Apache
- 运行状态:systemctl status apache2
- 实时连接与热点:apachetop
- 启用模块与状态页:加载mod_status后访问**/server-status查看总请求、Worker/进程状态、每秒请求数**等
- MySQL
- 服务与连接:systemctl status mysql;mysqladmin status、mysqladmin processlist
- 关键指标:Threads_connected、Queries、Slow_queries、Innodb_buffer_pool_read_hit(命中率)、Threads_running
- 慢查询分析:pt-query-digest分析慢查询日志
- PHP
- 进程管理:systemctl status php7.x-fpm
- 错误与性能:tail -f /var/log/php7.x-fpm.log;使用Xdebug或New Relic APM定位慢函数与调用栈
- 端口与服务可达性
- 快速核验:ss -tulnp | egrep ‘:(80|443|3306|9000)’
以上要点覆盖运行状态、连接数、命中率、慢查询、错误日志等核心维度,便于定位瓶颈。
- 快速核验:ss -tulnp | egrep ‘:(80|443|3306|9000)’
三 日志与可视化监控
- 日志集中与回放
- 系统日志:journalctl -xe、/var/log/syslog、/var/log/messages
- Web与数据库错误:tail -f /var/log/apache2/{ access,error} .log、tail -f /var/log/mysql/error.log
- 报表与告警:Logwatch生成HTML/邮件日报
- 可视化与长期监控
- 统一监控:Nagios、Zabbix、Prometheus + Grafana(拉取Node Exporter/MySQL Exporter/Apache Exporter等指标,构建仪表盘与阈值告警)
- 轻量自托管:Glances支持Web/API方式查看资源
通过日志与可视化平台,可实现趋势分析、阈值告警、容量规划与7×24可视化。
四 5分钟快速巡检脚本
#!/usr/bin/env bash
echo "=== Uptime &
Load ===";
uptime
echo "=== CPU &
Memory ===";
mpstat -P ALL 1 1;
free -h
echo "=== Disk Space ===";
df -h
echo "=== Top Memory Processes ===";
ps -eo pid,ppid,cmd,%mem --sort=-%mem | head -10
echo "=== Top CPU Processes ===";
ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head -10
echo "=== Apache Status ===";
systemctl is-active apache2 &
&
apachectl status || echo "Apache not running"
echo "=== MySQL Status ===";
systemctl is-active mysql &
&
mysqladmin --relative --sleep 1 --count 5 extended-status | egrep "Threads_connected|Queries|Slow_queries" || echo "MySQL not running"
echo "=== Listening Ports ===";
ss -tulnp | egrep ':(80|443|3306|9000)'
echo "=== Recent Apache Errors ===";
tail -n50 /var/log/apache2/error.log | tail
将脚本加入crontab定时执行,输出重定向到日志文件,用于日常巡检与回溯。
五 告警阈值与优化建议
- 建议阈值与动作
- CPU:> 80%持续5分钟 → 检查慢查询/外部负载,考虑扩容或限流
- 内存:可用< 10%或Swap使用> 5% → 优化应用内存、减少缓存占用、扩容内存
- 磁盘:可用< 20% → 清理**/var/log、/var/lib/mysql**归档与慢查询日志,扩容磁盘
- Apache:CPU> 70%或平均响应时间升高 → 启用mod_status定位热点,优化KeepAlive/MPM与静态资源缓存
- MySQL:Threads_connected接近上限、Slow_queries增长 → 优化SQL与索引,增加连接数或连接池,启用慢查询日志
- 常用优化方向
- Web层:启用压缩、浏览器缓存、CDN,减少后端压力
- DB层:合理设置innodb_buffer_pool_size,定期分析与优化表,分库分表与读写分离
- 应用层:使用OPcache与连接池,减少PHP-FPM进程争用与重启频率
上述阈值与动作可作为基线策略,需结合业务特性与压测结果微调。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux LAMP怎样监控系统资源
本文地址: https://pptw.com/jishu/754705.html
