强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

系统监控工具指南 / 第1章:监控工具概览与选型

第1章:监控工具概览与选型

1.1 为什么需要监控工具

监控的重要性

系统监控是IT运维的核心环节,它帮助我们:

  1. 及时发现问题 - 在用户投诉前发现性能瓶颈
  2. 快速定位故障 - 缩短故障排查时间(MTTR)
  3. 容量规划 - 基于历史数据预测资源需求
  4. 性能优化 - 识别系统瓶颈并针对性优化

监控的三个层次

┌─────────────────────────────────────────────┐
│         应用层监控 (Application)             │
│  例:响应时间、错误率、QPS                    │
├─────────────────────────────────────────────┤
│         系统层监控 (System)                   │
│  例:CPU、内存、磁盘、网络                    │
├─────────────────────────────────────────────┤
│         基础设施层监控 (Infrastructure)       │
│  例:服务器状态、网络连通性                   │
└─────────────────────────────────────────────┘

本指南重点关注系统层监控,介绍各种命令行监控工具。

1.2 监控工具分类

按监控维度分类

类别 监控对象 代表工具
进程监控 CPU、内存、进程状态 top, htop, atop, btop
网络监控 带宽、流量、连接 iftop, nload, vnstat
磁盘监控 IO、使用率、性能 iostat, iotop
综合监控 多维度全面监控 Glances, dstat, nmon, SAR

按数据采集方式分类

方式 特点 代表工具
实时监控 实时显示当前状态 top, htop, iftop, nload
历史记录 记录数据供后续分析 SAR, vnstat, atop
两者兼顾 实时监控+历史记录 Glances, atop

按界面类型分类

类型 特点 代表工具
终端文本 轻量、SSH友好 top, htop, btop
图形化 直观、易读 nload, collectl
Web界面 远程访问、可分享 Glances Web, Grafana

1.3 主流监控工具详解

1.3.1 top - 经典进程监控

简介: Linux系统自带的实时进程监控工具,无需额外安装。

主要特性:

  • 显示系统概览(负载、CPU、内存)
  • 实时进程列表
  • 支持排序和过滤
  • 可发送信号管理进程

适用场景:

  • 快速查看系统状态
  • 临时排查CPU/内存问题
  • 服务器无外网环境

基本用法:

# 直接运行
top

# 按CPU排序(运行后按P)
# 按内存排序(运行后按M)
# 按进程ID排序(运行后按N)

1.3.2 htop - 增强版进程监控

简介: top的增强版本,提供更友好的交互界面。

主要特性:

  • 彩色界面显示
  • 支持鼠标操作
  • 树状进程视图
  • 横向/纵向滚动
  • 直接发送信号

适用场景:

  • 日常系统管理
  • 进程父子关系分析
  • 需要交互式操作

基本用法:

# 安装
sudo apt install htop  # Debian/Ubuntu
sudo yum install htop  # CentOS/RHEL

# 运行
htop

# 常用快捷键
# F5: 树状视图
# F6: 选择排序列
# F9: 发送信号
# 空格: 标记进程

1.3.3 atop - 高级系统监控

简介: 高级系统与进程监控工具,支持历史数据回放。

主要特性:

  • 记录历史数据(默认保存28天)
  • 支持时间点回放
  • 详细的磁盘、网络监控
  • 资源消耗统计

适用场景:

  • 事后故障分析
  • 长期性能趋势分析
  • 需要查看历史状态

基本用法:

# 安装
sudo apt install atop
sudo yum install atop

# 实时监控
atop

# 查看历史数据(2小时前)
atop -r /var/log/atop/atop_20260510 -b 14:00

# 查看今天的记录
atop -r

1.3.4 btop - 现代化监控工具

简介: 现代化终端监控工具,界面美观且功能丰富。

主要特性:

  • 精美的终端界面
  • 支持主题定制
  • 鼠标操作支持
  • 详细的硬件信息

适用场景:

  • 追求美观界面
  • 演示环境展示
  • 多核CPU详细监控

基本用法:

# 安装
sudo apt install btop
# 或使用snap
sudo snap install btop

# 运行
btop

# 快捷键
# 1-4: 切换面板
# m: 显示菜单
# t: 树状视图
# q: 退出

1.3.5 iftop - 网络流量监控

简介: 实时网络流量监控工具,显示主机间流量。

主要特性:

  • 实时显示网络流量
  • 按主机对显示流量
  • 支持端口显示
  • 可过滤特定主机

适用场景:

  • 排查网络带宽问题
  • 识别流量异常主机
  • 分析网络连接

基本用法:

# 安装
sudo apt install iftop
sudo yum install iftop

# 监控指定接口
sudo iftop -i eth0

# 显示端口
sudo iftop -P

# 过滤特定主机
sudo iftop -f "host 192.168.1.100"

1.3.6 nload/vnstat - 带宽监控

简介: nload提供实时带宽图形,vnstat记录历史数据。

nload特性:

  • 图形化显示入站/出站流量
  • 显示平均值、最小值、最大值
  • 轻量级

vnstat特性:

  • 按小时/天/月统计
  • 数据持久化存储
  • 低资源消耗

基本用法:

# nload
sudo apt install nload
nload eth0

# vnstat
sudo apt install vnstat
sudo systemctl enable vnstat
sudo systemctl start vnstat

# 查看统计
vnstat          # 月度统计
vnstat -d       # 每日统计
vnstat -h       # 每小时统计

1.3.7 vmstat/iostat/SAR - 系统级监控

简介: 系统性能监控三剑客,提供详细的系统资源统计。

vmstat: 虚拟内存统计 iostat: IO统计 SAR: 系统活动报告

适用场景:

  • 性能基准测试
  • 瓶颈定位
  • 历史数据分析

基本用法:

# vmstat - 每秒刷新,共5次
vmstat 1 5

# iostat - 扩展信息,每秒刷新
iostat -x 1

# SAR - 查看CPU使用率
sar -u 1 5

# SAR - 查看历史数据
sar -u -f /var/log/sysstat/sa10

1.3.8 Glances - 综合监控平台

简介: 跨平台系统监控工具,支持Web界面和API。

主要特性:

  • 全面监控(CPU、内存、磁盘、网络、传感器)
  • Web界面支持
  • RESTful API
  • 告警功能
  • 数据导出

适用场景:

  • 统一监控界面
  • 远程监控需求
  • 与其他系统集成

基本用法:

# 安装
pip install glances
# 或
sudo apt install glances

# 运行
glances

# Web模式
glances -w

# 服务器模式
glances -s

# 客户端连接
glances -c server_ip

1.3.9 dstat/nmon - 多维监控

简介: dstat和nmon提供多维度系统监控。

dstat特性:

  • 替代vmstat/iostat/netstat
  • 彩色输出
  • 插件扩展
  • CSV导出

nmon特性:

  • 交互式菜单
  • 详细报告生成
  • 性能数据分析

基本用法:

# dstat
sudo apt install dstat
dstat -cdnm  # CPU、磁盘、网络、内存

# nmon
sudo apt install nmon
nmon         # 交互式界面
nmon -f -s 10 -c 360  # 后台采集,每10秒一次,共1小时

1.4 工具选型对比矩阵

功能对比

功能 top htop atop btop iftop nload vnstat vmstat iostat SAR Glances dstat nmon
CPU监控
内存监控
磁盘监控
网络监控
进程监控
历史数据
Web界面
API支持

性能与资源消耗

工具 CPU占用 内存占用 安装包大小 启动速度
top 极低 极低 系统自带 极快
htop ~200KB
atop 中等 中等 ~500KB 中等
btop 中等 中等 ~2MB 中等
iftop ~100KB
nload ~100KB
vnstat 极低 极低 ~200KB
vmstat 极低 极低 系统自带 极快
iostat 极低 极低 ~100KB 极快
SAR ~200KB
Glances 中等 中等 ~5MB 中等
dstat ~200KB
nmon ~300KB

1.5 场景化选型指南

场景1:临时服务器巡检

需求: 快速检查服务器状态,时间紧迫

推荐方案:

# 第一步:系统负载
uptime

# 第二步:CPU和内存
top -bn1 | head -20

# 第三步:磁盘空间
df -h

# 第四步:网络连接
ss -tuln

备选工具: htop(更直观)

场景2:性能问题排查

需求: 系统响应慢,需要定位瓶颈

推荐方案:

# CPU瓶颈
top -o %CPU
pidstat -u 1 5

# 内存瓶颈
free -h
vmstat 1 5

# 磁盘IO瓶颈
iostat -x 1 5
iotop -o

# 网络瓶颈
iftop -i eth0
nload eth0

场景3:长期监控与容量规划

需求: 持续监控系统,收集历史数据

推荐方案:

# 方案A:使用SAR(sysstat)
sudo apt install sysstat
sudo systemctl enable sysstat
# 数据存储在 /var/log/sysstat/

# 方案B:使用atop
sudo apt install atop
sudo systemctl enable atop
# 数据存储在 /var/log/atop/

# 方案C:使用vnstat(网络)
sudo apt install vnstat
sudo systemctl enable vnstat

数据分析:

# SAR - 查看历史CPU
sar -u -f /var/log/sysstat/sa$(date +%d -d yesterday)

# atop - 回放历史
atop -r

# vnstat - 网络统计
vnstat -d  # 按天
vnstat -m  # 按月

场景4:容器环境监控

需求: 监控Docker容器资源使用

推荐方案:

# Docker内置监控
docker stats

# cAdvisor(Web界面)
docker run -d \
  --name=cadvisor \
  -p 8080:8080 \
  -v /:/rootfs:ro \
  -v /var/run:/var/run:ro \
  -v /sys:/sys:ro \
  -v /var/lib/docker/:/var/lib/docker:ro \
  google/cadvisor:latest

# Glances(支持容器)
glances --enable-plugin docker

场景5:网络流量分析

需求: 分析服务器网络流量,排查带宽问题

推荐方案:

# 实时流量监控
sudo iftop -i eth0 -P  # 显示端口

# 带宽趋势
nload eth0

# 长期统计
vnstat -l  # 实时模式
vnstat     # 统计报告

场景6:多服务器统一监控

需求: 监控多台服务器,集中展示

推荐方案:

方案 复杂度 适用规模
Glances集群 5-20台
Prometheus+Grafana 中等 10-100台
Zabbix 100+台
# Glances服务器模式
# 服务器端
glances -s --bind 0.0.0.0

# 客户端
glances -c server_ip

1.6 安装配置汇总

一键安装所有工具

#!/bin/bash
# install-monitoring-tools.sh

# Debian/Ubuntu
install_debian() {
    sudo apt update
    sudo apt install -y \
        htop \
        atop \
        btop \
        iftop \
        nload \
        vnstat \
        sysstat \
        dstat \
        nmon \
        iotop \
        glances
}

# CentOS/RHEL
install_centos() {
    sudo yum install -y epel-release
    sudo yum install -y \
        htop \
        atop \
        iftop \
        nload \
        vnstat \
        sysstat \
        dstat \
        nmon \
        iotop \
        glances
}

# 检测系统并安装
if [ -f /etc/debian_version ]; then
    install_debian
elif [ -f /etc/redhat-release ]; then
    install_centos
else
    echo "Unsupported OS"
    exit 1
fi

# 启用后台服务
sudo systemctl enable --now sysstat
sudo systemctl enable --now atop
sudo systemctl enable --now vnstat

echo "安装完成!"

基础配置

# 配置SAR数据保留天数
sudo sed -i 's/HISTORY=28/HISTORY=90/' /etc/sysstat/sysstat

# 配置atop数据保留天数
sudo sed -i 's/LOGGENERATIONS=28/LOGGENERATIONS=90/' /etc/default/atop

# 启用vnstat
sudo systemctl enable vnstat
sudo systemctl start vnstat

1.7 学习路线图

初级阶段(1-2周)

Week 1: top基础 → htop交互 → df/free基础命令
Week 2: vmstat基础 → iostat基础 → 综合练习

学习目标:

  • 掌握基本系统状态查看
  • 理解CPU、内存、IO指标含义
  • 能够识别明显性能问题

中级阶段(2-4周)

Week 3: atop深入 → iftop网络 → nload/vnstat
Week 4: SAR使用 → dstat/nmon → 综合排查

学习目标:

  • 掌握历史数据分析
  • 能够定位具体性能瓶颈
  • 理解各指标间的关联

高级阶段(持续学习)

Week 5+: Glances高级 → 容器监控 → 监控系统搭建

学习目标:

  • 搭建完整监控体系
  • 制定监控策略与告警
  • 性能优化实践

1.8 注意事项

生产环境使用注意

  1. 资源消耗: 高频刷新可能影响性能

    # 降低刷新频率
    top -d 5      # 5秒刷新
    iostat -x 5   # 5秒刷新
    
  2. 权限要求: 某些工具需要root权限

    # 使用sudo
    sudo iftop
    sudo iotop
    
    # 或使用capabilities
    sudo setcap cap_net_raw+ep /usr/sbin/iftop
    
  3. 数据安全: 监控数据可能包含敏感信息

    • 限制监控数据访问权限
    • 定期清理历史数据

常见误区

误区 正确理解
CPU使用率高=性能差 需结合负载均衡、等待队列综合判断
内存使用率高=内存不足 Linux会利用空闲内存做缓存
swap使用=内存不足 需查看si/so换入换出频率
磁盘使用率高=IO瓶颈 需查看await、%util等IO指标

1.9 扩展阅读

推荐书籍

  • 《Systems Performance: Enterprise and the Cloud》- Brendan Gregg
  • 《Linux Performance Optimization》- Igor Ljubuncic

在线资源

工具官方文档

1.10 本章小结

本章介绍了Linux系统监控工具的整体生态,包括:

  1. 监控的重要性: 及时发现问题、快速定位故障、容量规划
  2. 工具分类: 按监控维度、数据采集方式、界面类型
  3. 主流工具: top/htop/atop/btop/iftop/nload/vnstat/vmstat/iostat/SAR/Glances/dstat/nmon
  4. 选型指南: 功能对比、性能对比、场景化推荐
  5. 学习路径: 从初级到高级的渐进式学习

下一章我们将深入学习 top 命令的详细用法。


下一章: 第2章:top详解