Linux资源监控:CPU/内存/磁盘监控指南

引言

Linux系统监控就像汽车的"仪表盘",实时展示着各个核心部件的运行状态!本文将带你全面掌握Linux系统资源监控的方方面面,从CPU、内存到磁盘I/O、网络流量,从基础命令到高级工具,从实时监控到历史数据分析。无论你是要优化服务器性能,还是排查系统瓶颈,这篇文章都会成为你的监控宝典!准备好终端,让我们一起开启这场系统性能探索之旅吧~

系统监控
CPU
内存
磁盘
网络
综合工具

一、CPU 监控

1.1 实时监控工具

top                     # 经典CPU监控工具
htop                    # 增强版top(需安装)
mpstat -P ALL 1         # 每核CPU使用率(需安装sysstat)

1.2 关键指标

  • 用户空间占用:非内核进程消耗的CPU
  • 系统空间占用:内核操作消耗的CPU
  • I/O等待:CPU等待I/O的时间比例
  • 空闲时间:CPU空闲时间比例

1.3 高级分析

perf top                # 性能计数器分析
sar -u 1 3             # 历史CPU数据(需安装sysstat)
pidstat -u 1           # 进程级CPU使用率

二、内存监控

2.1 基本命令

free -h                # 内存使用概览(人类可读格式)
vmstat 1               # 虚拟内存统计
cat /proc/meminfo      # 详细内存信息

2.2 关键指标

指标 含义
MemTotal 总物理内存
MemFree 完全空闲内存
MemAvailable 实际可用内存(包括缓存可回收部分)
Buffers 块设备缓存
Cached 文件系统缓存
Swap 交换空间使用情况

2.3 高级工具

smem -s swap -r        # 按内存使用排序(需安装smem)
valgrind --tool=massif ./program  # 应用程序内存分析

三、磁盘 I/O 监控

3.1 基本工具

iostat -xz 1           # 磁盘I/O统计
iotop                  # 类似top的I/O监控(需安装)
dstat -d               # 磁盘活动监控

3.2 关键指标

  • %util:设备使用率(>60%可能成为瓶颈)
  • await:平均I/O等待时间(毫秒)
  • svctm:服务时间(实际I/O操作时间)
  • r/s, w/s:每秒读写次数

3.3 深度分析

blktrace -d /dev/sda -o - | blkparse -i -  # 块设备跟踪
sar -d 1 3             # 历史磁盘活动数据

四、网络监控

4.1 基本命令

iftop                 # 实时带宽监控(需安装)
nload                 # 网络负载监控(需安装)
ip -s link            # 网络接口统计
netstat -tulnp        # 活动连接和监听端口
ss -s                 # 更现代的socket统计

4.2 关键指标

  • RX/TX:接收/发送数据量
  • 错误/丢包:error/drop计数器
  • 连接状态:ESTABLISHED/TIME_WAIT等

4.3 高级分析

tcpdump -i eth0 -n -w capture.pcap  # 抓包分析
nicstat 1            # 详细网络接口统计(需安装)
nethogs              # 按进程统计带宽(需安装)

五、综合监控工具

5.1 经典工具

vmstat 1             # 综合CPU/内存/IO
dstat -tcmnd         # 综合CPU/内存/网络/磁盘
glances              # 图形化综合监控(需安装)

5.2 现代工具

nmon                 # 专业性能监控(需安装)
bpytop               # Python编写的高级监控(需安装)
prometheus + grafana # 企业级监控方案

六、日志与历史数据

6.1 sar工具(sysstat包)

sar                  # 查看所有历史数据
sar -q 1 3           # 查看运行队列和负载
sar -W 1 3           # 查看交换统计
sar -n DEV 1 3       # 查看网络历史

6.2 配置数据收集

# 编辑sysstat配置(通常位于)
/etc/sysconfig/sysstat  # RHEL/CentOS
/etc/default/sysstat    # Debian/Ubuntu

# 调整收集频率(默认10分钟)
SADC_OPTIONS="-S XALL 10 3"  # 每10秒采样,保留3天

七、进程级资源监控

7.1 基本命令

ps aux --sort=-%cpu | head  # CPU使用前10进程
ps aux --sort=-%mem | head  # 内存使用前10进程

7.2 高级分析

pidstat 1           # 进程级CPU/内存/IO统计
pmap -x PID         # 进程内存映射详情
strace -c -p PID    # 统计系统调用

八、报警与自动化监控

8.1 简单阈值检测

# CPU使用率超过90%报警
if [ $(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d. -f1) -gt 90 ]; then
    echo "High CPU usage!" | mail -s "Alert" [email protected]
fi

8.2 专业监控方案

  • Zabbix:企业级监控
  • Nagios:经典告警系统
  • Prometheus + Alertmanager:云原生监控
  • Netdata:实时性能监控

九、容器资源监控

9.1 Docker监控

docker stats        # 实时容器资源使用
docker inspect --format='{{.State.Pid}}' container  # 获取容器PID

9.2 Kubernetes监控

kubectl top nodes   # 节点资源使用
kubectl top pods    # Pod资源使用

十、最佳实践

  1. 建立基线:记录系统正常时的指标范围
  2. 分层监控:硬件→OS→应用→业务层级监控
  3. 合理采样:高频监控生产系统(1-5秒间隔)
  4. 日志轮转:配置logrotate防止日志占满磁盘
  5. 告警优化:避免告警疲劳,设置合理阈值
  6. 可视化:使用Grafana等工具创建仪表盘

总结

通过本文的系统学习,我们已经构建了完整的Linux监控知识体系:

  1. 核心组件:CPU/内存/磁盘/网络全方位监控
  2. 工具链:从命令行工具到可视化平台 ️
  3. 高级应用:容器监控与自动化告警
  4. 最佳实践:构建企业级监控方案

监控黄金法则

  • 指标可视化:一图胜千言
  • 告警可操作:每个告警都应有应对方案 ️
  • 历史可追溯:问题复现与趋势分析

记住:没有监控的系统就像盲人骑瞎马! 现在就去部署你的监控系统,让一切尽在掌握!✨


PS:如果你在学习过程中遇到问题,别慌!欢迎在评论区留言,我会尽力帮你解决!

你可能感兴趣的:(linux,服务器,运维)