# 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` - 看监控要结合趋势、场景和其他系统指标一起分析