10.6-10.10 监控io性能 free命令 ps命令 查看网络 linux下抓包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10.6-10.10 监控io性能 free命令 ps命令 查看网络 linux下抓包相关的知识,希望对你有一定的参考价值。

七周二次课(3月20日)
10.6 监控io性能
10.7 free命令
10.8 ps命令
10.9 查看网络状态
10.10 linux下抓包


扩展tcp三次握手四次挥手 技术分享图片http://www.doc88.com/p-9913773324388.html
tshark几个用法:技术分享图片http://www.aminglinux.com/bbs/thread-995-1-1.html



10.6 监控io性能


磁盘状态的两个命令

iostat -x 磁盘使用

iotop  磁盘使用 

 

我们在运维工作中,除了查看内存 cpu工作情况外,磁盘io也是非常重要的指标。

有时候,内存和CPU明明还有剩余,但是系统负载很高,用vmstat查看状态,会发现b和wa比较大,这说明系统的磁盘有瓶颈。所以,要更加详细去查看磁盘的状态。


监控系统状态

技术分享图片

iostat命令 在安装sysstat的时候已经安装好了


用法可以是#iostat 也可以#iostat 1

用法和vmstat挺相似的


[[email protected] sed]# iostat 

Linux 3.10.0-693.el7.x86_64 (centos7.4-01) 2018年03月20日 _x86_64_ (1 CPU)


avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           0.06    0.00    0.16    0.08    0.00   99.69


Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

sda               0.68         8.63         1.40     107340      17392

sdb               0.02         0.29         0.00       3612          0

dm-0              0.00         0.08         0.00       1036          0


这里可以看到sda sdb两块硬盘 和 读、写速度 这个命令看的东西不太丰富,

因为这些#sar -b都可以看到的。


[[email protected] sed]#  sar -b

Linux 3.10.0-693.el7.x86_64 (centos7.4-01) 2018年03月20日 _x86_64_ (1 CPU)


11时25分06秒       LINUX RESTART


11时30分02秒       tps      rtps      wtps   bread/s   bwrtn/s

11时40分01秒      0.07      0.00      0.07      0.00      1.27

11时50分01秒      0.30      0.14      0.16      3.84      3.76

12时00分01秒      0.07      0.01      0.06      0.78      0.68

12时10分01秒      0.11      0.02      0.09      0.31      1.14

12时20分01秒      0.88      0.41      0.47     11.15     11.03

12时30分01秒      0.04      0.00      0.04      0.00      0.55

12时40分01秒      0.05      0.00      0.05      0.00      0.53



[[email protected] sed]# iostat -x

技术分享图片

Linux 3.10.0-693.el7.x86_64 (centos7.4-01) 2018年03月20日 _x86_64_ (1 CPU)


avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           0.06    0.00    0.15    0.07    0.00   99.72


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.01    0.36    0.23     7.32     1.23    29.14     0.01   15.13    5.89   29.42   2.64   0.15

sdb               0.00     0.00    0.02    0.00     0.25     0.00    29.25     0.00    1.53    1.53    0.00   0.93   0.00

dm-0              0.00     0.00    0.00    0.00     0.07     0.00    48.19     0.00    3.53    3.53    0.00   1.47   0.00


关注点

%util 这一列表示io等待 

磁盘使用,有多少时间占用cpu的,CPU有一部分是给进程处理的,计算的。也有一部分是要等待io的,等待磁盘读和写。

这个等待的时间比是多少 就是%util 

如果这个等待时间比大,读和写跟着大。证明磁盘读写处于繁忙状态,如果读和写不大,只是%util大就说明硬盘可能存在问题,有故障。如果硬盘很慢的话,肯定会影响性能,即使是CPU再厉害,运算再快,硬盘跟不上,也是会存在很大的瓶颈。



比如发现磁盘io很忙,很频繁,可以使用#iotop (第一次运行需要安装)

它和top很相似,也是动态显示,排序。


[[email protected] sed]# iotop 

技术分享图片


10.7 free命令


free 命令可以查看当前系统的总内存大小以及使用情况。

CentOS 7系统的free命令显示结果比CentOS 6更加简洁了一些,但大体上的内容是一致的。


[[email protected] ~]# free 

              total        used        free      shared  buff/cache   available

Mem:        1008152      126864      605284        6880      276004      702136

Swap:       2097148           0     2097148


三行,第一行是说明,第二行内存使用情况,第三行swap交换分区使用情况。需要关注的是第二行内存。


添加-m 使其输出单位是M,

[[email protected] ~]# free -m

              total        used        free      shared  buff/cache   available

Mem:            984         123         591           6         269         685

Swap:          2047           0        2047


-h显示当前适当的单位 *常用

[[email protected] ~]# free -h

              total        used        free      shared  buff/cache   available

Mem:           984M        123M        591M        6.7M        269M        685M

Swap:          2.0G          0B        2.0G


linux系统 会把内存预分配一部分给 buff/cache

buffer和cache的区别方法

000是数据

000(磁盘)-->内存(cache)-->CPU

CPU要计算时,需要把数据从磁盘中读出来,临时放到内存中,这部分内存就是cache。

cpu(000)-->内存(buffer)-->磁盘

数据经过CPU计算,即将要写入磁盘,这时用的内存为buffer。

因为磁盘和CPU之间的数据转换速度有点差别,所以需要通过内存来缓解这种速度换算。



total=used+free+buff/cache

avaiable:系统可使用内存有多大。

avaiable包含了free和buffer/cache剩余部分。(available是关注点)

total和available是不同的。



10.8 ps命令


技术分享图片

PS命令是专门显示系统进程,作用是汇报当前进程的快照。相当于windows的任务管理器。


#ps aux 把系统的所有进程都列出来

技术分享图片

查看系统某个进程 利用grep来筛选 

格式# ps aux |grep 进程名称

[[email protected] ~]# ps aux |grep nginx

root      1831  0.0  0.0 112676   984 pts/0    R+   17:45   0:00 grep --color=auto nginx


[[email protected] ~]# ps -elf 这种用法和#ps aux差不多。都是显示所有进程


PID 表示进程的ID。

#kill pid可以把相关进程杀死 用法格式是#kill 1346.

每个进程都有一个目录/proc/505(pid)/


关注点 


STAT 状态

D 不能中断的进程,通常是IO。这个状态直接影响系统的负载。

R run状态的进程,某个时间段在使用CPU。

S sleep状态的进程。

T 已经停止或暂停的进程。如果我们运行一个命令,例如vmstat 1,我们按一下ctrl+z暂停进程 时,用ps命令就会显示T状态。

test 

[[email protected] ~]# vmstat 运行#vmstat命令

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 3  0      0 604728   2076 274284    0    0     8     2   48   54  0  0 100  0  0

[[email protected] ~]# vmstat 1

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 2  0      0 604868   2076 274316    0    0     8     2   48   54  0  0 100  0  0

 0  0      0 604852   2076 274316    0    0     0     0   45   41  0  0 100  0  0

 0  0      0 604852   2076 274316    0    0     0     0   63   53  1  0 99  0  0

^Z

[1]+  已停止               vmstat 1


[[email protected] ~]# ps aux |grep vmstat 显示T状态

root      1878  0.0  0.1 148316  1356 pts/0    T    18:09   0:00 vmstat 1 

root      1884  0.0  0.0 112676   980 pts/0    S+   18:09   0:00 grep --color=auto vmstat


[[email protected] ~]#  fg 调回前台

vmstat 1

 2  0      0 604224   2076 274452    0    0   124   149 23199 21059  0  0 100  0  0

 0  0      0 604224   2076 274452    0    0     0     0   47   43  0  0 100  0  0


[[email protected] ~]# ps aux |grep vmstat 此时vmstat已经处于S+状态,S+状态表示sleep且处于前台。+表示前台。

root      1878  0.0  0.1 148316  1356 pts/0    S+   18:09   0:00 vmstat 1

root      1917  0.0  0.0 112676   980 pts/1    R+   18:18   0:00 grep --color=auto vmstat


Z 僵尸进程。

<: 高优先级进程。CPU资源会优先给此进程使用。

N: 低优先级进程。

L: 在内存中被锁了内存分页。

s: 主进程,后面nginx或者php-fpm服务会经常有它的影子。

l: 多线程进程,意思就是,这个进程有多个线程。

线程和进程的最大的区别就是:

1 进程里包含了线程,线程是进程的子单元,一个进程有多个线程。

2 同一个进程下的线程全部共享相同的内存(线程与线程之间的内存互相共享),而进程之间 内存相互隔离。

+: 前台进程。



START 开始的时间


TIME 开始的时长


COMMAND 命令,和top的command是一样的




10.9 查看网络状态


技术分享图片

本节学到netstat命令,此命令是用来查看网络状态的。 

linux服务器上面有很多服务,服务往往跟客户端之间进行相互通讯的,意味着,它要有监听端口,有对外通讯的端口。 netstat就是查看tcp/ip通讯的一个状态。

给系统安装一个服务,安装一个Nginx,提供一个web服务。。。。有了这些服务之后,就需要给这些服务监听一个端口。正常情况下,一台机器,它是没有任何端口监听的,如果没有任何端口,是没办法进行监听的。


*了解一下socket文件的作用。


[[email protected] ~]#  netstat -lnp 监听端口,打印当前系统启动哪些端口。

技术分享图片


[[email protected] ~]#  netstat -an 查看tcp/ip状态

技术分享图片

查看tcp udp状态

[[email protected] ~]#  netstat -ltunp

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      949/sshd            

tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1055/master         

tcp6       0      0 :::22                   :::*                    LISTEN      949/sshd            

tcp6       0      0 ::1:25                  :::*                    LISTEN      1055/master         

udp        0      0 127.0.0.1:323           0.0.0.0:*                           577/chronyd         

udp6       0      0 ::1:323                 :::*                                577/chronyd       


[[email protected] ~]# netstat -an |awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'

LISTEN 4

ESTABLISHED 1

关注ESTABLISHED ,如果这数字很大,说明系统很忙。


#ss -an 也可以查看tcp/ip状态

查看listen状态

#ss -an |grep -i listen


ppt在*centos7.aminglinux.com 

*了解一下socket文件的作用。三次握手过程。



10.10 Linux下抓包


介绍

技术分享图片

抓包工具

有时也许想看一下某个网卡上都有哪些数据包,尤其是当你初步绑定服务器上有流量攻击时,使用抓包工具来获取数据包就可以知道有哪些IP在攻击了。



#tcpdump -nn -i 网卡名字 (网卡名称可以在ifconfig查看)

[[email protected] ~]# tcpdump -nn -i ens33 源地址IP地址显示

技术分享图片


关于数据信息:

第一列是时间,第二列是ip,源IP, 端口 >到哪里去 方向去 目标ip 目标ip端口 flage开始 数据包的信息。

主要关注源ip和源端口。

-nn 第一个n ip用数字显示出来,如果不加,会显示主机名。 一般使用-nn

[[email protected] ~]# tcpdump -n -i ens33 源地址主机名显示

技术分享图片

所看到的ssh是22端口,如果不知道ssh表示22端口,例如其他名称的 不知道指定端口的,那就容易看不到详细信息了。


信息一一对应 有来有回

技术分享图片


*了解 DDOS攻击,udp flood  udp洪水攻击。


指定端口

[[email protected] ~]#  tcpdump -nn -i ens33 port 22


排除端口用法

[[email protected] ~]#  tcpdump -nn -i ens33 not port 22


指定端口,指定主机ip

[[email protected] ~]# tcpdump -nn -i ens33  port 22 and host 192.168.189.128


数据包指定长度,指定个数,存到一个文件上

例如,指定长度,指定100个。

[[email protected] ~]# tcpdump -nn -i ens33 -c 100 -w /tmp/1.cap

技术分享图片


抓包过程中,是比较缓慢的,类似暂停状态。此时可以打开一个新的终端。

如果在这个终端不去产生一些数据流的话,那么它就不会产生那么多的数据包。 

例如在使用tcpdump查看数据包的时候,其实就是在通讯产生数据流,所以有数据包产生,这是一个内循环。

如果此终端不产生任何数据,不产生任何的信息,那它就没有任何的数据包。 产生数据包了,屏幕(暂停的界面)自然而然会有数据了。所以打开一个新的终端,利用新的终端去产生数据包,这样就能继续进行抓包。


抓包成功提示,

技术分享图片

数据包 1.cap

用#file查看属性,不能用cat查看,因为这是网卡捕获的信息,其实它是一个真正的通讯数据包信息,而不是文本格式。


读数据流(数据包里面的数据就叫数据流),需要利用#tcpdump -r /tmp/1.cap 

[[email protected] ~]# file /tmp/1.cap 

/tmp/1.cap: tcpdump capture file (little-endian) - version 2.4 (Ethernet, capture length 262144)



#wireshark 工具



以上是关于10.6-10.10 监控io性能 free命令 ps命令 查看网络 linux下抓包的主要内容,如果未能解决你的问题,请参考以下文章

7.12 10.6-10.10

3.20 10.6-10.10听课笔记

10.6 监控io性能 10.7 free命令 10.8 ps命令 10.9 查看网络状态 10.1

监控io性能,free命令,ps网络命令,查看网络状态,Linux下抓包

监控io性能,free,ps,查看网络状态,Linux下抓包

监控io性能,free,ps命令,查看网络状态以及抓包