码迷,mamicode.com
首页 > 移动开发 > 详细

监控IO性能(iostat,iotop,free,ps,netstat)抓包工具(tcpdump)

时间:2020-09-11 16:09:46      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:取数   eal   信息   pad   toc   workman   gen   broadcast   txt   

监控IO性能

iostat 命令

安装:yum install -y sysstat
iostat用于输出CPU和磁盘I/O相关的统计信息.
详细的io统计信息分析IO瓶颈
参数:
-x 选项:查看详细信息
-c 选项:查看CPU使用情况
-d 选项:查看磁盘使用情况
重点关注%util(采用周期内用于IO操作的时间比率,即IO队列非空的时间比率,如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。)

[root@jinkai01 sed]# iostat -x
Linux 3.10.0-957.el7.x86_64 (jinkai01) 08/25/20 _x8664 (1 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
0.19 0.00 0.51 0.01 0.00 99.29

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 1.61 0.25 48.97 3.23 56.10 0.00 0.53 0.42 1.22 0.25 0.05
scd0 0.00 0.00 0.00 0.00 0.22 0.00 114.22 0.00 1.50 1.50 0.00 1.11 0.00
dm-0 0.00 0.00 1.53 0.21 46.32 2.79 56.40 0.00 0.59 0.43 1.70 0.25 0.04
dm-1 0.00 0.00 0.02 0.00 0.52 0.00 54.67 0.00 0.13 0.13 0.00 0.06 0.00

iotop命令

安装:yum install -y iotop
用来监视磁盘I/O使用状况的top类工具
iotop [选项]
选项
-o:只显示有io操作的进程
-b:批量显示,无交互,主要用作记录到文件。
-n NUM:显示NUM次,主要用于非交互式模式。
-d SEC:间隔SEC秒显示一次。
-p PID:监控的进程pid。
-u USER:监控的进程用户。
常用选项:
左右箭头:改变排序方式,
默认是按IO排序。
r:改变排序顺序。
o:只显示有IO输出的进程。
p:进程/线程的显示方式的切换。
a:显示累积使用量。
q:退出。
查看磁盘IO使用的进程

[root@jinkai01 sed]# 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 22
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 % [rcu_sched]


free命令

查看内存使用情况

[root@jinkai01 sed]# free
total used free shared buff/cache available
Mem: 995896 140220 576820 7776 278856 671092
Swap: 2097148 0 2097148

Mem:内存使用情况
Swap:交换分区使用情况
total:总内存大小
used:已使用内存的大小
free:未使用的内存大小
shared:共享中的;
buff/cache:缓存和缓冲区的内存大小(不理解缓冲缓存的可以详细查资料了解)
available:不仅包含未使用的内存,还包含了可回收的缓存缓冲,所以显示的比未使用的内存大
公式:
total=used+free+cache/buff
avaliable包含free和buff/cache剩余部分

用合适的单位表示数据

[root@jinkai01 sed]# free -h
total used free shared buff/cache available
Mem: 972M 136M 563M 7.6M 272M 655M
Swap: 2.0G

ps命令

**查看系统进程
参数:
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-u 后面跟用户,可以指定查看哪个用户的进程信息
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的进程

USER:进程拥有者;
PID:进程的ID,识别和管理进程。常用于 kill PID 终止某一个进程
STAT进程的状态:
D:不能中断的进程;
R:run运行中的进程,包含了等待CPU时间片的进程;
S:sleep状态的进程;
T:暂停的进程;
Z:僵尸进程;
<:高优先级进程;
N:低优先级进程;
L:内存中被锁了的内存分页;
s:主进程;
l:多线程进程;
+:前台进程;
START: 行程开始时间;
TIME: 执行的时间;
COMMAND:所执行的指令;**

查询进程
ps aux | grep 进程名
查询当前进程是否存在或运行;

[root@jinkai01 sed]# ps aux | grep sshd
root 7046 0.0 0.4 112756 4308 ? Ss 19:58 0:00 /usr/sbin/sshd -D
root 7309 0.0 0.5 158760 5608 ? Ss 19:59 0:03 sshd: root@pts/0
root 7579 0.0 0.0 112680 704 pts/0 R+ 21:56 0:00 grep --color=auto sshd

netstat命令

查看网络状况
参数:
-a 显示所有连线中的sockte
-l 显示监控中的服务器的socket
-n 直接使用IP地址,而不通过域名服务器
-p 显示正在使用的sockte的程序识别码和程序名称
-t 显示TCP传输协议的连线状况
-u 显示UDP传输协议的连线状况
-r 显示路有信息
-e 显示关于以太网的统计数据(数据包的总字节数,错误数,删除数,数据包的数据和广播的数量)
-i 显示网卡列表
-g 显示组播组的关系
-s 显示网络统计

netstat -lnp
打印当前系统启动哪些端口
上面是tcp/ip,下面是监听的sockte (unix开头)

netstat -an
打印网络连接状况

统计命令
统计机器中网络连接各个状态的个数
netstat -an | awk ‘/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}‘
或netstat?-an | awk?‘/^tcp/ {++S[$NF]}? END {for (a in S) print a,S[a]} ‘

[root@jinkai01 sed]# netstat -an | awk ‘/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}‘
LISTEN 4
ESTABLISHED 1

Linux抓包工具

tcpdump工具
安装包
yum install -y tcpdump
参数:
-c :指定要抓取的包数量
-w :把抓取的包,指定路径保存
-i :指定tcpdump需要监听的端口,默认会抓取第一个网络接口
-n :对地址以数字的方式显示,否则显示为主机名
-nn 除了-n,还把端口显示为数值,否则显示端口服务名
-r 从给定的数据包文件中读取数据。
-P:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"和"inout",默认为"inout"

指定网卡抓包
格式:

tcpdump -nn -i 网卡名
tcpdump -nn -i ens33
指定抓取网卡名为ens33的包
22:26:37.317199 IP 192.168.186.140.22 > 192.168.186.1.63163: Flags [P.], seq 399028:399288, ack 37, win 302, length 260
其中主要看
192.168.186.140.22 > 192.168.186.1.63163
这一列,前面ip表示ip源与端口,后面ip表示目的ip与端口

指定端口
格式:

tcpdump -nn -i [网卡名] port [端口号]
tcpdump -nn -i ens33 port 22
指定抓取网卡名为ens33 端口号为22的包
22:29:52.204974 IP 192.168.186.140.22 > 192.168.186.1.63163: Flags [P.], seq 410380:410536, ack 73, win 302, length 156

其他命令

tcpdump -nn -i [网卡名] not port [端口号] and host 192.168.186.140
抓取指定网卡名,端口号xx以外的所有端口号,主机名为192.168.186.140的包

指定抓包个数
-c [数值]:

tcpdump -nn -i ens33 -c 10
指定抓取10个包;
[root@jinkai01 sed]# tcpdump -nn -i ens33 -c 10

指定抓包个数保存到文件
-w [文件路径]:

[root@jinkai sed]# tcpdump -nn -i ens33 -c 10 -w /tmp/a.txt
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
10 packets captured
20 packets received by filter
0 packets dropped by kernel

查看保存数据包的文件
-r [保存的数据包文件】

[root@jinkai01 sed]# tcpdump -r /tmp/a.txt

wireshark 抓包工具

命令:tshark
安装包
yum install -y wireshark
查看当前http服务器访问的ip以及所访问的http链接

[root@jinkai01 sed]# 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"

Linux 网络相关

ifconfig命令

安装:yum install -y net-tools
ifdown 停用网卡 ifup 启用网卡
ifdown ens33 && ifup ens33
可以一起执行,这样就不会断网了导致服务中断

给一个网卡设定多个IP
设置过程:

[root@jinkai01 sed]# cd /etc/sysconfig/network-scripts/
[root@jinkai01 network-scripts]# cp ifcfg-ens33 ifcfg-ens33\:1
这里加反斜杠\是要把:给转义,不然命令行下无法识别,下面编辑ifcfg-ens33:1这个配置文件。注意:DEVICE改成ens33:1
[root@jinkai01 network-scripts]# cat ifcfg-ens33:1
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33:1"
UUID="1307da0c-3632-4d8c-ae7e-1e717298ec13"
DEVICE="ens33:1"
ONBOOT="yes"
IPADDR="192.168.186.150"
NETMASK="255.255.255.0"
GATEWAY="192.168.186.2"
DNS1="119.29.29.29"

改 NAME DEVICE IPADDR,设置完成后重启网卡

Systemctl restart network

重启后多了一个网卡ens33:1

ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.186.150 netmask 255.255.255.0 broadcast 192.168.186.255
ether 00:0c:29:04:50:5d txqueuelen 1000 (Ethernet)

查看网络连接状态
命令:mii-tool 网卡名

[root@jinkai01 network-scripts]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok
link ok 说明网卡连接状态,no link 说明网卡坏了或者没有连接网线
命令:ethtool 网卡名
[root@jinkai01 network-scripts]# ethtool ens33
Settings for ens33:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes

设置DNS
配置文件:临时修改 /etc/resolv.conf。永久生效需要修改网卡配置文件

把DNS地址写入到配置文件/etc/resolv.conf即可生效

[root@jinkai01 network-scripts]# cat /etc/resolv.conf
Generated by NetworkManager
nameserver 119.29.29.29

格式: nameserver(域名) IP
系统默认会用第一个nameserver去解析域名,当第一个解析不成功是会使用第二个去解析

/etc/hosts 域名解析:
一个IP后面可以跟多个域名,可以是几十个甚至上百个;
每一行只能有一个IP,也就是说一个域名不能对应多个IP;
如果有多行中出现相同的域名(对应的IP不一样),会按最前面出现的记录来解析。

监控IO性能(iostat,iotop,free,ps,netstat)抓包工具(tcpdump)

标签:取数   eal   信息   pad   toc   workman   gen   broadcast   txt   

原文地址:https://blog.51cto.com/11451960/2525828

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!