监控系统状态2 iostat free netstat tcpdump tshark

 

监控系统状态

iostat

  • iostat -x #磁盘使用
[root@xujb01 yum.repos.d]# iostat -x
Linux 3.10.0-693.5.2.el7.x86_64 (xujb01)     2017年11月29日     _x86_64_    (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.12    0.00    0.20    0.06    0.00   99.62

       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.08    0.17    0.08     4.12     2.14    49.15     0.01   24.27   13.50   46.25   5.38   0.14
       sdb               0.00     0.00    0.00    0.00     0.02     0.00    45.16     0.00    4.37    4.37    0.00   4.08   0.00
       scd0              0.00     0.00    0.00    0.00     0.01     0.00   114.22     0.00   14.56   14.56    0.00  13.89   0.00

------------------------
util: 等待时间比,数字很大,读写就会很忙,一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的

iotop

  • iotop #磁盘使用

    yum -y install iotop


ot@xujb01 yum.repos.d]# 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
   3368 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.43 % [kworker/0:2]
   1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-root --system --deserialize 21
--------------------
SWAPIN:交换分区到内存

free

  • free

    free -m/-h/-g

[test@xujb01 ~]$ free -h
              total        used        free      shared  buff/cache   availabl
Mem:           988M        106M        334M        6.8M        547M        694M
Swap:          2.0G          0B        2.0G
----------------------------------------------
数据到(磁盘)->cpu : 数据(磁盘)->内存(cache)-> cpu  #读
cpu写到 ->磁盘: cpu-> 内存(buffer) -> 磁盘 #写

availabl: free + cache/buffer剩余部分(没有被用到的)
total = used + free + cache/buffer

ps

  • ps aux
[test@xujb01 ~]$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.6 128164  6832 ?        Ss   11月28   0:27 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root         2  0.0  0.0      0     0 ?        S    11月28   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    11月28   0:02 [ksoftirqd/0]
--------------------------
VSZ:虚拟内存
RSS:物理内存
STAT:进程状态
    1、D :不能中断的进程
    2、R :run状态的进程,
    3、S:sleep状态的进程
    4、T:暂停的进程,(运行一个程序然后ctrl+z暂停任务可以看到暂停进程)
    5、Z:僵尸进程
a、 < :高优先级进程
b、 N :低优先级进程
c、 L : 内存中被锁的内存分页
d、 s :主进程
e、 l : 多线程进程
d、 + :前台进程

查看网路状态

  • netstat #查看网络状态,tcp udp
  • netstat -nlp #查看监听端口
  • netstat -an #查看系统的网络连接状况
  • netstat -lntup #只看tcp,udp 不包含socket(unix)
  • netstat -an | awk '/^tcp/ {++sta[$NF]} END {for (key in sta)print key "\t"  sta[key]}' #NF为字段总数 $NF为最后一个字段,++sta[$NF] 统计最后一个字段总数 sta[listen]=n1,sta[ESTABLISHED]=n2,
[test@xujb01 ~]$ netstat -anutp
(No info could be read for "-p": geteuid()=1000 but you should be root.)
Active Internet connections (servers and established)
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      -
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      -
tcp        0      0 192.168.31.20:22        192.168.31.95:61114     ESTABLISHED -
tcp        0     52 192.168.31.20:22        192.168.31.95:58980     ESTABLISHED -
tcp        0      0 192.168.31.20:22        192.168.31.95:61118     ESTABLISHED -
tcp6       0      0 :::22                   :::*                    LISTEN      -
tcp6       0      0 ::1:25                  :::*                    LISTEN      -
--------------
State: 三次握手四次挥手状态信息
  • ss命令和netstat有类似功能

tcpdump 抓包工具

yum -y install tcpdump

  • 用法 tcpdump -nn -i ens33
[root@xujb01 test]# tcpdump -nn -i ens33
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
07:37:38.758762 IP 192.168.31.20.22 > 192.168.31.95.58980: Flags [P.], seq 2728510939:2728511151, ack 2312649719, win 316, length 212
07:37:38.775795 IP 192.168.31.20.22 > 192.168.31.95.58980: Flags [P.], seq 212:408, ack 1, win 316, length 196
07:37:38.776513 IP 192.168.31.95.58980 > 192.168.31.20.22: Flags [.], ack 408, win 16400, length 0
-----------------
’-nn‘ #显示ip 显示端口
  • tcpdump -nn port 80
  • tcpdump -nn not port 22 and host 192.168.0.100
  • tcpdump -nn -c 100 -w 1.pcap #保存到1.pcap文件内,可以拿到wireshark中分析
  • tcpdump -r 1.pcap #查看数据包
  • tcpdump -nn -S 0 #抓取完整包 默认是抓取长度为68字节

tshark 抓包工具

yum -y install wireshare

  • tshark -n -t a -R http.request -T fields -e “frame.time” -e “http.request.uri”

 

TCP三次握手、四次挥手记录:

 

  • tcp 握手:

1、首先client -->第一次握手(发送链接请求SYN: seq=x) 客户端处于SYN_SEND状态,并等待服务器端ACK信息)-->(server 收到client的SYN信息后,处于SYN_RECEIVED状态,第二次握手并发送SYN+ACK信息,ACK是回答client,SYN信息是自己建立连接的请求信息,之后处于个等待ACK的状态)-->client 收到SYN+ACK信息后,自己处于ESTABLISHED状态,第三次握手并发送ACK信息,告诉server端,我已经收到信息了-->server收到ACK信息,自己也处于ESTABLISHED 整个连接就完成建立了,期间有超时 重发的机制。(握手是双方的,当另端接收到握手信息才算一次完整(发送-接收)的握手)

 

2、看抓包数据可以看出三次握手的信息,也就是建立连接需要的信息 分别是:SYN ->SYN+ACK ->ACK

 

  • tcp 挥手:

 

1、第一个发送FIN型号的可以是client或者server,以client为例:client->发送FIN信号告诉server自己要断开连接第一次挥手告别,自己进入到FIN-WAIT-1状态,并等待server端的ACK信号->server 端收到

FIN信号后,发送ACK信号(第二次挥手告别),告诉client自己收到了,自己进入到CLOSE-WAIT状态,并继续自己没有结束的任务->client收到ACK信号后,进入FIN-WAIT-2状态,并等待server端等任务结束后,向自己发送断开连接请求FIN信号------------server端任务完成后,马上发送断开连接FIN信号第三次挥手告别,自己进入到LAST-ACK状态,等待client的回应(在一定时间内没收到CLIENT的ACK信号,会进行重发,这个时间应该是远远小于2MSL的)->client收到server的FIN信号后,发送ACK进行回应第四次挥手告别,自己进入到TIME-WAIT状态,并开始计时2MSL后未收到FIN信号,则进入下一个状态CLOSE,如果在2MSL时间内又收到server端的FIN信号,表示这段时间内server端没有收到自己的ACK信号,所以进行重发了 ->server收到client端的ACK信号后,直接进入到CLOSE状态

 

 

 

 

posted on 2017-11-29 07:58  游荡的鱼  阅读(269)  评论(0编辑  收藏  举报

导航