Linux:监视系统信息top,free,netstat,iostat,vmstat,iotop

https://blog.csdn.net/qq_21082615/article/details/91429475

综合监控

monit

dstat

nmon

saidar

https://linoxide.com/monitor-linux-saidar-tool/

监控CPU

top

atop

htop

slabtop

监控内存

Free

监控网络

netstat

iptraf

ss

iproute2

https://github.com/iptraf-ng/iptraf-ng

https://linux.cn/article-5430-1.html

https://commandnotfound.cn/linux/1/526/iptraf%E3%80%81iptraf-ng-%E5%91%BD%E4%BB%A4

https://www.jianshu.com/p/cb69f9806722

解决办法:iptraf-ng包的二进制文件是iptraf-ng。使用命令iptraf-ng即可 iptraf-ng iptraf-ng

监控连接数

监控IO使用

vmstat

pidstat

mpstat

iostat

介绍

iostat:报告设备和分区的中央处理单元 (CPU) 统计信息和输入/输出统计信息。

iostat 命令用于监视系统输入/输出设备负载,方法是观察设备的活动时间与其平均传输速率的关系。 iostat 命令生成的报告可用于更改系统配置以更好地平衡物理磁盘之间的输入/输出负载。

iostat 命令生成的第一个报告提供有关系统启动时间的统计信息,除非使用 -y 选项(在这种情况下,第一个报告被省略)。每个后续报告都涵盖自上次报告以来的时间。每次运行 iostat 命令时都会报告所有统计信息。该报告包含一个 CPU 标题行,后跟一行 CPU 统计信息。在多处理器系统上,CPU 统计数据在系统范围内计算为所有处理器的平均值。将显示一个设备标题行,然后是一行已配置的每个设备的统计信息。
间隔参数指定每个报告之间的时间量(以秒为单位)。第一个报告包含自系统启动(引导)以来的时间统计信息,除非使用 -y 选项(在这种情况下,该报告被省略)。每个后续报告都包含自上次报告以来的时间间隔内收集的统计信息。计数参数可以与间隔参数一起指定。如果指定了 count 参数,count 的值决定了间隔秒生成的报告数量。
如果在没有 count 参数的情况下指定了 interval 参数,iostat 命令会连续生成报告。

语法

1
2
iostat [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [ -j { ID | LABEL | PATH | UUID | ... } ] [ [ -T ] -g group_name ] [
-p [ device [,...] | ALL ] ] [ device [...] | ALL ] [ interval [ count ] ]

安装

1
[root@localhost ~]# yum -y install sysstat

使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@localhost ~]# iostat
Linux 3.10.0-1160.45.1.el7.x86_64 (localhost.localdomain) 2022年01月07日 _x86_64_ (8 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
1.30 0.00 0.51 0.28 0.00 97.91

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 8.27 9.91 206.93 42895973 895390325
dm-0 0.51 0.51 4.39 2214702 18997907
dm-1 7.80 9.40 202.53 40663901 876373359
dm-2 0.00 0.00 0.00 1249 3338

[root@localhost ~]# iostat -x
Linux 3.10.0-1160.45.1.el7.x86_64 (localhost.localdomain) 2022年01月07日 _x86_64_ (8 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
1.30 0.00 0.51 0.28 0.00 97.91

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.05 0.12 8.15 9.91 206.93 52.45 0.40 48.78 29.50 49.06 7.17 5.92
dm-0 0.00 0.00 0.01 0.50 0.51 4.39 19.07 0.03 54.44 38.44 54.90 20.73 1.07
dm-1 0.00 0.00 0.10 7.70 9.40 202.53 54.34 0.38 48.53 28.74 48.79 6.37 4.97
dm-2 0.00 0.00 0.00 0.00 0.00 0.00 31.00 0.00 36.77 9.09 50.47 10.32 0.00

使用示例

  • iostat:CPU 和设备的启动报告以来的单个历史记录。
  • iostat -d 2:以两秒为间隔显示连续的设备报告。
  • iostat -d 2 6:以两秒的间隔为所有设备显示六个报告。
  • iostat -x sda sdb 2 6:以两秒为间隔显示设备 sda 和 sdb 的六个扩展统计报告。
  • iostat -p sda 2 6:两秒为间隔显示设备 sda 及其所有分区(sda1 等)的六个报告

可选参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-j { ID | LABEL | PATH | UUID | ... } [ device [...] | ALL ]
显示永久设备名称。 选项 ID、LABEL 等指定持久名称的类型。 这些选项没有限制,唯一的前提是 /dev/disk 中存在具有所需持久名称的目录。或者,可以在所选的持久名称类型中指定多个设备。由于持久设备名称通常很长,因此此选项会隐式启用选项 -h。

-k 以千字节每秒显示统计信息。
-m 以每秒兆字节显示统计信息。
-N 显示任何设备映射器设备的已注册设备映射器名称。 用于查看 LVM2 统计信息。

-p [ { device [,...] | ALL } ]
-p 选项显示系统使用的块设备及其所有分区的统计信息。
如果在命令行中输入了设备名称,则会显示该设备及其所有分区的统计信息。
最后,ALL 关键字表示必须显示系统定义的所有块设备和分区的统计信息,包括那些从未使用过的。
如果在此选项之前定义了选项 -j,则可以使用所选的持久名称类型指定在命令行上输入的设备。

-T 此选项必须与选项 -g 一起使用,表示仅显示组的全局统计信息,而不显示组中单个设备的统计信息。
-t 打印显示的每个报告的时间。 时间戳格式可能取决于 S_TIME_FORMAT 环境变量的值(见下文)。
-V 打印版本号然后退出。
-x 显示扩展统计信息。
-y 如果在给定的时间间隔内显示多个记录,则省略自系统启动以来的第一个带有统计信息的报告。
-z 告诉 iostat 忽略采样期间没有活动的任何设备的输出。

输出报告

iostat 命令生成两种类型的报告,CPU 利用率报告和设备利用率报告。

CPU 使用率报告:

iostat 命令生成的第一个报告是 CPU 利用率报告。对于多处理器系统,CPU 值是所有进程的全局平均值。报告如下:

  • %user:显示在用户级别(应用程序)执行时发生的 CPU 利用率百分比。
  • %nice:显示在具有良好优先级的用户级别执行时发生的 CPU 利用率百分比。
  • %system:显示在系统级别(内核)执行时发生的 CPU 利用率百分比。
  • %iowait:显示系统有未完成的磁盘 I/O 请求期间一个或多个 CPU 空闲的时间百分比。
  • %steal:显示当虚拟机管理程序为另一个虚拟处理器提供服务时,一个或多个虚拟 CPU 花费在非自愿等待上的时间百分比。
  • %idle:显示一个或多个 CPU 空闲且系统没有未完成的磁盘 I/O 请求的时间百分比。

设备利用率报告:

iostat 命令生成的第二个报告是设备利用率报告。 设备报告提供基于每个物理设备或分区的统计信息。 可以在命令行上输入要显示其统计信息的块设备和分区。
如果没有输入设备或分区,那么系统使用的每个设备都会显示统计信息,并提供内核维护它的统计信息。
如果在命令行中给出 ALL 关键字,那么系统定义的每个设备都会显示统计信息,包括那些从未使用过的设备。

默认情况下,传输速率以 1K 块为单位显示,除非设置了环境变量 POSIXLY_CORRECT,在这种情况下使用 512 字节块。 报告可能会显示以下字段,具体取决于使用的标志:

  • Device:此列提供 /dev 目录中列出的设备(或分区)名称。
  • tps:指示发送到设备的每秒传输次数。 传输是对设备的 I/O 请求。 多个逻辑请求可以合并为一个对设备的 I/O 请求。 传输的大小不确定。
  • **Blk_read/s (kB_read/s, MB_read/s)**:指示从设备读取的数据量,以每秒块数(千字节、兆字节)表示。 块相当于扇区,因此大小为 512 字节。
  • **Blk_wrtn/s (kB_wrtn/s, MB_wrtn/s)**:指示写入设备的数据量,以每秒块数(千字节、兆字节)表示。
  • **Blk_read (kB_read, MB_read)**:读取的块总数(千字节、兆字节)。
  • **Blk_wrtn (kB_wrtn, MB_wrtn)**:写入的块总数(千字节、兆字节)。
  • rrqm/s:排队到设备的每秒合并的读取请求数。
  • wrqm/s:排队到设备的每秒合并的写入请求数。
  • r/s:设备每秒完成的读取请求数(合并后)。
  • w/s:设备每秒完成的写入请求数(合并后)。
  • **rsec/s (rkB/s, rMB/s)**:每秒从设备读取的扇区数(千字节、兆字节)。
  • **wsec/s (wkB/s, wMB/s)**:每秒写入设备的扇区数(千字节、兆字节)。
  • avgrq-sz:向设备发出的请求的平均大小(以扇区为单位)。
  • avgqu-sz:向设备发出的请求的平均队列长度。
  • await:向要服务的设备发出的 I/O 请求的平均时间(以毫秒为单位)。 这包括队列中的请求所花费的时间以及为它们提供服务所花费的时间。
  • r_await:向要服务的设备发出读取请求的平均时间(以毫秒为单位)。 这包括队列中的请求所花费的时间以及为它们提供服务所花费的时间。
  • w_await:向要服务的设备发出写入请求的平均时间(以毫秒为单位)。 这包括队列中的请求所花费的时间以及为它们提供服务所花费的时间。
  • svctm:向设备发出的 I/O 请求的平均服务时间(以毫秒为单位)。 警告! 不要再相信此字段了,在未来的 sysstat 版本中会被删除。
  • %util:向设备发出 I/O 请求所用时间的百分比(设备的带宽利用率)。当该值接近 100% 时,会发生器件饱和。

相关命令

sar、pidstat、mpstat、vmstat、nfsiostat、cifsiostat

iotop

介绍

iotop:简单的类似top的 I/O 监视器

iotop 监视 Linux 内核中可用的 I/O 使用信息并显示系统上进程或线程的当前 I/O 使用表。

iotop 显示采样期间每个进程/线程读取和写入的 I/O 带宽列。它还显示线程/进程在换入和等待 I/O 时花费的时间百分比。对于每个进程,显示其 I/O 优先级(类/级别)。

不建议将 iotop 用于基准测试,它更适合实时监控而不是重复的性能测试。若对 I/O 基准测试感兴趣,可以试试 Fio 这个工具。

https://blog.csdn.net/qianfeng_dashuju/article/details/80326146

https://blog.csdn.net/qq_37242520/article/details/90259671

https://www.cnblogs.com/mython/p/10985378.html

https://www.cnblogs.com/mython/p/10985378.html

https://os.51cto.com/art/202011/632193.htm

https://linux.cn/article-3215-1.html

https://www.cmsky.com/netdata/

https://blog.51cto.com/u_14012942/2432250

安装

二进制包安装

Linux 默认不会自带此命令,需要手动安装,安装时可能需要升级 gcc 版本Github > iotop

  • Debian/Devuan/Ubuntu/其它衍生品

    1
    sudo apt install iotop-c -y
  • Fedora

    1
    sudo dnf install iotop-c -y
  • CentOS 7/CentOS 8/RHEL 7/RHEL 8

    1
    2
    sudo yum install epel-release -y
    sudo yum install iotop-c -y

源码安装

下载源码,可以使用 git clone下载源码,也可以使用 wget命令下载源码压缩包

  • Debian/Devuan/Ubuntu/其它衍生品

    1
    2
    3
    4
    apt install git build-essential libncurses-dev libncursesw5-dev pkg-config -y
    git clone https://github.com/Tomas-M/iotop
    cd iotop
    make -j
  • Fedora

    1
    2
    3
    4
    dnf install git gcc make ncurses-devel pkgconfig -y
    git clone https://github.com/Thomas-M/iotop
    cd iotop
    make -j
  • CentOS 7/CentOS 8/RHEL 7/RHEL 8

    1
    2
    3
    4
    yum install git gcc make ncurses-devel pkgconfig -y
    git clone https://github.com/Thomas-M/iotop
    cd iotop
    make -j

或者下载源码压缩包到本地,再解压缩安装。

CentOS 7/CentOS 8/RHEL 7/RHEL 8

1
2
3
4
#下载
wget https://github.com/Tomas-M/iotop/archive/refs/tags/v1.20.tar.gz
#解压缩
tar zxvf v1.20.tar.gz

执行安装

1
2
sudo cd iotop/
sudo make install

版本更新

更新到最新的版本

1
cd iotop && git checkout master && git pull && make clean && make -j

使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@localhost ~]# iotop
Total DISK READ: 0.00 B/s ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ | Total DISK WRITE: 0.00 B/s ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
Current DISK READ: 0.00 B/s ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ | Current DISK WRITE: 0.00 B/s ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
TID PRIO USER DISK READ DISK WRITE SWAPIN IO GRAPH▽ COMMAND
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ systemd ▲
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ kthreadd █
4 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ kworker/0:0H █
6 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ksoftirqd/0
7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ migration/0
8 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ rcu_bh
9 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ rcu_sched
10 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ lru-add-drain
11 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ watchdog/0
12 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ watchdog/1
13 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ migration/1
14 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ksoftirqd/1
.......

键盘控制:

  • 向左和向右方向键更改排序列。
  • r或空格反转排序顺序。
  • o 切换 –only 选项(这使用 GRAPH 列或 IO 列中的可见值,以防 GRAPH 列隐藏)。
  • p 切换 –processes 选项。
  • a 切换 –accumulated 选项。
  • i 更改线程或进程线程的优先级。
  • f 更改 UID/PID 过滤(–user 和 –pid 选项)。
  • 1-9 切换各列的可见性
  • 0 显示所有列
  • 向上/ 向下/ Page Up/ Page Downs/ HOME/ END:向上/向下/向上翻页/向下翻页/回到主页/结束
  • q 退出,任何其他键强制刷新。

可选参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
-v, --version         显示版本号并退出
-h, --help 显示帮助信息并退出
-o, --only 只显示实际执行 I/O 的进程或线程
-b, --batch 非交互模式
-n NUM, --iter=NUM 显示输出打印次数
-d SEC, --delay=SEC 迭代之间的延迟 [1 second]
-p PID, --pid=PID 要监控的进程/线程 [all]
-u USER, --user=USER 需要监控的用户 [all]
-P, --processes 只显示进程,而不是所有线程
-a, --accumulated 显示累积的 I/O 而不是带宽
-k, --kilobytes 使用千字节而不是人类友好的单位
-t, --time 在每一行上添加一个时间戳(implies --batch)
-c, --fullcmdline 显示完整的命令行
-1, --hide-pid 隐藏 PID/TID column
-2, --hide-prio 隐藏 PRIO column
-3, --hide-user 隐藏 USER column
-4, --hide-read 隐藏 DISK READ column
-5, --hide-write 隐藏 DISK WRITE column
-6, --hide-swapin 隐藏 SWAPIN column
-7, --hide-io 隐藏 IO column
-8, --hide-graph 隐藏 GRAPH column
-9, --hide-command 隐藏 COMMAND column
-q, --quiet 抑制某些标题行 (implies --batch)
-x, --dead-x 用字母 x 显示死进程/线程

输出报告

在界面顶部显示采样周期内读取和写入的总 I/O 带宽。磁盘读取总数和写总数

  • DISK READDISK WRITE 是采样期间使用的块 I/O 带宽。
  • SWAPINIO 是线程在换入和等待 I/O 时分别花费的时间百分比。
  • PRIO 是线程运行的 I/O 优先级(使用 ionice 命令设置)。

DISK WRITE:值表示一侧的进程和内核线程与另一侧的内核块设备子系统之间的总读写带宽。

Current DISK READ 和 Current DISK WRITE 值表示内核块设备子系统和底层硬件(HDD、SSD 等)之间当前磁盘 I/O 的相应带宽。因此,由于 Linux 内核中发生的数据缓存和 I/O 操作重新排序,Total 和 Current 值在任何给定时刻可能不相等。

https://www.cnblogs.com/peter316/p/6287212.html

Linux:监视系统信息top,free,netstat,iostat,vmstat,iotop

http://blog.gxitsky.com/2022/01/07/Linux-Command-10-system-stat/

作者

光星

发布于

2022-01-07

更新于

2023-03-06

许可协议

评论