腾讯云cvm的关于监控指标的相关解释

2020-08-25 16:01:20 浏览数 (1)

平常处理服务器的问题遇到的最多的是负载高了,内存高了,io高了等问题,这里最明显的表现就是相关的监控指标了,对于诊断这种问题起到事半功倍的效果。

又因为监控指标也仅仅是指标,并看到具体是什么导致的,所以常用的linux 内部的相关系统命令也是有必要了解和掌握的

1、腾云cvm监控信息

关于cvm的监控指标都是根据云监控侧的一个监控脚本来进行采集的,如果说机器上没有这个脚本或者说用了非腾讯云cvm默认的dns的话,这里我们就看不到其监控信息了,所以如果我们没有特殊需求的话,建议是用腾讯云cvm自己的dns和监控脚本

具体的各种指标含义,见这个文档

https://cloud.tencent.com/document/product/248/6843

这里有个基础cpu利用率,这个是通过宿主机来采集的监控信息,服务器如果挂了,这个监控信息我们还是可以在控制台看到的

2、常用的监控命令

除了以上云上的监控指标介绍外,其实我们还是要重点看下系统内的相关指标是什么意思,才可以更加清楚去排查问题,处理问题。

2.1、top/atop系统监控命令

1)、第一排参数

up:机器已经运行了多长时间

1 user:当前有多少用户存活

load average:cpu平均负载表示在某段时间内正在处理(占有cpu时间)的进程以及等待处理(等待唤醒的进程)的进程数,上面三个数分别表示1分钟、5分钟、15分钟的平均负载,一般关注5分钟或者15分钟的指标就行,可以代表机器的真正压力。

一核就好比一座桥,假如一个cpu可以同时处理100个进程,就好比一座桥可以同时过100个人,如果同时过20个人,那么cpu的负载就是0.2,过100个人的时候,正好达到瓶颈负载1,如果说现在有150个人在过桥,其中有50个人在等待中,那么此时cpu负载就是1.5,虽然100的并发没有变,但是cpu已经无法支撑这么多任务了,会拖长整体的处理速度,如果长时间高负载的话就需要考虑升级配置来增加处理效率了

tasks:总进程数 running:正在运行的进程数 sleeping:睡眠中的任务数 stopped:停止的进程数 zombie:僵尸进程(已经不占用cpu和内存了,但是还未被销毁的进程数,这个状态是每个进程必须经历的,子进程释放掉资源后,但是父进程没有及时回收或者处理,就会出现这种‘Z’状态的进程,如果说父进程在子进程结束之前结束,就会交由系统处理掉了或者说直接kill掉父进程)

2)、第二排参数

%Cpu(s):cpu使用率

us, user: 运行(未调整优先级的) 用户进程的CPU时间

sy,system: 运行内核进程的CPU时间

ni,niced:运行已调整优先级的用户进程的CPU时间

wa,IO wait: 用于等待IO完成的CPU时间

hi:处理硬件中断的CPU时间

si: 处理软件中断的CPU时间

st:底层虚拟系统占用的cpu时间

cpu使用率是最常见的了,可以直接体现cpu的繁忙度,表示某段时间内每个进程所占用的cpu时间百分比,平常碰到最多的就是高cpu使用率了,就拿java进程来说吧,如果java进程长期占用cpu导致高使用率的话,其实就要考虑我的配置能否跟上我的程序了,如果是某个时间段或者某个瞬间出现高使用率的情况,此时需要针对具体情况来分析,比如是否当时有个计算型的操作或者循环类操作等,一般对于java来说有结合linux的相关命令有比较容易定位的步骤

1.jps 获取Java进程的PID。

2.jstack pid >> java.txt 导出CPU占用高进程的线程栈。

3.top -H -p PID 查看对应进程的哪个线程占用CPU过高。

4.echo “obase=16; PID” | bc 将线程的PID转换为16进制,大写转换为小写。

5.在第二步导出的Java.txt中查找转换成为16进制的线程PID。找到对应的线程栈。

6.分析负载高的线程栈都是什么业务操作。优化程序并处理问题

3)竖排参数

PID :进程id

USER :进程所有者

PR :进程优先级

NI :nice值。负值表示高优先级,正值表示低优先级

VIRT (kb): 进程起来时分配的内存,加载的代码、数据等申请的内存,如果进程申请了100M,但实际用了50M,这里就会增加100M,此指标实际并不是真正使用的内存量,VIRT=SWAP RES

RES(kb) :进程使用的、未被换出的物理内存大小,进程实际在用的进程,如果申请了100M,这个值就会直接增加100M。

SHR :共享内存大小,单位kb

S :进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

%CPU : 上次更新到现在的CPU时间占用百分比

%MEM : 进程使用的物理内存百分比

TIME :进程使用的CPU时间总计,单位1/100秒

COMMAND : 进程名称(命令名/命令行)

3、atop

因为top是展示实时的动态监控,无法获取历史监控信息,而atop可以做到历史监控信息的保存,如果自己本身有监控系统其实也不用安装atop

3.1、atop安装:

yum install -y atop

今天安装atop的时候居然卡住了。。

卡在这不动了

没办法,不重启机器的情况下处理吧

先把这个进程调度到后台,通过ctrl z调度到后台,然后执行 ps -aux | grep yum 找到卡住的yum进程,然后kill -9 pid 杀掉

至此认为可以正常启动了,但是还是有报错,如下

通过报错显示看似乎是rpmdb进程挂了,然后去找吧,当时正好在/usr/bin目录下,直接执行了这个rpmdb脚本,但是发现不让这么用,尴尬了··

正好看到提醒,有初始化、有重建,就想重建下吧

rpmdb --rebuilddb

执行后,发现没有报错,然后在去验证yum命令,发现正常了,然后再次安装atop就可以了

3.2、atop配置定时任务,间隔某时间段来拉取监控信息,便于后续查看

启动atop服务

systemctl start atop

配置间隔时间

cat /etc/sysconfig/atop

LOGINTERVA主要用于调整atop监控周期,默认600s采集一次,建议改到1分钟采集一次

日志存储目录(默认)/var/log/atop

默认定时任务如下

/usr/share/atop/atop.daily配置日志保留时间,默认是28天,因为我们有时需要让客户按照这个命令,所以一般情况下为避免长时间运行占用太多磁盘空间,建议改小到7天左右或者直至问题复现后关掉

atop在启动之后,会将采集记录在 /var/log/atop目录中,可执行如下命令查看日志文件

atop -r 日志文件

3.3、atop常用指令

c 按照进程cpu使用率进行降序筛选

m按照进程内存使用率进行降序筛选

d 按照进程磁盘使用率进行降序筛选

a 按照进程资源综合使用率进行降序筛选

n 按照进程网络使用率进行降序筛选(需要额外安装内核模块才支持,默认不支持)

t 跳转到下一个监控采集点

T 跳转到上一个监控采集点

B 指定时间点,格式 hh:mm:ss

3.4、系统资源监控字段含义

详细字段解释参考大佬文档:https://baijiahao.baidu.com/s?id=1658884324200587364&wfr=spider&for=pc

ATOP列:该列显示了主机名、信息采样日期和时间点

PRC列:该列显示进程整体运行情况

sys, user 表示 CPU 在内核态和用户态的运行时间比例

1、proc 为当前总进程数

2、trun表示 running 状态线程数

3、tslpi表示 sleeping interruptible 状态的进线程数

4、tslpu表示 sleeping uninterruptible 状态线程数

5、zombie表示僵尸进程数

6、clones 表示在监控周期(默认10s)内 clone() 系统调用次数

linux 中进程有两种 sleep 状态:

interruptible sleep: 进程接收系统信号,可以被系统信号中断,uninterruptible sleep: 进程不接收系统信号,不可被系统信号中断,包括kill -9 (SIGKILL 信号)。此状态的进程通常在等待系统资源,如磁盘IO或网络IO。

CPU列:该列显示CPU整体(即多核CPU作为一个整体CPU资源)的使用情况,我们知道CPU可被用于执行进程、处理中断,也可处于空闲状态(空闲状态分两种,一种是活动进程等待磁盘IO导致CPU空闲,另一种是完全空闲)

  1. sys、usr字段指示CPU被用于处理进程时,进程在内核态、用户态所占CPU的时间比例
  2. irq字段指示CPU被用于处理中断的时间比例
  3. idle字段指示CPU处在完全空闲状态的时间比例
  4. wait字段指示CPU处在“进程等待磁盘IO导致CPU空闲”状态的时间比例

CPU列各个字段指示值相加结果为N00%,其中N为cpu核数。

cpu列:该列显示某一核cpu的使用情况,各字段含义可参照CPU列,各字段值相加结果为100%

CPL列:该列显示CPU负载情况

  1. avg1、avg5和avg15字段:过去1分钟、5分钟和15分钟内运行队列中的平均进程数量
  2. csw字段指示上下文交换次数
  3. intr字段指示中断发生次数

MEM列:该列指示内存的使用情况

  1. tot字段指示物理内存总量
  2. free字段指示空闲内存的大小
  3. cache字段指示用于页缓存的内存大小
  4. buff字段指示用于文件缓存的内存大小
  5. slab字段指示系统内核占用的内存大小
  6. dirty字段指示需要写回磁盘的脏页用量,这部分内存使用已包含在cache中

SWP列:该列指示交换空间的使用情况

  1. tot字段指示交换区总量
  2. free字段指示空闲交换空间大小

PAG列:该列指示虚拟内存分页情况

swin、swout字段:换入和换出内存页数

DSK列:该列指示磁盘使用情况,每一个磁盘设备对应一列,如果有sdb设备,那么增多一列DSK信息

  1. sda字段:磁盘设备标识
  2. busy字段:磁盘忙时比例
  3. read、write字段:读、写请求数量

NET列:多列NET展示了网络状况,包括传输层(TCP和UDP)、IP层以及各活动的网口信息

  1. XXXi 字段指示各层或活动网口收包数目
  2. XXXo 字段指示各层或活动网口发包数目

4、sar监控命令

这个命令监控的系统组件很多而且很全,是一个全面的监控系统,虽然这些不要求售后掌握,但是客户有很多用这个命令的,而且腾讯云的后端监控有部分也是靠sar来监控的,所以我们要知道这个命令的常用指标的含义,具体可以参考这位大佬写,写的很全,很详细

https://www.jellythink.com/archives/483

0 人点赞