1. 网络情况监控
1.1 netstat 命令
netstat -options [t=tcp] [u=udp] [l=listening] [a=all] [n=numeric] [p=program]
netstat -ntlp
netstat -anp
netstat -anp|more
netstat -anp|grep sshd
1.2 ifstat 命令
ifstat工具是个网络接口监测工具,比较简单看网络流量
1.3 iftop 命令
- iftop是一款实时流量监控工具,监控TCP/IP连接等,缺点就是无报表功能。必须以root身份才能运行。
- 通过iftop的界面很容易找到哪个ip在霸占网络流量,这个是ifstat做不到的。
结果说明
显示项 | 显示说明 |
---|---|
TX | 发送流量 |
RX:接收流量 | |
TOTAL:总流量 | |
Cumn: 运行iftop 到目前时间的总流量 | |
peak:流量峰值 | |
rates: 过去 2s 10s 40s的平均流量 | |
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumn: 运行iftop 到目前时间的总流量
peak:流量峰值
rates: 过去 2s 10s 40s的平均流量
Note :
iftop的流量显示单位是Mb,这个b是bit,是位,不是字节,而ifstat的KB,这个B就是字节了,byte是bit的8倍。初学者容易被误导。
2. 磁盘监控
2.1. 磁盘整体情况 df
df -h
df -lh
2.2. 查看指定目录的磁盘占用情况 du
du命令是对文件和目录磁盘使用的空间的查看
语法
du [option] [dir path]
参数说明
- 指定目录占用大小汇总 (-s)
- 带计量单位 (-h)
- 包含文件 (-a)
- 子目录深度 (–max-depth=n)
示例
查看opt目录的磁盘占用情况,深度为2
du -ach --max-depth=2 /opt
查看当前用户家目录的磁盘占用情况,深度为2
du -ach --max-depth=2 ~/
查看指定目录的所占空间
du -scf
2.3. 磁盘IO 情况(iostat)
iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
安装
yum install -y sysstat
语法
iostat [选项] [参数]
选项
option | description |
---|---|
-c: | 仅显示CPU使用情况; |
-d: | 仅显示设备利用率; |
-k: | 显示状态以千字节每秒为单位,而不使用块每秒; |
-m: | 显示状态以兆字节每秒为单位; |
-p: | 仅显示块设备和所有被使用的其他分区的状态; |
-t: | 显示每个报告产生时的时间; |
-V: | 显示版号并退出; |
-x: | 显示扩展状态。 |
参数
间隔时间:每次报告的间隔时间(秒)
次数:显示报告的次数
示例
查看磁盘I/O的详细情况
[root@localhost ~]# iostat -x
Linux 3.10.0-1062.12.1.el7.x86_64 (localhost.localdomain) 04/12/2020 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.02 0.00 0.06 0.01 0.00 99.92
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.02 0.03 0.07 1.35 1.32 52.24 0.00 13.89 9.19 16.08 3.27 0.03
scd0 0.00 0.00 0.00 0.00 0.01 0.00 114.22 0.00 1.22 1.22 0.00 1.00 0.00
dm-0 0.00 0.00 0.03 0.09 1.28 1.31 46.67 0.00 29.93 11.14 35.65 2.98 0.03
dm-1 0.00 0.00 0.00 0.00 0.01 0.00 50.09 0.00 1.17 1.17 0.00 1.08 0.00
查看 sda 的详细情况
[root@localhost ~]# iostat -x sda
Linux 3.10.0-1062.12.1.el7.x86_64 (localhost.localdomain) 04/12/2020 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.02 0.00 0.06 0.01 0.00 99.92
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.02 0.03 0.07 1.35 1.33 52.20 0.00 13.88 9.19 16.06 3.26 0.03
输出说明
option | description |
---|---|
Device | 监测设备名称 |
rrqm/s | 每秒需要读取需求的数量 |
wrqm/s | 每秒需要写入需求的数量 |
r/s | 每秒实际读取需求的数量 |
w/s | 每秒实际写入需求的数量 |
rsec/s | 每秒读取区段的数量 |
wsec/s | 每秒写入区段的数量 |
rkB/s | 每秒实际读取的大小,单位为KB |
wkB/s | 每秒实际写入的大小,单位为KB |
avgrq-sz | 需求的平均大小区段 |
avgqu-sz | 需求的平均队列长度 |
await | 等待I/O平均的时间(milliseconds) |
svctm | I/O需求完成的平均时间 |
%util | 被I/O需求消耗的CPU百分比 |
2.4. 所有磁盘可用块设备信息(lsblk)
lsblk命令用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,cd-ROM等等。lsblk命令包含在util-linux-ng包中,现在该包改名为util-linux。这个包带了几个其它工具,如dmesg。要安装lsblk,请在此处下载util-linux包。Fedora用户可以通过命令sudo yum install util-linux-ng来安装该包。
选项
-a, --all 显示所有设备。
-b, --bytes 以bytes方式显示设备大小。
-d, --nodeps 不显示 slaves 或 holders。
-D, --discard print discard capabilities。
-e, --exclude <list> 排除设备 (default: RAM disks)。
-f, --fs 显示文件系统信息。
-h, --help 显示帮助信息。
-i, --ascii use ascii characters only。
-m, --perms 显示权限信息。
-l, --list 使用列表格式显示。
-n, --noheadings 不显示标题。
-o, --output <list> 输出列。
-P, --pairs 使用key="value"格式显示。
-r, --raw 使用原始格式显示。
-t, --topology 显示拓扑结构信息。
示例
[root@localhost ~]# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 39G 0 part
├─centos-root 253:0 0 37G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 4.4G 0 rom
说明
option | description |
---|---|
NAME | 这是块设备名。 |
MAJ:MIN | 本栏显示主要和次要设备号。 |
RM | 本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。 |
SIZE | 本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB,而1K表明该设备大小为1KB。 |
RO | 该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。 |
TYPE | 本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。 |
MOUNTPOINT | 本栏指出设备挂载的挂载点。 |
3. 内存监控
方式1. 使用 free 命令
命令演示
free -g
free -m
free -h
结果说明
- total:内存总数
- used:已经使用的内存数
- free:空闲的内存数
- shared:当前已经废弃不用
- buffers Buffer:缓存内存数
- cached Page:缓存内存数
Note :
total = used + free
方式2. 使用 top 命令
4. 整机监控
top 命令
vmstat
vmstat命令的含义为显示虚拟内存状态(“Virtual Memory Statistics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。
语法
vmstat [选项] [参数]
选项
option | description |
---|---|
a: | 显示活动内页; |
f: | 显示启动后创建的进程总数; |
m: | 显示slab信息; |
n: | 头信息仅显示一次; |
s: | 以表格方式显示事件计数器和内存状态; |
d: | 报告磁盘状态; |
p: | 显示指定的硬盘分区状态; |
S: | 输出信息的单位。 |
参数
参数1 时间间隔:状态信息刷新的时间间隔
参数2 次数:显示报告的次数
说明
Procs(进程)
r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)
b: 等待IO的进程数量。
Memory(内存)
swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
free: 空闲物理内存大小。
buff: 用作缓冲的内存大小。
cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。
Swap
si: 每秒从交换区写到内存的大小,由磁盘调入内存。
so: 每秒写入交换区的内存大小,由内存调入磁盘。
Note:
内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
IO(现在的Linux版本块的大小为1kb)
bi: 每秒读取的块数
bo: 每秒写入的块数
Note:
随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。
system(系统)
in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
Note:上面2个值越大,会看到由内核消耗的CPU时间会越大。
CPU(以百分比表示)
us: 用户进程执行时间百分比(user time)
us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
sy: 内核系统进程执行时间百分比(system time)
sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
wa: IO等待时间百分比
wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
id: 空闲时间百分比
sar
sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。
语法
sar [选项] [参数]
选项
-A:显示所有的报告信息;
-b:显示I/O速率;
-B:显示换页状态;
-c:显示进程创建活动;
-d:显示每个块设备的状态;
-e:设置显示报告的结束时间;
-f:从指定文件提取报告;
-i:设状态信息刷新的间隔时间;
-P:报告每个CPU的状态;
-R:显示内存状态;
-u:显示CPU利用率;
-v:显示索引节点,文件和其他内核表的状态;
-w:显示交换分区状态;
-x:显示给定进程的状态。
参数
参数1 间隔时间:每次报告的间隔时间(秒)
参数2 次数:显示报告的次数