Linux运维工具

1 linux磁盘监控工具

1.1. iostat

查看存储设备输入和输出状态统计的工具,用来追踪存储设备的性能 问题;包括设备,磁盘,NFS远程磁盘。

1
yum install sysstat

图1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
%user:    在用户级别运行所使用的CPU百分比

%nice:     优先进程消耗的CPU时间,占所有CPU百分比

%system:   在系统级别运行所使用的CPU百分比

%iowait:   cpu等待硬件I/O时,所占用的CPU百分比

%steal:     管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比

%idle:        CPU空闲时间的百分比

tps:         每秒发送到I/O的请求数

KB_read/s:    每秒读取的block数

KB_wrtn/s:    每秒写入的block数

KB_read:     启动到现在block总数

KB_wrtn:    启动到现在写入的block总数

系统systat包里的工具,以kB/s为单位统计,2表示以2秒为频率统计一次:
iostat –x –k 2 10000
图2

说明
rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);
wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。
rsec/s:每秒读取的扇区数;
wsec/s:每秒写入的扇区数。
rKB/s:每秒向设备发出的读取请求数;
wKB/s:每秒向设备发出的写入请求数;
avgrq-sz: 平均请求扇区的大小avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好。
await:每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
svctm: 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。
%util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的 %util = 0.8/1 =80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

1.2 iotop

1
yum install iotop

监控linux磁盘I/O, 用于查找大量使用磁盘读写进程的时候。python版本需要2.7以上。
-h: 查看帮助
图3

用法:iotop -d 1 -o
图4
-o:只显示有io操作的进程
-b:批量显示,无交互,主要用作记录到文件。
-n NUM:显示NUM次,主要用于非交互式模式。
-d SEC:间隔SEC秒显示一次。
-p PID:监控的进程pid。
-u USER:监控的进程用户。

常用快捷键

  1. 左右箭头:改变排序方式,默认是按IO排序。
  2. r:改变排序顺序。
  3. o:只显示有IO输出的进程。
  4. p:进程/线程的显示方式的切换。
  5. a:显示累积使用量。
  6. q:退出。

1.3 sar - 性能监控和瓶颈检查

1
yum install sysstat

sar –p –d 2 1000
图5
说明:
tps: 每秒向磁盘设备请求数据的次数,包括读、写请求,为rtps与wtps的和。出于效率考虑,每一次IO下发后并不是立即处理请求,而是将请求合并(merge),这里tps指请求合并后的请求计数。
rtps: 每秒向磁盘设备的读请求次数
wtps: 每秒向磁盘设备的写请求次数
bread: 每秒从磁盘读的bytes数量
bwrtn: 每秒向磁盘写的bytes数量

或者用:sar –b 2 1000
图6

1.4 dstat - 多类型资源统计工具

1
yum install dstat

dstat命令是一个用来替换vmstatiostatnetstatnfsstatifstat这些命令的工具,是一个全能系统信息统计工具。与sysstat相比,dstat拥有一个彩色的界面,在手动观察性能状况时,数据比较显眼容易观察;而且dstat支持即时刷新,譬如输入dstat 3即每三秒收集一次,但最新的数据都会每秒刷新显示。和sysstat相同的是,dstat也可以收集指定的性能资源,譬如dstat -c即显示CPU的使用情况。
图7

常用选项
-c:显示CPU系统占用,用户占用,空闲,等待,中断,软件中断等信息。.
-C:当有多个CPU时候,此参数可按需分别显示cpu状态,例:-C 0,1 是显示cpu0和cpu1的信息。
-d:显示磁盘读写数据大小。
-D hda,total:包括hda和总数。
-n:显示网络状态。
-N eth1,total:有多块网卡时,指定要显示的网卡。
-l:显示系统负载情况。
-m:显示内存使用情况。
-g:显示页面使用情况。
-p:显示进程状态。
-s:显示交换分区使用情况。
-S:类似D/N。
-r:I/O请求情况。
-y:系统状态。
--ipc:显示ipc消息队列,信号等信息。
--socket:用来显示tcp udp端口状态。
-a:此为默认选项,等同于-cdngy。
-v:等同于 -pmgdsc -D total。
--output 文件:此选项也比较有用,可以把状态信息以csv的格式重定向到指定的文件中,以便日后查看。例:dstat –output /root/dstat.csv & 此时让程序默默的在后台运行并把结果输出到/root/dstat.csv文件中。

2 Linux进程监控工具

2.1 top - 经典的Linux任务管理工具

显示所有正在运行而且处于活动状态的实时进程, 而且会定期更新显示结果;它显示了CPU使用率,内存使用率,交换内存使用大小,调整缓存使用大小,缓冲区使用大小,进程PID, 使用的命令等信息。

2.2 Htop - 更加友好的top

1
yum install htop

使用详解
一个非常高级的交互式实时linux进程监控工具,和top相似,但更友好, 还支持鼠标。

sudo apt-get install htop
图8

3 Linux网络监控工具

3.1 tcpdump - 洞察网络封包

1
apt-get install tcpdump

用于捕捉或过滤网络上指定接口上接收或者传输的TCP/IP包。

-i :网络接口

-c : 需要输出包数量
图9

3.2 netstat - 显示开放的端口和连接

使用详情
用于监控进出网络的包和网络接口统计的命令行工具,非常有用,用来监控网络性能,解决网络相关问题。

-h : 查看帮助

-r : 显示路由表

-i : 查看网络接口

图10

图11

3.3 iptraf - 网络性能工具

用于采集通过网络接口的IP流量信息,包括tcp标记,icmp信息,TCP,UDP信等。

1
2
3
$ sudo apt-get install iptraf

$ sudo iptraf

图12
图13
图14
图15

3.4 nethogs - 监视每个进程的网络带宽

监控每个进程使用的网络带宽

1
2
3
$ sudo apt-get install nethogs

$ sudo nethogs

图16

3.5 iftop - 类似top的网络带宽监控工具

监控网络接口的应用网络带宽使用情况

1
2
3
$ sudo apt-get install iftop

$ sudo iftop

图17

=>: 表示 流量方向

TX: 发送的流量

RX: 接收的流量

TOTAL: 总流量

Cumm: 运行iftop到目前总流量

peak: 流量峰会

rates: 分别表示 过去2秒,10秒,40秒的平均流量

4 Linux资源监控工具

4.1 vmstat - 虚拟内存统计信息

系统默认安装工具
图18

一般是通过两个数字参数来完成的,第一个参数是采样时间间隔,单位是秒, 第二个参数是采样的次数

r: 表示运行队列,如果队列过大说明CPU很繁忙,一般会造成CPU使用率高

b: 表示阻塞的进程数

swap: 虚拟内存已使用的大小,如果大于0,说明机器的物理内存不够了

free: 空闲的物理内存大小

buff: 系统占用的缓存大小(写缓存)

cache: 直接用来记忆我们打开的文件,给文件做缓冲,读缓存

si: 每秒从磁盘读入虚拟内存大小,如果这个值大于0,表示物理内存不足了

so: 每秒虚拟内存写入磁盘的大小,如果这个值大于0, 表示物理内存不足了

us: 用户cpu时间

sy: 系统CPU时间, 如果值 太高,说明系统调用,例如是IO操作频繁

id: 空闲CPU时间,一般来说 id + us + sy = 100

wt: 等待IO的CPU时间

1.3. lsof - 列表显示打开的文件

列出打开的文件;它常用于以列表形式显示所有打开的文件和进程,包括磁盘文件,网络套接字,管道,设备和进程。

主要情形之一就是 无法挂载磁盘和显示正在使用或者打开某个文件的错误时,查看谁正在使用。

1.12. system monitor

监控cpu,内存,进程,硬盘的信息;分为进程监控,资源监控,文件监控; 遗憾的是需要图形界面支持。

1
2
3
sudo apt-get install gnome-system-monitor

gnome-system-monitor

2、nmtui配置网卡

使用nmtui命令(上一篇博客里有介绍界面)

图19

参考资料

https://10.linuxstory.net/command-line-tools-to-monitor-linux-performance/
http://os.51cto.com/art/201412/460698_all.htm
https://zhuanlan.zhihu.com/p/34518047
https://segmentfault.com/a/1190000016435032

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!