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 | iostat [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [ -j { ID | LABEL | PATH | UUID | ... } ] [ [ -T ] -g group_name ] [ |
安装
1 | [root@localhost ~]# yum -y install sysstat |
使用
1 | [root@localhost ~]# iostat |
使用示例
- 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 | -j { ID | LABEL | PATH | UUID | ... } [ device [...] | ALL ] |
输出报告
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
2sudo yum install epel-release -y
sudo yum install iotop-c -y
源码安装:
下载源码,可以使用 git clone
下载源码,也可以使用 wget
命令下载源码压缩包
Debian/Devuan/Ubuntu/其它衍生品
1
2
3
4apt install git build-essential libncurses-dev libncursesw5-dev pkg-config -y
git clone https://github.com/Tomas-M/iotop
cd iotop
make -jFedora
1
2
3
4dnf install git gcc make ncurses-devel pkgconfig -y
git clone https://github.com/Thomas-M/iotop
cd iotop
make -jCentOS 7/CentOS 8/RHEL 7/RHEL 8
1
2
3
4yum 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 | 下载 |
执行安装:
1 | sudo cd iotop/ |
版本更新:
更新到最新的版本
1 | cd iotop && git checkout master && git pull && make clean && make -j |
使用
1 | [root@localhost ~]# iotop |
键盘控制:
- 向左和向右方向键更改排序列。
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 | -v, --version 显示版本号并退出 |
输出报告
在界面顶部显示采样周期内读取和写入的总 I/O 带宽。磁盘读取总数和写总数
- DISK READ 和 DISK WRITE 是采样期间使用的块 I/O 带宽。
- SWAPIN 和 IO 是线程在换入和等待 I/O 时分别花费的时间百分比。
- PRIO 是线程运行的 I/O 优先级(使用 ionice 命令设置)。
DISK WRITE:值表示一侧的进程和内核线程与另一侧的内核块设备子系统之间的总读写带宽。
Current DISK READ 和 Current DISK WRITE 值表示内核块设备子系统和底层硬件(HDD、SSD 等)之间当前磁盘 I/O 的相应带宽。因此,由于 Linux 内核中发生的数据缓存和 I/O 操作重新排序,Total 和 Current 值在任何给定时刻可能不相等。
Linux:监视系统信息top,free,netstat,iostat,vmstat,iotop
http://blog.gxitsky.com/2022/01/07/Linux-Command-10-system-stat/