wiki/运维/Linux/笔记/33.监控指标.md
2026-04-08 19:40:00 +08:00

146 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Linux 监控指标
## 1、监控指标概览
做 Linux 监控时,不要只盯某一个指标,而是要结合 CPU、内存、磁盘、网络、进程等多个维度一起看。
这篇先整理最常见的 CPU 指标,再补充观察思路。
## 2、CPU 相关指标
Linux 中 CPU 指标常可从 `/proc/stat` 获取,也可以通过 `top``sar``vmstat` 等工具观察。
```shell
cat /proc/stat | grep '^cpu '
```
示例输出:
```text
cpu 123456 7890 123456 7890123 4567 0 0 0 0 0
```
这些字段是**累计时间片**,通常单位是 jiffies不是直接百分比。真正做监控时通常是采样两个时间点之间的增量再换算比例。
## 3、常见 CPU 指标说明
### 3.1 CPU idle
表示 CPU 空闲时间占比。
- 值高:说明 CPU 相对空闲
- 值低:说明 CPU 比较忙
### 3.2 CPU user
表示 CPU 花在**用户态程序**上的时间比例。
如果这个值高,说明大量时间花在用户进程执行上。
### 3.3 CPU system
表示 CPU 花在**内核态**上的时间比例。
如果这个值高,可能与系统调用频繁、网络栈、磁盘 I/O、内核开销增加等有关。
### 3.4 CPU iowait
表示 CPU 在等待 I/O 完成的时间比例。
如果 `iowait` 高,常见方向是:
- 磁盘压力大
- 网络存储慢
- 后端 I/O 阻塞
### 3.5 CPU irq
表示 CPU 花在硬中断上的时间比例。
如果这个值高,可能与硬件中断频繁有关,例如高网卡中断、高磁盘中断等。
### 3.6 CPU softirq
表示 CPU 花在软中断上的时间比例。
如果这个值高,常见和:
- 高网络流量
- 大量包处理
- 内核网络栈压力
有关。
## 4、如何理解这些指标
### 4.1 不是看单点,而是看组合
例如:
- `user` 高:更像业务代码或用户进程忙
- `system` 高:更像内核态开销大
- `iowait` 高:更像 I/O 瓶颈
- `softirq` 高:更像网络包处理压力大
### 4.2 不是看瞬时,而是看趋势
监控更重要的是:
- 持续升高还是偶发尖峰
- 单机异常还是集群共性
- 指标升高时,业务是否真的受影响
## 5、常用观察命令
### 5.1 `top`
```shell
top
```
### 5.2 `vmstat`
```shell
vmstat 1
```
### 5.3 `sar`
```shell
sar -u 1 5
```
### 5.4 `mpstat`
```shell
mpstat -P ALL 1
```
## 6、监控排障建议
### 6.1 CPU 高但 `idle` 也高
说明可能只是瞬时波动,或者不是 CPU 真正瓶颈。
### 6.2 `iowait` 高
优先联动查看:
- 磁盘 I/O
- 文件系统
- 后端存储
### 6.3 `softirq` 高
优先联动查看:
- 网卡流量
- 网卡中断
- 网络连接数
## 7、小结
- `/proc/stat` 中的 CPU 字段是累计值,不是直接百分比
- 高价值指标通常包括 `idle``user``system``iowait``irq``softirq`
- 看监控要结合趋势、场景和其他系统指标一起分析