Linux系统状态

监控IO性能

iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息;同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析

  • 用法:iostat[参数][时间][次数]

  • 功能:查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息

  • 命令参数:

    1) -C 显示CPU使用情况

    2) -d 显示磁盘使用情况

    3) -k 以 KB 为单位显示

    4) -m 以 M 为单位显示

    5) -N 显示磁盘阵列(LVM) 信息

    6) -n 显示NFS 使用情况

    7) -p[磁盘] 显示磁盘和分区的情况

    8) -t 显示终端和CPU的信息

    9) -x 显示详细信息

    10) -V 显示版本信息

  • 实例 iostat -x

[root@zyxlinux01 ~]# iostat -x
Linux 3.10.0-123.el7.x86_64 (zyxlinux01)    2017年08月08日     _x86_64_    (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.01    0.00    0.09    0.01    0.00   99.88

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
scd0              0.00     0.00    0.00    0.00     0.00     0.00     8.00     0.00   27.91   27.91    0.00  27.91   0.00
sda               0.01     0.01    0.06    0.04     2.04     1.48    66.80     0.00   19.53   11.12   31.32   5.00   0.05

其中有一个非常重要的参数 %util(设备使用率)一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的,即 delta(use)/s/1000 (因为use的单位为毫秒)如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈

  • iostat 显示所有设备负载情况
[root@zyxlinux01 ~]# iostat
Linux 3.10.0-123.el7.x86_64 (zyxlinux01)    2017年08月08日     _x86_64_    (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.01    0.00    0.09    0.01    0.00   99.88

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
scd0              0.00         0.00         0.00         44          0
sda               0.11         2.03         1.48     148332     107972

如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU

  • iostat 2 3 定时显示所有信息

  • iostat -d sdb1 指定查看sdb1的信息

  • iostat -t 显示tty和Cpu信息

  • iostat -c 查看cpu状态

iotop

安装:yum install -y iotop

iotop 是一个用来监视磁盘 I/O 使用状况的 top 类工具。iotop 具有与 top 相似的 UI,其中包括 PID、用户、I/O、进程等相关信息

用法:iptop 回车

通过输出结果,可以清楚地知道是什么程序在读写磁盘,速度以及命令行,pid 等信息


free

free:查看系统的内存状况,包括总内存,已经使用的内存和剩下未被使用的内存,以及缓冲区和缓存各自占用的内存情况

用法 : free [-bkmotV][-s <间隔秒数>]

参数:

-o  不显示缓冲区调节列

-s<间隔秒数>  持续观察内存使用状况

-t  显示内存总和列

-V  显示版本信息
[root@zyxlinux01 ~]# free
             total       used       free     shared    buffers     cached
Mem:       1010884     686276     324608      12972       1328     431224
-/+ buffers/cache:     253724     757160
Swap:      4194300        188    4194112

Mem:表示物理内存统计

-/+ buffers/cached:表示物理内存的缓存统计

Swap:表示硬盘上交换分区的使用情况,这里我们不去关心

buffers/cache :系统分配给缓存缓冲的内存统计

数据写入磁盘时用的是 buffers,调用读取数据用cache


ps命令

ps 命令就是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多 的资源等等

用法:ps [options] [--help]

常用的参数:

-A    列出所有的进程

-w    显示加宽可以显示较多的资讯

-au    显示较详细的资讯

-aux    显示所有包含其他使用者的行程

linux上进程状态:

D 不可中断的进程 uninterruptible sleep (usually IO) 

R 运行 runnable (on run queue) 

S 中断休眠 sleeping 

T 停止 traced or stopped 

Z 僵死 a defunct (”zombie”) process 

< 高优先级进程

N 低优先级进程

L 内存中被锁了的内存分页

s 主进程

l 多线程进程

+ 前台进程

实例:

  • ps aux : 显示所有包含其他使用者的行程
[root@zyxlinux01 ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.6  46140  6668 ?        Ss   20:30   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root         2  0.0  0.0      0     0 ?        S    20:30   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    20:30   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   20:30   0:00 [kworker/0:0H]
......

结果说明:

USER:该 process 属于那个使用者账号的

PID :该 process 的号码

%CPU:该 process 使用掉的 CPU 资源百分比

%MEM:该 process 所占用的物理内存百分比

VSZ :该 process 使用掉的虚拟内存量 (Kbytes)

RSS :该 process 占用的固定的内存量 (Kbytes)

TTY :该 process是在那个终端机上面运作,若与终端机无关,则显示 ?,另外,tty1-tty6是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序

STAT:该程序目前的状态

R :该程序目前正在运作,或者是可被运作

S :该程序目前正在睡眠当中(可说是idle状态),但可被某些讯号 (signal) 唤醒

T :该程序目前正在侦测或者是停止了

Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态

START:该 process 被触发启动的时间

TIME :该 process 实际使用 CPU 运作的时间

COMMAND:该程序的实际指令

其中STAT是需要重点参考的部分

  • ps 与grep常用组合用法,查找特定进程,比如:

    ps aux |grep ssh

[root@zyxlinux01 ~]#  ps aux |grep ssh
root      1108  0.0  0.3  82868  3592 ?        Ss   20:31   0:00 /usr/sbin/sshd -D
root      3823  0.0  0.5 141248  5148 ?        Ss   22:21   0:00 sshd: root@pts/0
root      3853  0.0  0.0 112664   984 pts/0    S+   22:29   0:00 grep --color=auto ssh

netstat 查看网络状态

Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等

常用参数:
-a (all)显示所有选项,默认不显示LISTEN相关

-t (tcp)仅显示tcp相关选项

-u (udp)仅显示udp相关选项

-n 拒绝显示别名,能显示数字的全部转化成数字

-l 仅列出有在 Listen (监听) 的服務状态

-p 显示建立相关链接的程序名

-r 显示路由信息,路由表

-e 显示扩展信息,例如uid等

-s 按各个协议进行统计

-c 每隔一个固定时间,执行该netstat命令

LISTEN和LISTENING的状态只有用-a或者-l才能看到

  • netstat : 查看网络状态
[root@zyxlinux01 ~]# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0    232 zyxlinux01:ssh          192.168.101.1:57022     ESTABLISHED
tcp        1      1 zyxlinux01:45933        115.28.122.210:http     LAST_ACK   
tcp        1      1 zyxlinux01:58696        202.38.97.230:http      LAST_ACK   
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ]         DGRAM                    10898    /run/systemd/shutdownd
unix  2      [ ]         DGRAM                    6351     /run/systemd/notify
unix  2      [ ]         DGRAM                    6353     /run/systemd/cgroups-agent
unix  5      [ ]         DGRAM                    6367     /run/systemd/journal/socket
unix  12     [ ]         DGRAM                    6369     /dev/log

netstat的输出结果可以分为两个部分:一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到;另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名

  • netstat -lnp : 查看监听端口
[root@zyxlinux01 ~]# netstat -lnp
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      2111/master         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1108/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      2111/master         
tcp6       0      0 :::22                   :::*                    LISTEN      1108/sshd           
udp        0      0 0.0.0.0:57392           0.0.0.0:*                           510/avahi-daemon: r 
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           510/avahi-daemon: r 
raw6       0      0 :::58                   :::*                    7           612/NetworkManager  
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     14851    612/NetworkManager   /var/run/NetworkManager/private
unix  2      [ ACC ]     STREAM     LISTENING     17316    2111/master          private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     17319    2111/master          private/rewrite
  • netstat -an : 查看系统网络连接状况
[root@zyxlinux01 ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0     52 192.168.101.128:22      192.168.101.1:57022     ESTABLISHED
tcp6       0      0 ::1:25                  :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
udp        0      0 0.0.0.0:57392           0.0.0.0:*                          
udp        0      0 0.0.0.0:5353            0.0.0.0:*                          
raw6       0      0 :::58                   :::*                    7          
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     14851    /var/run/NetworkManager/private
unix  2      [ ACC ]     STREAM     LISTENING     17316    private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     17319    private/rewrite
  • netstat -lntp : 只显示tcp,不包含socket
[root@zyxlinux01 ~]# 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      2111/master         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1108/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      2111/master         
tcp6       0      0 :::22                   :::*                    LISTEN      1108/sshd

ss -annetstat -an 效果几乎一致

  • 统计所有网络状态
[root@zyxlinux01 ~]# netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
LISTEN   4
ESTABLISHED      1

ESTABLISHED (保持连接数)的值越大,说明并发越高,系统负载越高,一般小于1000算是比较正常


抓包工具 tcpdump

tcpdump,就是:dump the traffic on a network , 根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息

通常看到的都是tcp的包,如果发现udp的包,通常是被攻击了

用法:tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ][ -i 网络接口 ] [ -r 文件名] [ -s snaplen ][ -T 类型 ] [ -w 文件名 ] [表达式 ]

常用选项:

`-n` : 不把网络地址转换成名字

`-i` : 指定监听的网络接口

`port` :指定端口

`not port` : 排除端口

`-c` : 在收到指定的包的数目后,tcpdump就会停止

`-w` : 直接将包写入文件中,并不分析和打印出来

实例:

  • tcpdump -nn -i eth0 指定网卡eth0的包

  • tcpdump -nn port 80 指定端口80的包

  • tcpdump -nn not port 22 and host 192.168.0.3 指定端口22以外的端口和主机192.168.0.3的包

  • tcpdump -nn -c 10 -w 1.cap 收到10次包之后停止抓包并将包写入1.cap中

1.cap不能直接cat,读取要用tcpdump -r

tshark 抓包工具

安装: yum install -y wireshark

用法: tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.rsc" -e "http.host" -e "http.request.method" -e "http.request.uri" : 查看指定网卡80端口的web访问情况(类似于web的访问日志)


转载于:https://www.cnblogs.com/zhouyixuan/p/7577427.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值