监控io性能

  • iostat命令,可以直接查看磁盘的使用情况
[root@localhost ~]# iostat
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 	2018年07月12日 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.18    0.00    1.14    1.90    0.00   96.78

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb               1.04         4.16         0.00       1564          0
sda              14.70       284.06        14.51     106842       5459
dm-0              0.24         0.97         0.00        364          0
  • iostat 1 10动态显示磁盘使用情况,隔一秒输出一次,一共输出10次
  • iostat -x 比较全面的显示磁盘使用情况,其中%util是CPU等待硬盘读写数据的时间占比,如该数据过大则说明磁盘的读写出现了问题。
[root@localhost ~]# iostat -x
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 	2018年07月12日 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.12    0.00    0.81    1.26    0.00   97.81

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdb               0.00     0.00    0.69    0.00     2.78     0.00     8.00     0.00    5.73    5.73    0.00   5.21   0.36
sda               1.06     0.03    7.64    2.20   189.77     9.73    40.57     0.11   11.28   13.02    5.24   4.85   4.77
dm-0              0.00     0.00    0.16    0.00     0.65     0.00     8.00     0.00    1.99    1.99    0.00   1.99   0.03
  • iotop 该命令会把读写磁盘的进程动态的显示出来 在使用LINUX时经常会遇到系统IO占用很高,系统IO占用可以使用iostat -x 1查看,但是查看哪个进程占用的磁盘IO负载高,就可以使用iotop工具了。
[root@localhost ~]# iotop 

Total DISK READ :	0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:	0.00 B/s | Actual DISK WRITE:       0.00 B/s
   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                                                                       
     1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-root --system --deserialize 23
     2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
     3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
     5 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 % [kworker/u256: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 % [rcuob/0]
    10 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/1]
    11 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/2]
    12 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/3]
    13 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/4]
    14 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/5]
    15 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/6]

监控内存使用情况

  • free命令 查看内存的使用情况。默认单位是kb
[root@localhost ~]# free
             total       used       free     shared    buffers     cached
Mem:       3869044     481724    3387320       8692        692     218860
-/+ buffers/cache:     262172    3606872
Swap:      2047996          0    2047996

可以看到物理内存的使用情况和swap分区的使用情况。如果swap分区使用较多了表示需要增加内存了。

  • free -h 自适应单位输出数值
  • free -m 以兆为单位输出数值

显示内容,

  • total:总内存大小 ;
  • used:已使用内存大小
  • free:空闲内存大小
  • shared:当前已废弃不用内存大小
  • buffers:缓冲空间大小
  • cached:缓存空间大小
  • available 大小是buff/cache未使用的部分+free的大小

监控进程

ps命令

  • ps -aux 显示进程情况,这是静态输出的。
  • ps -aux |grep sshd 查看sshd进程是否开启
  • 可以利用PID来杀死进程,kill pid号就可以实现
  • ls -l /proc/pid号,可以查看进程实在哪里启动的。

查看网络状态

  • netstat 列出端口信息
  • netstat -lnp 列出系统监听端口
  • netstat -an 查看系统的网络连接状况
  • netstat -lntp 列出监听端口,只看tcp的,不包括socket
  • ss -an 跟netstat -an 作用一样
[root@localhost ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2342/master         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1340/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      2342/master         
tcp6       0      0 :::22                   :::*                    LISTEN      1340/sshd

Linux抓包工具

  • tcpdump 抓包,yum install -y tcpdump先安装该工具
  • tcpdump -nn -i ,该指令中-nn是为了把主机名和端口都使用数字显示出来,主机名会显示成ip ,端口直接显示出端口号;-i是指定网卡(抓取哪个网卡的包)
  • tcpdump -c 可以指定抓包的数量
  • tcpdump -w 可以将抓包的数据流向内容写入到一个文件中
  • tcpdump -r 文件名 可以查看写入数据流向内容的文件
[root@localhost ~]# tcpdump -nn -c 5 -i eno16777736
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eno16777736, link-type EN10MB (Ethernet), capture size 262144 bytes
16:25:07.903212 IP 192.168.254.130.22 > 192.168.254.1.55550: Flags [P.], seq 1722853797:1722854009, ack 913713024, win 159, length 212
16:25:07.903638 IP 192.168.254.1.55550 > 192.168.254.130.22: Flags [.], ack 212, win 254, length 0
16:25:07.903830 IP 192.168.254.130.22 > 192.168.254.1.55550: Flags [P.], seq 212:408, ack 1, win 159, length 196
16:25:07.939544 IP 192.168.254.130.22 > 192.168.254.1.55550: Flags [P.], seq 408:684, ack 1, win 159, length 276
16:25:07.939730 IP 192.168.254.1.55550 > 192.168.254.130.22: Flags [.], ack 684, win 252, length 0
5 packets captured
6 packets received by filter
0 packets dropped by kernel