博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用系统分析监控工具
阅读量:5993 次
发布时间:2019-06-20

本文共 14715 字,大约阅读时间需要 49 分钟。

linux系统分析,日常分析主要有cpu、内存、磁盘I/O、网络I/O、进程数分析等。

常用的分析命令工具主要有以下几种:

1.sar

sar:system activity report

作为一款linux中常用的分析的工具,其几乎包含了所有的状态分析

[root@iZ25b31bdp0Z ~]# sar -h用法: sar [ 选项 ] [ 
<时间间隔>
[
<次数>
] ]主选项和报告: -b I/O 和传输速率信息状况 -B 分页状况 -d 块设备状况 -H 交换空间利用率 -I {
<中断>
| SUM | ALL | XALL } 中断信息状况 -m {
<关键词>
[,...] | ALL } 电源管理统计信息 关键字: CPU CPU 频率 FAN 风扇速度\t\tFREQ\tCPU 平均时钟频率 IN 输入电压 TEMP 设备温度\t\tUSB\t连接的USB 设备 -n {
<关键词>
[,...] | ALL } 网络统计信息 关键词可以是: DEV 网卡 EDEV 网卡 (错误) NFS NFS 客户端 NFSD NFS 服务器 SOCK Sockets (套接字) (v4) IP IP 流 (v4) EIP IP 流 (v4) (错误) ICMP ICMP 流 (v4) EICMP ICMP 流 (v4) (错误) TCP TCP 流 (v4) ETCP TCP 流 (v4) (错误) UDP UDP 流 (v4) SOCK6 Sockets (套接字) (v6) IP6 IP 流 (v6) EIP6 IP 流 (v6) (错误) ICMP6 ICMP 流 (v6) EICMP6 ICMP 流 (v6) (错误) UDP6 UDP 流 (v6) -q 队列长度和平均负载 -r 内存利用率 -R 内存状况 -S 交换空间利用率 -u [ ALL ] CPU 利用率 -v Kernel table 状况 -w 任务创建与系统转换统计信息 -W 交换信息 -y TTY 设备状况

sar对cpu的监控分析

[root@iZ25b31bdp0Z ~]# sar -u 1 3     ## 1代表间隔1秒,3代表取值3次Linux 3.10.0-123.9.3.el7.x86_64 (iZ25b31bdp0Z)  2017年09月11日     _x86_64_    (4 CPU)14时28分11秒     CPU     %user     %nice   %system   %iowait    %steal     %idle14时28分12秒     all     15.96      0.00      8.23      0.75      0.00     75.0614时28分13秒     all      3.27      0.00      8.31     16.37      0.00     72.0414时28分14秒     all      7.30      0.00      4.28     35.77      0.00     52.64平均时间:     all      8.87      0.00      6.95     17.57      0.00     66.61

其中参数分析如下:

CPU:all 表示统计信息为所有 CPU 的平均值。%user:显示在用户级别(application)运行使用 CPU 总时间的百分比。%nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。%system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。%iowait:显示用于等待I/O操作占用 CPU 总时间的百分比。%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。%idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。

简单分析:

1.iowait过高,多是磁盘I/O存在瓶颈,一般高于值高于50,就要查看相关进程了2.idle过高,但系统反应慢,可能是cpu在等待内存分配,可查看内存使用量3.system过高,说明系统内核使用cpu很高,内核使用cpu进行进程的创建等,此时I/O频繁,查看对应异常进程

sar对文件使用句柄等使用

[root@iZ25b31bdp0Z ~]# sar -v 1 3Linux 3.10.0-123.9.3.el7.x86_64 (iZ25b31bdp0Z)  2017年09月11日     _x86_64_    (4 CPU)14时38分35秒 dentunusd   file-nr  inode-nr    pty-nr14时38分36秒    132654      3712    135650         814时38分37秒    132656      3680    135652         814时38分38秒    132658      3680    135654         8平均时间:    132656      3691    135652         8

参数分析:

dentunusd:目录高速缓存中未被使用的条目数量file-nr:文件句柄(file handle)的使用数量inode-nr:索引节点句柄(inode handle)的使用数量pty-nr:tty使用量,使用w也可以查看

sar对磁盘I/O的分析

[root@iZ25b31bdp0Z ~]# sar -b 1 3Linux 3.10.0-123.9.3.el7.x86_64 (iZ25b31bdp0Z)  2017年09月11日     _x86_64_    (4 CPU)14时42分07秒       tps      rtps      wtps   bread/s   bwrtn/s14时42分08秒      2.00      0.00      2.00      0.00     16.0014时42分09秒      0.00      0.00      0.00      0.00      0.0014时42分10秒      3.00      0.00      3.00      0.00    128.00平均时间:      1.67      0.00      1.67      0.00     48.00

简单参数分析如下:

tps:每秒钟物理设备的 I/O 传输总量rtps:每秒钟从物理设备读入的数据总量wtps:每秒钟向物理设备写入的数据总量bread/s:每秒钟从物理设备读入的数据量,单位为 块/sbwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s

sar对内存的分析

[root@iZ25b31bdp0Z ~]# sar -r 1 3Linux 3.10.0-123.9.3.el7.x86_64 (iZ25b31bdp0Z)  2017年09月11日     _x86_64_    (4 CPU)14时51分41秒 kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty14时51分42秒    704800   2915388     80.53    302240    454448   4976160    137.46   2267792    368308       35614时51分43秒    704224   2915964     80.55    302248    454444   4976128    137.45   2267984    368308       35614时51分44秒    704444   2915744     80.54    302248    454448   4976128    137.45   2267856    368308       464平均时间:    704489   2915699     80.54    302245    454447   4976139    137.46   2267877    368308       392

参数分析:

kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.

sar对网络I/O的分析

[root@iZ25b31bdp0Z ~]# sar -n DEV 1 3Linux 3.10.0-123.9.3.el7.x86_64 (iZ25b31bdp0Z)  2017年09月11日     _x86_64_    (4 CPU)14时52分48秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s14时52分49秒      eth0     10.00     10.00      0.56      0.70      0.00      0.00      0.0014时52分49秒      eth1      1.00      0.00      0.04      0.00      0.00      0.00      0.0014时52分49秒        lo     10.00     10.00      0.88      0.88      0.00      0.00      0.0014时52分49秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s14时52分50秒      eth0      5.00      5.00      0.28      0.35      0.00      0.00      0.0014时52分50秒      eth1     10.00      7.00      0.39      9.58      0.00      0.00      0.0014时52分50秒        lo     29.00     29.00      4.66      4.66      0.00      0.00      0.0014时52分50秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s14时52分51秒      eth0      4.00      4.00      0.96      0.31      0.00      0.00      0.0014时52分51秒      eth1      1.00      1.00      0.04      0.48      0.00      0.00      0.0014时52分51秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00平均时间:     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s平均时间:      eth0      6.33      6.33      0.60      0.45      0.00      0.00      0.00平均时间:      eth1      4.00      2.67      0.16      3.35      0.00      0.00      0.00平均时间:        lo     13.00     13.00      1.85      1.85      0.00      0.00      0.00

简单参数分析:

IFACE:网络接口的名字,如上图,我服务器中主要有三个网卡,eth0内网,eth1外网,还有lo回环rxpck/s:每秒钟接收的数据包txpck/s:每秒钟发送的数据包rxbyt/s:每秒钟接收的字节数,网络I/O洲入主要查看此参数txbyt/s:每秒钟发送的字节数,网络I/O流出主要查看此参数rxcmp/s:每秒钟接收的压缩数据包txcmp/s:每秒钟发送的压缩数据包rxmcst/s:每秒钟接收的多播数据包

sar查看历史系统状态

[root@iZ25b31bdp0Z ~]# sar -f /var/log/sa/sa01 Linux 3.10.0-123.9.3.el7.x86_64 (iZ25b31bdp0Z)  2017年09月01日     _x86_64_    (4 CPU)00时00分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle00时10分01秒     all      0.49      0.01      0.41      0.13      0.03     98.9300时20分01秒     all      0.49      0.01      0.41      0.12      0.03     98.9400时30分01秒     all      0.50      0.01      0.41      0.17      0.03     98.8800时40分01秒     all      0.47      0.01      0.41      0.10      0.03     98.9700时50分01秒     all      0.48      0.01      0.41      0.12      0.03     98.9601时00分01秒     all      0.48      0.01      0.40      0.15      0.03     98.9201时10分01秒     all      0.48      0.01      0.40      0.12      0.03     98.9501时20分01秒     all      0.47      0.01      0.41      0.07      0.03     99.01

sar默认保存一个月的系统报告,在其中可以简单的查看其中的状态。

相关时长配置文件更改,可在/etc/sysconfig/sysstat调整history值

[root@iZ25b31bdp0Z ~]# grep ^[^#] /etc/sysconfig/sysstat HISTORY=28 COMPRESSAFTER=31 SADC_OPTIONS="-S DISK"

当然sar只能提供简单的历史数据,相关详细的系统状态值,还是得去zabbix中查看系统状态值


2.dstat

dstat没有sar那么繁杂的参数选定,基本使用只有dstat连续滚动,或者使用dstat 1 10这样次数限定的显示,不过centos7上面才会自带,centos6上面并没有加入

[root@iZ25b31bdp0Z ~]# dstat You did not select any stats, using -cdngy by default.----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw   1   1  98   1   0   0| 143k  251k|   0     0 |   0     0 | 688   954   0   0  99   0   0   0|   0     0 |3372B   28k|   0     0 | 668   910   0   0  99   0   0   0|   0    80k|1257B 3302B|   0     0 | 489   732   1   0  99   0   0   0|   0     0 | 775B 9720B|   0     0 | 565   830   0   1  98   1   0   0| 120k   80k| 780B 3983B|   0     0 | 558   836   0   1  99   0   0   0|   0     0 |1189B   10k|   0     0 | 496   731

其中相比于top而言,在网络上面有recv和send的区分,也不至于像sar那样过于细分,可以很方便的显示

最重要的,它是彩色显示!

1209823-20170911151022016-468230116.png


3.iftop

iftop是一款专门用来显示网络I/O的工具,其相对于dstat而言,其可以显示相关进程的网络I/O使用,在epel源中,默认没有安装

常用的命令

[root@iZ25b31bdp0Z ~]# iftop -n -P -o 2s -i eth1

参数简单讲解:

-n:不对主机名进行反解,直接显示ip-i:选择对应的网卡,不选择默认显示第一个网卡,eth0为我的内网网卡,eth1才为外网网卡-P:显示进程端口-o 2s: 2秒的统计结果,进行排序

1209823-20170911151952469-869133493.png


4.nethogs

与iftop类似的一款工具,可以显示程序详细的进程网络I/O。不过因为命令难记,所以本人一般逐渐使用iftop进行了替代

使用时方便,不需要使用其它的附带参数

1209823-20170911152732328-1029710091.png


5.free

free -h为内存使用量查看,因为使用人很多,所以不过多介绍

[root@iZ25b31bdp0Z ~]# free -h             total       used       free     shared    buffers     cachedMem:          3.5G       2.6G       833M       248M       194M       118M-/+ buffers/cache:       2.3G       1.1GSwap:           0B         0B         0B

6.iostat

用于查看cpu和磁盘I/O的工具,相比于sar而言,其优点在于可以显示每块盘的I/O状况,其中-x选项使用频率挺高,可以查看util的值,如果util值过高,说明该磁盘io繁忙,很多监控系统会监控此选项值

[root@10-110-151-75 ~]# iostat -x 1 10Linux 2.6.32-926.573.26.1.letv.el6.x86_64 (10-110-151-75)   01/31/2018  _x86_64_    (6 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle          26.42    0.00    3.85    2.41    0.00   67.32Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %utilsda               0.03     1.55    0.61    1.36    22.44    23.32    23.31     0.01    3.11   1.07   0.21sdb               0.53     0.27    6.93    6.85  2230.21  2502.06   343.57     0.22   16.10   0.80   1.10sdc               0.52     0.27    6.38    5.99  1946.43  2102.32   327.34     0.21   16.64   0.78   0.97sdd               0.52     0.26    6.91    5.97  2230.60  2091.13   335.64     0.20   15.50   0.84   1.08sde               0.49     0.27    6.79    6.00  2180.22  2108.09   335.43     0.21   16.53   0.84   1.07sdf               0.53     0.27    6.21    6.01  1826.62  2112.35   322.40     0.21   16.81   0.76   0.92sdg               0.49     0.27    6.83    5.98  2164.34  2093.05   332.56     0.20   15.85   0.83   1.06sdh               0.50     0.27    6.74    5.98  2153.15  2092.00   333.82     0.21   16.14   0.85   1.08sdi               0.51     0.27    6.90    5.99  2200.24  2103.99   333.95     0.21   16.09   0.83   1.08sdj               0.54     0.27    6.97    5.97  2251.68  2091.70   335.60     0.21   16.13   0.85   1.10sdk               0.61     0.42    6.87    5.82  2214.42  2081.00   338.41     0.20   15.45  17.41  22.10sdl               0.49     0.26    6.19    6.12  1739.91  2116.46   313.28     0.22   17.82   0.84   1.03sdm               0.50     0.26    6.20    6.01  1845.52  2092.76   322.60     0.21   17.08   0.79   0.96

7.netstat

netstat主要用于查看本机端口使用,网络状态连接数

1.查看端口使用netstat -tnl

[root@iZ25b31bdp0Z ~]# netstat -tnlActive Internet connections (only servers)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 127.0.0.1:953           0.0.0.0:*               LISTEN     tcp        0      0 127.0.0.1:15770         0.0.0.0:*               LISTEN     tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN     tcp        0      0 0.0.0.0:188             0.0.0.0:*               LISTEN     tcp        0      0 0.0.0.0:8800            0.0.0.0:*               LISTEN     tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN     tcp        0      0 127.0.0.1:55203         0.0.0.0:*               LISTEN     tcp        0      0 127.0.0.1:33060         0.0.0.0:*               LISTEN     tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN     tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN     tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN     tcp        0      0 0.0.0.0:718             0.0.0.0:*               LISTEN     tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN     tcp        0      0 0.0.0.0:178             0.0.0.0:*               LISTEN     tcp        0      0 127.0.0.1:8181          0.0.0.0:*               LISTEN     tcp        0      0 101.200.215.232:53      0.0.0.0:*               LISTEN     tcp        0      0 10.44.182.73:53         0.0.0.0:*               LISTEN     tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN     tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     tcp        0      0 0.0.0.0:8088            0.0.0.0:*               LISTEN     tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN     tcp6       0      0 :::21                   :::*                    LISTEN

2.查看网络连接数

netstat -n |grep 'WORD'

一般使用为查看tcp连接最多的ip

常用命令:

[root@iZ25b31bdp0Z ~]# netstat -na|grep ESTABLISHED |awk '{print $5}' | awk -F: '{ip[$1]++}END{for (i in ip){print ip[i],i}}' | sort -nr166 118.192.170.7142 123.207.167.1639 114.242.249.2298 61.148.244.658 183.198.197.154

或者直接使用sortuniq来进行获取

[root@iZ25b31bdp0Z ~]# netstat -na|grep ESTABLISHED |awk '{print $5}' | awk -F: '{print $1}' | sort -n | uniq -c | sort -nr    165 118.192.170.71     42 123.207.167.163      9 114.242.249.229      8 61.148.244.65      8 183.198.197.154

8.ss

ss,man的解释中说的是another utility to investigate sockets,但是我觉得其可以是netstat的替代者,至少在端口占用这方面,其少了连接数等查看,但是在程序占用端口方面却直观很多。

主要使用命令有

[root@wlinux conf.d]# ss -tnlState      Recv-Q Send-Q             Local Address:Port                            Peer Address:Port              LISTEN     0      128                    127.0.0.1:9000                                       *:*                  LISTEN     0      128                            *:80                                         *:*                  LISTEN     0      128                            *:50998                                      *:*                  LISTEN     0      80                            :::3306                                      :::*

其可以更直观的显示端口,同时加上-p参数,可以显示占用对应端口的程序


9.ps

ps:snapshot of the current processes.显示当时运行进程

ps一般有两种风格,一种是BSD风格,一种是NUIX风格

两种常用的命令有

ps auxps -ef

当然ps中还有其它的参数,但是以这两者组合居多

[root@wlinux conf.d]# ps -efUID        PID  PPID  C STIME TTY          TIME CMDroot         1     0  0 Sep01 ?        00:00:17 /usr/lib/systemd/systemd --system --deserialize 20root         2     0  0 Sep01 ?        00:00:00 [kthreadd]root         3     2  0 Sep01 ?        00:00:00 [ksoftirqd/0]以下略
[root@wlinux conf.d]# ps auxUSER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDroot         1  0.0  0.3 125120  3352 ?        Ss   Sep01   0:17 /usr/lib/systemd/systemd --system --deserialize 20root         2  0.0  0.0      0     0 ?        S    Sep01   0:00 [kthreadd]root         3  0.0  0.0      0     0 ?        S    Sep01   0:00 [ksoftirqd/0]以下略

一般相比而言,本人使用ps aux多于ps -ef,前者相比于后者,可以更好的看出资源的使用量,不过后面可以直接看出ppid,不过ps中使用ps ax -o user,pid,ppid,stat,command加入-o的选项,加上ppid的参数,也是能显示ppid值的。

10.top,glance,hop

这三者均也是常用工具,特别是top,其相关解释可以查看

转载于:https://www.cnblogs.com/marility/p/7505165.html

你可能感兴趣的文章
[BZOJ 3170] [TJOI 2013] 松鼠聚会
查看>>
ARM 的异常处理
查看>>
字符串 值、输出效果、转义
查看>>
python类型
查看>>
第八周-学习进度条
查看>>
eigen quick reference
查看>>
Linux命令——screen
查看>>
聊聊从web session的共享到可扩展缓存设计
查看>>
八. python面向对象(反射和内置方法)
查看>>
ViewPager实现引导页
查看>>
int i=1,j=2; int k=i+++j;
查看>>
Debugging OpenResty and Nginx Lua scripts with Zer
查看>>
jetty配置jndi数据源
查看>>
Eclipse更改@Author的属性以及注释模板的一些设置
查看>>
Golang加密系列之MD5
查看>>
在struts-2.2.3.1中加入<s:head theme="ajax"/>这个标签,报错
查看>>
SHOW PROCESSLIST的各个状态说明
查看>>
apache Internal Server Error 解决方法
查看>>
win服务器中安装开源电子邮箱服务端
查看>>
grep命令的用法1
查看>>