强曰为道

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

第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 工具选型对比矩阵

功能对比

功能tophtopatopbtopiftopnloadvnstatvmstatiostatSARGlancesdstatnmon
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台
Zabbix100+台
# 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详解