Linux性能监控:工具与最佳实践

news2025/5/26 0:13:00

引言

在Linux系统管理中,性能监控是确保系统健康运行的关键环节。无论是排查系统瓶颈、优化资源分配,还是预防潜在问题,有效的监控工具和技术都能为管理员提供宝贵的数据支持。本文将介绍Linux性能监控的核心工具、方法论和最佳实践。

一、基础监控工具

1. top - 实时进程监控

`top`是最基础的实时系统监控工具,提供CPU、内存使用情况和运行进程的概览。

```bash
top - 15:30:45 up 2 days,  5:12,  3 users,  load average: 0.15, 0.21, 0.18
Tasks: 120 total,   2 running, 118 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.3 us,  2.1 sy,  0.0 ni, 92.4 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7856.4 total,   1024.2 free,   4096.0 used,   2736.2 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   3248.4 avail Mem
```

**关键指标解读**:
- load average:系统负载(1分钟、5分钟、15分钟平均值)
- %Cpu:用户空间(us)、内核空间(sy)、空闲(id)、等待I/O(wa)等CPU使用情况
- 内存:总内存、空闲内存、已用内存和缓存使用情况

2. vmstat - 系统资源统计

`vmstat`提供系统进程、内存、分页、块IO、陷阱和CPU活动的信息。

```bash
vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 1048572 274432 2801152    0    0    12    24  101  156  5  2 93  0  0
```

3. iostat - I/O监控

`iostat`用于监控系统输入/输出设备负载。

```bash
iostat -xz 1
Linux 5.4.0-91-generic (hostname)     01/15/2023     _x86_64_    (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.32    0.00    2.10    0.20    0.00   92.38

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda              2.50    1.20    100.00     48.00     0.00     0.20   0.00  14.29    0.80    1.20   0.00    40.00    40.00   0.80   0.30
```

二、高级监控工具

 1. htop - 增强型进程监控

`htop`是`top`的增强版,提供彩色界面、垂直和水平滚动、鼠标操作等特性。

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

2. nmon - 综合性能监控

`nmon`是一个强大的交互式性能监控工具,可以监控CPU、内存、磁盘、网络等。

启动nmon:
```bash
nmon
```

常用快捷键:
- c: CPU使用率
- m: 内存使用情况
- d: 磁盘I/O
- n: 网络
- t: 进程信息

3. dstat - 全能系统统计工具

`dstat`结合了vmstat、iostat、ifstat等多种工具的功能。

```bash
dstat -cdngy 1
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
  5   2  93   0   0   0|  20k   10k|   0     0 |   0     0 | 100   150
```

三、网络监控工具

1. iftop - 实时带宽监控

`iftop`显示网络接口的实时带宽使用情况。

```bash
sudo iftop -i eth0
```

2. nload - 网络流量可视化

`nload`提供简单的网络流量图形化显示。

```bash
nload eth0
```

3. netstat/ss - 网络连接统计

```bash
ss -tulnp  # 显示所有监听端口和连接
netstat -s # 显示网络统计信息
```

四、日志与长期监控

1. sar - 系统活动报告

`sar`是sysstat工具包的一部分,用于收集、报告和保存系统活动信息。

查看CPU使用历史:
```bash
sar -u
```

查看内存使用历史:
```bash
sar -r
```

2. Prometheus + Grafana

对于生产环境,建议使用专业的监控解决方案:

- **Prometheus**:开源监控系统,支持多维数据模型
- **Grafana**:强大的可视化仪表板工具

典型架构:
```
Node Exporter -> Prometheus -> Grafana
```

五、性能监控方法论

1. USE方法(利用率、饱和度、错误)

针对每个资源检查:
- 利用率(Utilization):资源繁忙时间百分比
- 饱和度(Saturation):资源过载程度
- 错误(Errors):错误事件计数

2. RED方法(速率、错误、持续时间)

适用于服务监控:
- 速率(Rate):请求数/秒
- 错误(Errors):失败请求数
- 持续时间(Duration):请求处理时间

六、性能调优建议

1. **CPU瓶颈**:
   - 使用`perf`分析热点函数
   - 考虑CPU亲和性(taskset)
   - 优化并行处理

2. **内存瓶颈**:
   - 调整swappiness值
   - 优化应用内存使用
   - 考虑使用大页内存

3. **I/O瓶颈**:
   - 使用更快的存储设备
   - 优化文件系统(ext4/xfs)
   - 调整I/O调度器

4. **网络瓶颈**:
   - 优化TCP参数
   - 考虑网络绑定(bonding)
   - 使用更快的网络设备

七、自动化监控脚本示例

```bash
#!/bin/bash

# 简单的性能监控脚本
LOG_FILE="/var/log/system_monitor.log"

while true; do
    TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
    CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
    MEM_USAGE=$(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2 }')
    DISK_USAGE=$(df -h | awk '$NF=="/"{printf "%s", $5}')
    
    echo "$TIMESTAMP - CPU: $CPU_USAGE%, Memory: $MEM_USAGE, Disk: $DISK_USAGE" >> $LOG_FILE
    
    # 检查临界值并发送警报
    if (( $(echo "$CPU_USAGE > 90" | bc -l) )); then
        echo "High CPU usage detected: $CPU_USAGE%" | mail -s "CPU Alert" admin@example.com
    fi
    
    sleep 60
done
```

结语

有效的Linux性能监控需要结合多种工具和方法。从基础的`top`、`vmstat`到专业的Prometheus+Grafana解决方案,管理员应根据实际需求选择合适的工具。记住,监控的目的不仅是发现问题,更重要的是预测和预防问题。建立完善的监控体系,定期审查性能数据,才能确保系统长期稳定运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2385706.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows11 安装 jupyter lab

1、安装python环境 略 2、安装jupyterlab pip install jupyterlab 3、将jupyterlab的目录配置到path pip show jupyterlab 看到location的值,那么 jupyterlab就安装在与之同级的Scripts下,将Scripts目录设置在Path即可。

【算法】:动态规划--背包问题

背包问题 引言 什么是背包问题? 背包问题就是一个有限的背包,给出一定的物品,如何合理的装入物品使得背包中的物品的价值最大? 01背包 01背包,顾名思义就是每一种给定的物品要么选择,要么不选&#xff…

Nginx核心功能

目录 前言一. 正向代理1.配置正向代理(1)添加正向代理(2)验证正向代理 二. 反向代理1.配置nginx七层代理(1)环境安装(2)配置nginx七层代理转发(3)测试 2. 配置…

upload-labs通关笔记-第15关 文件上传之图片马getimagesize绕过

系列目录 upload-labs通关笔记-第1关 文件上传之前端绕过(3种渗透方法) upload-labs通关笔记-第2关 文件上传之MIME绕过-CSDN博客 upload-labs通关笔记-第3关 文件上传之黑名单绕过-CSDN博客 upload-labs通关笔记-第4关 文件上传之.htacess绕过-CSDN…

【游戏设计】游戏玩法与游戏机制

在游戏设计中,“玩法”(Gameplay)和“机制”(Game Mechanic)是两个频繁出现但容易混淆的概念。许多新手开发者、设计师甚至玩家常常将两者混为一谈。本文将通过定义、对比和案例解析的方式,清晰地阐明二者的…

Spring的资源Resource和ResourceLoader

两者区别和联系 Resource 和ResourceLoader 都是 Spring 框架中用于资源访问的接口 Resource 是“资源本身”,ResourceLoader 是“资源工厂/加载器”,负责创建 Resource。 ​ Resource:Spring 统一抽象的“资源”对象,可以表示文件、类路径下的文件、U…

【AI实战】从“苦AI”到“爽AI”:Magentic-UI 把“人类-多智能体协作”玩明白了!

Hello,亲爱的小伙伴们!你是否曾经在深夜里,为了自动化点外卖、筛机票、抓网页数据焦头烂额?有没有幻想过哪天能出个“贴心AI管家”,一键点菜、搞定事务、自动操作网页,比你还懂你?更关键——还让…

Linux之 SPI 驱动框架- spi-mem 框架

一、框架变更的历程 1.1 旧框架图 1.2 新框架图 那么问题来了, 为什么要开发新的 SPI 存储器接口? 有了这个新的框架, SPI NOR 和SPI NAND 都可以基于相同的SPI控制器驱动进行支持了。m25p80 驱动将被修改成,使用spi-mem 接口&a…

振动分析 - 献个宝

1.一个自制的振动能量分析工具 这个分析工具似乎真的定位到了故障的具体位置。 1.1对一组实验室虚拟信号的分析结果: 1.2 对现场真实数据的分析结果 依照边频带的调制,和边频的缝隙宽度,基本定位到问题。 追加几份待看的文档: 齿轮结构的频谱特征 - 知乎使用 FFT 获得…

【论文阅读】——D^3-Human: Dynamic Disentangled Digital Human from Monocular Vi

文章目录 摘要1 引言2 相关工作3 方法3.1 HmSDF 表示3.2 区域聚合3.3. 变形场3.4. 遮挡感知可微分渲染3.5 训练3.5.1 训练策略3.5.2 重建损失3.5.3 正则化限制 4. 实验4.1 定量评估4.2 定性评价4.3 消融研究4.4 应用程序 5 结论 摘要 我们介绍 D 3 D^{3} D3人,一种…

高分辨率北半球多年冻土数据集(2000-2016)

关键数据集分类&#xff1a;冰冻圈数据集时间分辨率&#xff1a;10 year < x < 100 year空间分辨率&#xff1a;1km - 10km共享方式&#xff1a;开放获取数据大小&#xff1a;339.79 MB数据时间范围&#xff1a;2000-01-01 — 2016-12-31元数据更新时间&#xff1a;2022-…

基于开源AI智能名片链动2+1模式S2B2C商城小程序的管理与运营策略研究

摘要&#xff1a;本文通过分析开源AI智能名片链动21模式S2B2C商城小程序的技术架构与商业逻辑&#xff0c;探讨其在企业管理与运营中的实践价值。结合案例研究&#xff0c;论证该模式如何通过清晰的目标设定、动态反馈机制和资源整合能力&#xff0c;提升团队执行力与客户粘性。…

储能电站:风光储一体化能源中心数字孪生

在 “双碳” 目标引领下&#xff0c;我国能源产业加速向清洁低碳、绿色化转型&#xff0c;风能、太阳能等可再生能源的开发利用成为关键。然而&#xff0c;风能和太阳能的波动性、间歇性与随机性&#xff0c;给大规模接入电网带来挑战。储能技术的兴起&#xff0c;为解决这一难…

9. 现代循环神经网络

文章目录 9.1. 门控循环单元&#xff08;GRU&#xff09;9.1.1. 门控隐状态9.1.1.1. 重置门和更新门9.1.1.2. 候选隐状态9.1.1.3. 隐状态 9.1.2. 从零开始实现9.1.2.1. 初始化模型参数9.1.2.2. 定义模型 9.1.3. 简洁实现9.1.4. 小结 9.2. 长短期记忆网络&#xff08;LSTM&#…

视频太大?用魔影工厂压缩并转MP4,画质不打折!

在日常生活中&#xff0c;我们常常需要将视频文件转换成不同的格式以适应各种设备或平台的播放需求。魔影工厂作为一款功能强大且操作简单的视频转换工具&#xff0c;深受用户喜爱。本文中简鹿办公将手把手教你如何使用魔影工厂将视频转换为MP4格式&#xff0c;并进行个性化设置…

最宽温度范围文本格式PT1000分度表-200~850度及PT1000铂电阻温度传感器计算公式

常用PT铂电阻温度传感器 该图片来自网络&#xff0c;在此对图片作者表示感谢。 白色陶瓷面为测温面。 近距离图片。 常用的有PT100、PT500、PT1000&#xff0c;不常用的还有 PT50、PT200、PT10000等&#xff0c;PT代表铂电阻&#xff0c;后面的数字是零摄氏度时电阻值&#…

机器学习算法-sklearn源起

scikit-learn&#xff08;简称 sklearn&#xff09;是 Python 中最流行的开源机器学习库之一&#xff0c;基于 NumPy、SciPy 和 Matplotlib 构建。它提供了丰富的机器学习算法和工具&#xff0c;适用于数据挖掘和数据分析任务。以下是其核心特点的简介&#xff1a; 1、sklearn主…

注册并创建一个微信小程序

目录 &#xff08;一&#xff09;前往微信公众平台&#xff0c;并注册一个微信小程序账号 &#xff08;二&#xff09;配置微信小程序 &#xff08;三&#xff09;创建微信小程序项目 1.流程 1.1获取小程序ID 1.2下载微信开发者工具 1.3安装微信开发者工具 2.创建项目…

计算机网络——每一层的用到的设备及其作用

计算机网络基础 OSI参考模型TCP/IP协议族集线器&#xff08;Hub&#xff09;交换机&#xff08;Switch&#xff09;路由器&#xff08;Router&#xff09;功能特点无线路由器&#xff08;家庭宽带&#xff09;光猫功能 网关&#xff08;Gateway&#xff09;功能应用场景特点 IP…

【Web前端】JavaScript入门与基础(一)

JavaScript简介 JavaScript 是一种轻量级的脚本语言。所谓“脚本语言”&#xff0c;指的是它不具备开发操作系统的能力&#xff0c;而是只用来编写控制其他大型应用程序的“脚本”。 JavaScript 是一种嵌入式&#xff08;embedded&#xff09;语言。它本身提供的核心语法不算…