0%

多维监控体系

一、监控概述

一、监控对象:

1.监控对象的理解:CPU是怎么工作的,以及工作原理;
2.监控对象的指标:CPU的使用率、CPU的负载、CPU个数;
3.确定性能基准线:怎么样才算故障?CPU负载多少算高?

二、监控范围:

1.硬件监控:服务器的硬件故障;
2.操作系统监控:CPU、内存、IO、进程;
3.应用服务监控;
4.业务监控。

二、硬件监控

一、服务器监控:IPMI

IPMI是一种智能化远程接口标准,Linux就可以使用IPMI实现对服务器的远程监控,IPMI依赖于BMC控制器(一种嵌入式微控制器),

使用ipmitool实现在Linux下对硬件的监控和控制。

使用ipmitool的条件:硬件和操作系统要支持。(虚拟机无法执行IPMI,可在物理机尝试,不执行关机命令即可)

#安装工具
[root@localhost ~]# yum install -y OpenIPMI ipmitool
#启动
[root@localhost ~]# systemctl start ipmi

使用IPMI有两种方式:1.本地调用;2.远程调用(通过IP地址,用户名和密码)

二、路由器和交换机监控:SNMP
[root@localhost ~]# yum install -y net-snmp net-snmp-utils
[root@localhost ~]# cd /etc/snmp
[root@localhost snmp]# ls
snmpd.conf  snmptrapd.conf
[root@localhost snmp]# mv snmpd.conf snmpd.conf.bak
[root@localhost snmp]# vim snmpd.conf
#添加如下内容
rocommunity zzulyt(名称,自己起的团体名) 172.16.137.128(指要收集的机器的IP)
[root@localhost snmp]# ll
总用量 28
-rw-r--r-- 1 root root    34 8月  19 20:08 snmpd.conf
-rw------- 1 root root 18861 7月  30 01:29 snmpd.conf.bak
-rw------- 1 root root   220 7月  30 01:29 snmptrapd.conf
#启动服务
[root@localhost snmp]# systemctl start snmpd
#查看snmp监听的161端口
[root@localhost snmp]# netstat -nulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
udp        0      0 0.0.0.0:69              0.0.0.0:*                           917/xinetd          
udp        0      0 0.0.0.0:161             0.0.0.0:*                           2711/snmpd

三、SNMP系统的管理信息库(MIB)与OID

1.任何一个被管理的资源都表示成一个对象,称为被管理的对象。MIB是被管理对象的集合。它定义了被管理对象的一系列属性:对象的名称、对象的访问权限和对象的数据类型等。每个SNMP设备(Agent)都有自己的MIB。MIB也可以看作是NMS(网管系统)和Agent之间的沟通桥梁。它们之间的关系如图所示:

2.MIB文件中的变量使用的名字取自ISO和ITU管理的对象标识符(object identifier)名字空间。它是一种分级树的结构。

3.OID(对象标识符):是SNMP代理提供的具有唯一标识的键值。【MIB(管理信息基)提供数字化OID到可读文本的映射】。

OID可用数字格式表达:
长这样“.1.3.6.1.2.1.1.2.0” 子树 1 -> 3 -> 6 -> 1 -> 2 -> 1 -> 1 -> 2

#OID:1.3.6.1.2.1.1.3.0-->监控时间
[root@localhost snmp]# snmpget -v2c -c zzulyt 172.16.137.128 1.3.6.1.2.1.1.3.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (28036) 0:04:40.36
#OID:1.3.6.1.4.1.2021.10.1.3.1-->Load 5
[root@localhost snmp]# snmpget -v2c -c zzulyt 172.16.137.128 1.3.6.1.4.1.2021.10.1.3.1
UCD-SNMP-MIB::laLoad.1 = STRING: 0.01

四、CPU监控

1.CPU三个重要的概念

上下文切换:CPU调度器实施的进程的切换过程;

运行队列(负载):负载可以理解为运行队列里单位时间内的排队线程的平均数,(负载只是一个参考值,负载高未必系统繁忙);

使用率:指运行的程序占用的CPU资源,表示你的机器在某个时间点的运行程序的情况。

2.确定服务类型

IO密集型——数据库
CPU密集型——web、mail

3.确定性能基准线

运行队列:1-3线程;1CPU;4核;负载不超过12(经验值)

CPU使用:65%-70%的用户态利用率
30%-35%的内核利用率
0%-5%的空闲利用率

4.监控工具

(1)top

[root@localhost ~]# top
top - 13:09:07 up 17:02,  3 users,  load average: 0.04, 0.03, 0.05
Tasks: 105 total,   1 running, 104 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   999696 total,   145684 free,   161652 used,   692360 buff/cache
KiB Swap:  2097148 total,  2095184 free,     1964 used.   659484 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                    
     1 root      20   0  125364   3404   2092 S  0.0  0.3   0:09.59 systemd                                    
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd                                   
     3 root      20   0       0      0      0 S  0.0  0.0   0:01.58 ksoftirqd/0                                
     5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H                               
     7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0                                
     8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh                                     
     9 root      20   0       0      0      0 S  0.0  0.0   0:04.28 rcu_sched                                  
    10 root      rt   0       0      0      0 S  0.0  0.0   0:00.82 watchdog/0

top命令中 P—>按CPU使用率排序
M—>按内存使用率排序

(2)安装sysstat,使用vmstat或mpstat工具

[root@localhost ~]# yum install -y sysstat
#每一秒显示一次监控信息,显示10次
[root@localhost ~]# vmstat 1 10
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   1964 141160      0 696360    0    0    16    15   51   49  0  0 100  0  0
 0  0   1964 141160      0 696376    0    0     0     0   76   83  0  0 100  0  0
 0  0   1964 141160      0 696376    0    0     0     0   85   92  1  0 99  0  0
 0  0   1964 141160      0 696376    0    0     0     0   92   90  0  0 100  0  0
 0  0   1964 141160      0 696376    0    0     0     0   96   96  0  0 100  0  0
 0  0   1964 141160      0 696376    0    0     0     0   89   90  0  1 99  0  0
 0  0   1964 141160      0 696376    0    0     0     0   88   84  0  0 100  0  0
 0  0   1964 141160      0 696376    0    0     0     0   82   81  0  0 100  0  0
 0  0   1964 141160      0 696376    0    0     0     0  106  110  0  1 99  0  0
 0  0   1964 141160      0 696376    0    0     0     0   83   79  0  0 100  0  0
#每一秒显示一次监控信息,显示5次 
[root@localhost ~]# mpstat 1 5
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain)     2019年08月22日     _x86_64_    (1 CPU)

13时56分36秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
13时56分37秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
13时56分38秒  all    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00
13时56分39秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
13时56分40秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
13时56分41秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
平均时间:  all    0.00    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00   99.80

五、内存监控

vmstat显示的参数说明

swpd:已使用的交换分区的大小
free:可用的物理内存的大小
si:从磁盘交换到内存的交换页数量,单位:KB/秒
so:从内存交换到磁盘的交换页数量,单位:KB/秒
bi:每秒从块设备接收到的块数,单位:块/秒 也就是读块设备
bo:每秒发送到块设备的块数,单位:块/秒 也就是写块设备
in:每秒的中断数,包括时钟中断。与cs一般同步增长。in和cs两值越大,会看到由内核消耗的CPU时间(sy)也会越大
cs:每秒的环境(上下文)切换次数
us:用户CPU时间(非内核进程占用时间)(单位为百分比)。 us的值比较高时,说明用户进程消耗的CPU时间多
sy:系统使用的CPU时间(单位为百分比)。sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
id:空闲的CPU的时间(百分比),在Linux 2.5.41之前,这部分包含IO等待时间。
wa:等待IO的CPU时间,在Linux 2.5.41之前,这个值为0 .这个指标意味着CPU在等待硬盘读写操作的时间,用百分比表示。wait越大则机器io性能就越差。说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)
st:针对虚拟技术,如果st不为0,说明本来分配给本机的CPU时间被其他虚拟机偷走了

六、系统监控

一、硬盘监控

通过iotop工具监控硬盘

[root@localhost ~]# yum install iotop
[root@localhost ~]# 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
......
二、网络监控

通过iftop监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等。

[root@localhost ~]# yum install iftop
[root@localhost ~]# iftop -n

三、利用nmon监控并分析数据

1.去官网下载nmon的二进制文件

2.将文件共享给虚拟机的系统

[root@localhost ~]# cd /mnt/hgfs/虚拟机共享
[root@localhost 虚拟机共享]# chmod +x nmon16e_x86_rhel71
[root@localhost 虚拟机共享]# ./nmon16e_x86_rhel71

3.主机下载nomn_analyzer

下载后的文件夹里包含:

4.将检测结果生成Excel文件

在虚拟机系统中输入监控并将结果生成文件的命令

[root@localhost 虚拟机共享]# ./nmon16e_x86_rhel71 -c 10 -s 10 -f
#检查发现多了一个nmon文件,190826表示年月日,1542表示时分
[root@localhost 虚拟机共享]# ls
localhost_190826_1542.nmon  nmon16e_x86_rhel71

在主机打开nomn_analyzer文件夹中的nmon analyser v61文件,点击Analyze nmon data

选择共享文件夹中的nmon文件,即可生成图表

(底部的表格栏即为监控的参数名称)