七周一次课 监控系统状态命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了七周一次课 监控系统状态命令相关的知识,希望对你有一定的参考价值。

监控系统状态
作为一名运维工程师,我们一定要了解我们的系统,如果出现问题,我们要查看哪里出了问题,有什么样的症状。
如果我们要查看系统资源耗费情况。需要怎样查看呢?
[[email protected] ~]# w
20:44:47(当前时间) up 7 min,(启动多长时间) 1 user,(几个用户登录,他可以在第二行详细的看出) load average: 0.00, 0.04, 0.05(重点看系统负载)
USER (用户) TTY (登录的终端) FROM(从哪里登录来) [email protected] IDLE JCPU PCPU WHAT
root pts/0 (网络远程登录就是pts/0,pts/1,终端登录则是tty1...) 192.168.1.101 20:38 7.00s 0.08s 0.01s w

load average: 0.00, 0.04, 0.05(重点看系统负载)。平日看最多的就是这个,他有三组数字,代表1分钟,5分钟,15分钟。这个时间段内系统的负载值是多少,他是一个数值。那这个数值是什么含义呢?它和cup有关系,单位时间段内使用cup的活动的进程有多少个。
比如第一组数值0.00,他是表示1分钟内使用这个cpu活动的进程有多少个,这个数值不一定是整数,它是一个平均值,可以使零点几,也可以是一百多,那么这个数值多少算是正常的呢?比如当前值是0,说明当前没有活动,机器处在空闲状态,这对于服务器或者系统来讲非常浪费。

那么什么时候是最理想的状态呢?这取决与你有几颗cup,这里的cup指的是逻辑cpu,而不是物理cup。每一刻物理cpu上又有许多逻辑cpu。

那么我们这样查看设备上有几颗cpu呢?用命令[[email protected] ~]# cat /proc/cpuinfo
[[email protected] ~]# cat /proc/cpuinfo
processor : 0(这个数字如果是0,那代表它有一颗cpu,如果是1那就有2颗,如果是39,或者40,那代表他有40颗。这只代表它有多少逻辑cup,而不是逻辑cpu。)

从上面的信息可以看出,我们的虚拟机只有一颗cpu,那么第一组的数字为1的时候,它是最理想的。所以我们重点关注第一组数字。

当我们的系统负载值过高时,我们就需要想想这是为什么?我的进程在干什么?我的那些任务在使用cpu呢?我们需要进一步查看系统的瓶颈在哪里。

我们只要输入vmstat这条命令就可以查看我们的cpu。内存。虚拟磁盘,io磁盘,system系统进程等等相关的东西。
这条命令一般这样用。
[[email protected] ~]# vmstat 1 5(1代表每一秒钟显示1次,显示5秒钟后结束)
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 737072 2076 141924 0 0 19 3 54 58 0 0 100 0 0
0 0 0 737056 2076 141924 0 0 0 0 49 46 0 0 100 0 0
0 0 0 737056 2076 141924 0 0 0 0 52 50 0 0 100 0 0
0 0 0 737056 2076 141924 0 0 0 0 46 38 0 0 100 0 0
0 0 0 737056 2076 141924 0 0 0 0 50 44 0 0 100 0 0

我们只需要关注r、b,swpd、si、so、bi、bo、us、wa这些就够了。
r:run。表示运行或者等待cpu时间片的进程。我们不要以为这些等待的进程没有运行,某一时刻1个cpu只能有一个进程占用,其他进程只能排队,而此时这些排队的进程仍然处于运行状态,如果这个数值长期大于服务器cpu的个数,则说明cpu资源不够用了。就好像有一个电话亭有十个人打电话,有点人打的时间长,有的人打的时间短,为了公平,我们让每个人都只打1分钟,然后再去后面排队,等到每个人都打一遍后,再轮到第一个人打1分钟。

b:block。有多少个进程在等待。

swpd:如果数字不变,没有关系。如果数字持续变化,则说明交换分区和内存在频繁的交换数据,这说明我们的内存不够了。

si,so:它与swpd有关,si,i表示in,它表示有多少kb的数据从swap进入到内存中。。so表示out。它表示有多少kb的数据从内存进入到swap中。这里面我们有参照物,这就是内存,in表示进去的,out表示出来的。

bi、bo:bi表示从磁盘中出来,进入到内存中,也是读的数据量是多少。bo,写的数据量。这两个数据如果很大,这说明磁盘正在频繁读写,磁盘相对于内存和cpu会慢很多,如果很多的数据需要读写,这样对造成b列增加,会有更多的进程在等待磁盘。

us:表示用户级别的资源占用cup的百分比。这个数字不会超过100。如果这个长时间数字大于50,这说明系统的资源不够了。

wa:等待cpu的百分比。如果这一列很大,则表示cpu不够用了。

top:查看进程使用资源情况
top - 21:57:44 up 53 min, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 84 total(任务总和), 2 running(运行), 82 sleeping(休眠状态), 0 stopped(停止), 0 zombie(僵尸进程,主进程意外停止,子进程还在)
%Cpu(s): 0.3 us(如果这项在60%以上,那么我们就要注意了。它会使我们电脑寿命大幅减小), 0.3 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st(被偷走的cpu百分比,如果服务器做了虚拟化,他会有一些子机,这样可能会偷走一部分cpu)

KiB Mem(物理内存) : 1012376 total(内存总和), 750428 free(内存剩余), 130844 used(使用多少), 131104 buff/cache(我们一般关注物理分区)
KiB Swap(交换分区): 2097148 total, 2097148 free, 0 used. 727448 avail Mem

*我们的系统负载值可以很高,但是我们的us很低,这是可以的。但是大部分情况下,我们的us很高,我们的系统负载也一定会很高,因为我们某一些进程,它占用cpu很高,他势必会造成CPU很忙,cpu很忙,那其他的进程就会排队,一排队,那系统负载肯定会增高*

这是我们真正要关注的东西,默认情况下它是按cpu的百分比排序,使用cpu多的会排在前面。
%MEN是内存。
RES是物理内存大小,单位是kb
如果我们想按照内存占用大小来排序,就按M(大写),如果想切回cpu排序,就按P(大写)。

我们还可以按数字1,查看指定cpu。默认是看cpu的平均值,按1可以来回切换。
按字母-c可以查看具体的进程命令全局的路径,按-bn1可以静态显示所有进程信息,这个可以在我们写脚本的时候用,按字母q退出。

我们也可以关注一下pid,如果我们想结束某一个进程,只要输入kill+pid 号,就可以结束它。

sar:全面分析系统状态的命令。它被成为linux系统中的瑞士×××,它的功能非常复杂,如果系统中没有这个命令,我们就需要用yum安装sysstat这个包。
安装完成后,我们运行这条命令
[[email protected] ~]# sar
无法打开 /var/log/sa/sa06: 没有那个文件或目录
发现它无法运行,这是因为如果sar命令不加具体的选项或者参数,他默认会去调用系统里边保留的一个历史文件。
[[email protected] ~]# ls /var/log/sa
sa06
这个目录就是sar生成的历史文件所在的目录,sar有一个特性,它每十分钟就会把系统状态过滤一遍,保存在文件里,而这个文件就存在在这个目录中。如果想用sar这条命令,则要加参数。

比如我们要产看网卡流量
[[email protected] ~]# sar -n DEV 1 3(它的用法和vmstat类似,1代表每隔1秒显示1次,3代表显示三次。)
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 2018年03月06日 _x8664 (1 CPU)

22时52分25秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
22时52分26秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
22时52分26秒 ens33 0.99 0.99 0.06 0.18 0.00 0.00 0.00

22时52分26秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
22时52分27秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
22时52分27秒 ens33 1.01 1.01 0.06 0.39 0.00 0.00 0.00

22时52分27秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
22时52分28秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
22时52分28秒 ens33 2.02 1.01 1.25 0.39 0.00 0.00 0.00

平均时间: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
平均时间: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: ens33 1.34 1.00 0.45 0.32 0.00 0.00 0.00
它的输出有两个网卡,一个是lo,另一个是ens33,因为我的系统有两个网卡。第一列是时间。第二列是网卡的名字,rxpck/s是每秒接收到的数据包,txpck/s是每秒发送出去的数据包。rxKB/s是接收到的数据量,txKB/s是发送的数据量,单位都是KB。我们着重看这几个就可以了。

rxpck/s:如果有一些你不想要的东西向你的网卡发送很多的数据包,他发送很多数据包我们就要接受很多的数据包,数据包量很大的情况下我们的网卡承担不了,最终导致网络堵塞,网站不能打开。如果数据包是几千个,是正常的,如果是上万的,我们就要注意我们的网卡是否被攻击了。

如果我们要查看相关历史,加一个选项-f指定一个文件,/var/log/sa/saxx(xx表示文件日期的两位数字),这个文件就是在这个目录下的一个文件,因为我们刚刚装上这个工具,所以只生成了当天的文件,这个文件名字是有规律的是哪一天,他就以那一天的数字作为结尾,这样我们就可以查看历史数据,这个目录下的文件我们可以保留一个月。

我们也可以查看系统负载

[[email protected] ~]# sar -q 1 3
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 2018年03月06日 _x8664 (1 CPU)

23时20分26秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
23时20分27秒 1 101 0.00 0.01 0.05 0
23时20分28秒 1 101 0.00 0.01 0.05 0
23时20分29秒 1 101 0.00 0.01 0.05 0
平均时间: 1 101 0.00 0.01 0.05 0
查看系统负载我们经常是查看历史数据
[[email protected] ~]# sar -q -f /var/log/sa/saxx

查看磁盘
[[email protected] ~]# sar -b 1 3
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 2018年03月06日 _x8664 (1 CPU)

23时34分40秒 tps rtps wtps bread/s bwrtn/s
23时34分41秒 0.00 0.00 0.00 0.00 0.00
23时34分42秒 0.00 0.00 0.00 0.00 0.00
23时34分43秒 0.00 0.00 0.00 0.00 0.00
平均时间: 0.00 0.00 0.00 0.00 0.00
查看磁盘的历史数据
[[email protected] ~]# sar -b -f /var/log/sa/saxx

有关sar的所有的历史文件,我们都可以通过-f /var/log/sa/saxx来查看,只要在sar后面加上具体的参数,文件后面的具体日期就可以。
在/var/log/sa/这个目录下不仅有saxx,还有一个sarxx,这个目录不会当天生成,而是会在第二天生成,他们的区别在于sa是一个二进制文件,不能用cat查看,只能用sar -f去加载查看它,而sarxx是可以用cat查看的。

监控网卡流量的命令还有一个nload,但是系统中没有这个命令,所以我们要安装这个包,但是安装前我们要先安装epel-releaes这个包。

安装完后我们直接运行这个命令,运行后就会出现一个动态的显示网卡实时速度的页面。

Device ens33 [192.168.1.105] (1/2):当前的网卡命和IP,按方向键可以切换出第二个网卡。

Incoming:

                                                                                                  Curr: 2.09 kBit/s(当前值)
                                                                                                  Avg: 4.87 kBit/s(平均值)
                                                                                                  Min: 944.00 Bit/s(最小值)
                                                                                                  Max: 49.74 kBit/s(最大值)
                                                                                                  Ttl: 8.06 MByte

Outgoing:

                                                                                                  Curr: 9.77 kBit/s(当前值)
                                                                                                  Avg: 9.16 kBit/s(平均值)
                                                                                                  Min: 3.52 kBit/s最小值)
                                                                                                  Max: 10.48 kBit/s(最大值)
                                                                                                  Ttl: 719.61 kByte

如果出现攻击情况,进入的流量就会很大,那么curr(当前值)就会很大,所以我们要多注意。

以上是关于七周一次课 监控系统状态命令的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习笔记第七周一次课(3月19日)

七周一次课(1月22日)

七周一次课(1月22日) 10.1 使用w查看系统负载 10.2 vmstat命令 10.3 top命令 10.4 sar命令 10.5 nload命令

七周一次课

2018.5.4 七周一次课 (日常运维,w查看系统负载,vmstat,top,sar,nload)

2018.1.22 7周1次课