Linux系统监控三板斧:top/htop/glances 从入门到专家级实战指南

系统监控三板斧:top/htop/glances 从入门到专家级实战指南

一、工具全景对比与适用场景

工具核心优势典型场景安装方式
top系统自带/无需安装/资源占用最低应急故障排查/老服务器apt install procps (默认预装)
htop交互式操作/进程树视图/鼠标支持日常监控/进程管理sudo apt install htop
glances全维度监控/API接口/跨平台支持集中监控/趋势分析pip install glances

二、关键指标深度解析与故障诊断

1. 负载(Load Average) - 系统健康的晴雨表

top - 14:30:01 up 60 days, load avg: 2.8, 1.4, 0.6
  • 黄金法则

    • 安全范围:load < CPU核心数 × 0.7
    • 4核服务器:2.8 > 4×0.7=2.8临界状态
  • 三级负载含义

    时间窗口反映问题类型诊断工具
    1分钟突发流量/进程爆炸pidstat -u 1
    5分钟持续压力vmstat 5
    15分钟基线负载sar -q

2. CPU使用率分解 - 定位性能瓶颈

%Cpu(s): 15.3 us,  8.2 sy,  0.0 ni, 76.2 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
  • 核心指标

    • us(user) > 60% → 应用代码优化问题
    • sy(system) > 20% → 内核/驱动异常
    • wa(iowait) > 5% → 磁盘性能瓶颈
  • 诊断命令链

    # 定位高CPU进程
    ps -eo pid,comm,%cpu --sort=-%cpu | head -10
    
    # 分析系统调用
    perf top -g -p $(pidof java)
    

3. 内存迷宫破解 - 理解Linux内存模型

KiB Mem : 16G total,  1.2G free,   5G used,  9.8G buff/cache
  • 内存类型真相

    • buff/cache ≠ 浪费!包含文件缓存(可快速释放)
    • 真实内存压力看 available 列(内核3.14+)
  • 内存泄漏检测

    # 监控进程内存增长
    watch -n 1 'ps -eo pid,comm,rss --sort=-rss | head -20'
    
    # 检测内存泄漏工具
    valgrind --leak-check=full ./your_app
    

三、高手定制技巧:打造专属监控系统

1. top 企业级配置方案

创建 ~/.toprc 配置文件:

RCfile for "top with windows" 
Id:a, Mode_altscr=0, Mode_irixps=1, Delay_time=2.000, 
    Curwin=0
Def fieldscur=AEHIOQTWKNMbcdfgjplrsuvyzX 
    winflags=64777, sortindx=10, maxtasks=0
    summclr=6, msgsclr=2, headclr=3, taskclr=2

参数解析

  • Delay_time=2:刷新间隔2秒
  • sortindx=10:默认按CPU排序(10=MEM%)
  • winflags=64777:启用彩色/任务计数等

2. htop 高级操作手册

快捷键功能高级用法
F2配置界面添加自定义传感器
F6排序菜单按IO速率/VIRT内存排序
F9信号发送SIGRTMIN+3 实时调试信号
Space标记进程批量操作标记进程
U筛选用户进程u root 只看root进程

进程树分析案例

# 定位Java应用线程泄漏
htop -p $(pgrep java) → 按H切线程视图 → 观察线程数增长

3. glances 构建监控中枢

Web仪表板部署

glances -w --disable-webui  # 禁用内置UI
配合Grafana + InfluxDB方案:
┌──────────┐     ┌─────────┐     ┌─────────┐
│ glances  │───▶│ InfluxDB│───▶│ Grafana │
└──────────┘     └─────────┘     └─────────┘

docker-compose.yml配置

services:
  glances:
    image: nicolargo/glances
    command: --export influxdb2 --export-influxdb2-token mytoken
    environment:
      - INFLUXDB2_HOST=influxdb
  influxdb:
    image: influxdb:2.0
  grafana:
    image: grafana/grafana

四、报警集成:生产环境实战方案

1. 阈值触发自动化响应

# CPU连续5分钟>80%时重启服务
glances --alert cpu:80 --alert-min 5m -x 'systemctl restart nginx'

# 内存泄漏检测:进程RSS>10GB时抓取堆快照
glances --alert-process:rss:10G:java -x 'jmap -dump:live,format=b,file=/tmp/heapdump.hprof $(pidof java)'

2. 企业级报警路由

glances --export prometheus  # 输出到Prometheus
配合Alertmanager实现:
├── 邮件通知
├── 短信报警
└── 企业微信机器人

3. 容器监控特殊配置

# 监控Docker容器内部
docker run -it --pid=host --net=host nicolargo/glances

# K8s部署DaemonSet
kubectl apply -f https://glances.run/k8s-daemonset.yaml

五、扩展工具链:专业监控生态

1. 性能剖析三剑客

工具监控焦点使用场景
nmon历史性能分析nmon -f -s 60 -c 1440 全天记录
bpftrace内核级追踪bpftrace -e 'tracepoint:syscalls:sys_enter_* { @[probe] = count(); }'
sysdig安全监控sysdig -c topprocs_cpu container.name=web

2. 可视化方案推荐

  • 终端仪表板gotop / btop++
  • Web控制台Netdata(实时) + Zabbix(历史)
  • 云原生方案: Prometheus + Grafana + Node Exporter

3. 硬件监控进阶

# 温度传感器读取
sensors
# 输出:
asus-isa-0000
Adapter: ISA adapter
CPU:         +45.0°C  
GPU:         +52.0°C

# 磁盘健康监控
smartctl -a /dev/sda

终极建议:当常规工具无法定位性能问题时,使用Linux perf 工具进行火焰图分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值