日常运维(2)监控IO性能,free命令,ps命令,查看网卡状态,Linux下的抓包

监控IO性能
iostat命令
用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同 vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

yum install -y sysstat 安装

iostat 统计io使用情况
iostat -x 详细统计io使用情况

例:
[root@aliyun ~]# iostat 统计io使用情况
Linux 3.10.0-693.21.1.el7.x86_64 (aliyun) 05/08/2018 _x86_64_ (1 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
0.89 0.00 0.48 0.07 0.00 98.55

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 2.73 46.72 18.40 165481 65156

[root@aliyun ~]# iostat -x 详细统计io使用情况
Linux 3.10.0-693.21.1.el7.x86_64 (aliyun) 05/08/2018 _x86_64_ (1 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
0.89 0.00 0.48 0.07 0.00 98.55

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util cpu等待i/o读写的时间占比
vda 0.00 0.28 2.08 0.64 46.65 18.37 47.78 0.02 6.16 1.82 20.36 0.62 0.17

[root@aliyun ~]#

注意:%util指标,表示cpu等待i/o读写的时间占比。若系统负载很高,cpu和磁盘,内存负载都不高,应用iostat -x命令查看i/o性能。若%util指标很高,且磁盘读写数据很大,则说明硬盘频繁读写很忙,若磁盘读写数据很小,则说明硬盘有硬件故障。
iotop命令
磁盘使用排序,按占用io资源的比例排序进程,查找具体是哪个进程频繁读写磁盘
yum install -y iotop安装

例:
[root@aliyun ~]# 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 21
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/u2: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 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0]
12 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kdevtmpfs]
13 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [netns]
14 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khungtaskd]
15 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [writeback]
16 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kintegrityd]
17 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [bioset]
18 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kblockd]
19 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [md]
10260 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % python /usr/bin/ssserver -c /etc/shadowsocks.json -d start
25 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kswapd0]
26 be/5 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksmd]
27 be/7 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khugepaged]
28 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [crypto]
36 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthrotld]



free命令
显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。
free -m 以M为单位显示
-g 以G为单位显示
-h 让系统自动调节显示单位
例:
[root@aliyun ~]# free
total used free shared buff/cache available
Mem: 1883416 75452 1435552 320 372412 1654664
Swap: 0 0 0
[root@aliyun ~]# free -m
total used free shared buff/cache available
Mem: 1839 73 1401 0 363 1615
Swap: 0 0 0
[root@aliyun ~]# free -g
total used free shared buff/cache available
Mem: 1 0 1 0 0 1
Swap: 0 0 0
[root@aliyun ~]# free -h
total used free shared buff/cache available
Mem: 1.8 G 73 M 1.4 G 320 K 363M 1.6G
Swap: 0B 0B 0B
[root@aliyun ~]#


buffer/cache区别
buffer/缓冲:是用于存放CPU计算结果的高速缓存器
cache/缓存:是用于存放CPU将要计算的数据的高速缓存器
公式:total=used+free+buff/cache
available=free+buffer/cache的剩余部分
available=free+(available-free)
(available-free)=buff/cache的剩余部分

ps命令
用于报告当前系统的进程状态。可以搭配 kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。

ps aux 查看所有用户的所有进程
ps -elf 详细列出所有进程的指定情况,效果和ps aux命令类似,显示项目有些区别

例:
[root@aliyun ~]# ps aux |head
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
进程用户 进程号 虚拟内存 物理内存 RSS=top命令的RES
root 1 0.0 0.1 43124 3616 ? Ss 03:12 0:00 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root 2 0.0 0.0 0 0 ? S 03:12 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 03:12 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 03:12 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 03:12 0:00 [kworker/u2:0]
root 7 0.0 0.0 0 0 ? S 03:12 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 03:12 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R 03:12 0:00 [rcu_sched]
root 10 0.0 0.0 0 0 ? S 03:12 0:00 [watchdog/0]
[root@aliyun ~]# ps -elf |head
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 10781 ep_pol 03:12 ? 00:00:00 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
1 S root 2 0 0 80 0 - 0 kthrea 03:12 ? 00:00:00 [kthreadd]
1 S root 3 2 0 80 0 - 0 smpboo 03:12 ? 00:00:00 [ksoftirqd/0]
1 S root 5 2 0 60 -20 - 0 worker 03:12 ? 00:00:00 [kworker/0:0H]
1 S root 6 2 0 80 0 - 0 worker 03:12 ? 00:00:00 [kworker/u2:0]
1 S root 7 2 0 -40 - - 0 smpboo 03:12 ? 00:00:00 [migration/0]
1 S root 8 2 0 80 0 - 0 rcu_gp 03:12 ? 00:00:00 [rcu_bh]
1 R root 9 2 0 80 0 - 0 - 03:12 ? 00:00:00 [rcu_sched]
5 S root 10 2 0 -40 - - 0 smpboo 03:12 ? 00:00:00 [watchdog/0]
[root@aliyun ~]#

注意:系统高负载,CPU低使用率,不用担心,
/proc/# //#=PID号 在#目录下查看进程的具体目录,可用来杀僵尸进程

查看网卡状态
netstat命令
用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。

netstat 查看网络状态
netstat -lnp 查看监听端口
netstat -an 查看系统的网络连接状况
netstat -an | awk '/^tcp/{++stat[$NE]} END {for(key in sta) print key,"\t",sta[key]}'查看并发情况
netstat -lntp 只看tcp的,不包含socket
例:
[root@aliyun ~]# netstat -lnp 监听ip和使用socket的命令
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 705/sshd
tcp 0 0 172.119.133.113:83 0.0.0.0:* LISTEN 10260/python
udp 0 0 172.119.133.113:123 0.0.0.0:* 720/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 720/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 720/ntpd
udp 0 0 172.119.133.113:83 0.0.0.0:* 10260/python
udp6 0 0 :::123 :::* 720/ntpd
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 13301 847/AliYunDun /tmp/Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
unix 2 [ ACC ] STREAM LISTENING 9587 1/systemd /run/systemd/private
unix 2 [ ACC ] STREAM LISTENING 13302 847/AliYunDun /usr/local/aegis/Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
unix 2 [ ACC ] STREAM LISTENING 11167 1/systemd /var/run/dbus/system_bus_socket
unix 2 [ ACC ] SEQPACKET LISTENING 9634 1/systemd /run/udev/control
unix 2 [ ACC ] STREAM LISTENING 6885 1/systemd /run/systemd/journal/stdout
[root@aliyun ~]#
[root@aliyun ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 172.19.133.143:83 0.0.0.0:* LISTEN
tcp 0 52 172.119.133.143:22 42.236.187.122:4535 ESTABLISHED
tcp 0 0 172.119.133.143:60148 140.205.140.205:80 ESTABLISHED
udp 0 0 172.119.133.143:123 0.0.0.0:*
udp 0 0 127.0.0.1:123 0.0.0.0:*
udp 0 0 0.0.0.0:123 0.0.0.0:*
udp 0 0 172.119.133.143:83 0.0.0.0:*
udp6 0 0 :::123 :::*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 13301 /tmp/Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
unix 2 [ ACC ] STREAM LISTENING 9587 /run/systemd/private
unix 2 [ ] DGRAM 9612 /run/systemd/shutdownd
unix 2 [ ACC ] STREAM LISTENING 13302 /usr/local/aegis/Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
unix 2 [ ACC ] STREAM LISTENING 11167 /var/run/dbus/system_bus_socket
unix 2 [ ACC ] SEQPACKET LISTENING 9634 /run/udev/control
unix 2 [ ] DGRAM 6868 /run/systemd/notify
unix 2 [ ] DGRAM 6870 /run/systemd/cgroups-agent
unix 2 [ ACC ] STREAM LISTENING 6885 /run/systemd/journal/stdout
unix 5 [ ] DGRAM 6888 /run/systemd/journal/socket

ss命令
用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和 netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

例:
[root@aliyun ~]# ss -an
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
nl UNCONN 0 0 0:0 *
nl UNCONN 0 0 0:720 *
nl UNCONN 0 0 0:720 *
nl UNCONN 4352 0 4:10446 *
nl UNCONN 768 0 4:0 *

ss -an和nestat 类似

Linux下的抓包
tcpdump抓包命令
一款sniffer工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用 - w选项将数据包保存到文件中,方便以后分析。
yum install -y tcpdump 安装
用法:
tcpdump -nn 使用ip显示不使用域名
tcpdump -nn -i ens33 使用ip显示,且指定网卡
tcpdump -nn -i ens33 port 22 使用ip显示,且指定网卡,指定端口
tcpdump -nn -i ens33 not port 22 and host 192.168.6.101 显示指定ip,且指定网卡不指定端口
tcpdump -nn -i ens33 -c 100 -w /tmp/1.cap 使用ip显示,且指定网卡,并将结果保存进文件
tcpdump -r /tmp/1.cap 查看抓取的数据包文件,不能用文本工具查看
tshark命令
TShark是一个网络协议分析器。它允许您从一个活动网络捕获数据包数据,或者从先前保存的捕获文件中读取数据包,或者将这些包的解码形式打印到标准输出,或者将数据包写入文件。TShark的本地捕获文件格式是pcap格式,它也是tcpdump和各种其他工具使用的格式。

yum install -y wireshark 安装

用法: 抓取80端口的访问记录
tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"




猜你喜欢

转载自blog.csdn.net/langyue919/article/details/80233976
今日推荐