集群监控主要指标(load、CPU利用率、磁盘剩余空间、磁盘IO、内存使用)

文章转载自:http://www.cnblogs.com/xrq730/p/5171463.html

大型互联网企业的背后,依靠的是成千上万台服务器日夜不停的运转,以支撑其业务的运转。宕机对于互联网企业来说,代价是沉重的,轻则影响用户体验,重则直接影响交易,导致交易下跌,并且给企业声誉造成不可挽回的损失。对于这些机器对应的开发和运维人员来说,即便是每台机器登陆一次,登陆那么多台机器也够呛,何况还需要进行系统指标的检查。因此,依靠人力是不可能完成24小时不间断监控服务器的任务的。

如今,互联网已经深入到人们生活的每个角落,可以想象一下,假如哪一天Google或者Baidu不能搜索,抑或是amazon或者taobao不能进行购物,这个世界将会如何?因此,成熟稳健的系统往往需要对集群运行时的各个指标进行收集,如系统的load、CPU利用率、I/O繁忙程度、网络traffic、内存利用率、应用心跳等,对这些信息进行实时监控,如发现异常情况,能够第一时间通知到相应的开发和运维人员进行处理,在用户还没有察觉之前处理完故障和异常,将损失降低到最低。

下面来看一下,常见的集群监控指标。

load:反映系统忙闲程度

在Linux系统中,可以通过top和uptime命令来查看系统的load值,那么什么是load呢?系统的load被定义为特定时间间隔内运行队列中的平均线程数,如果一个线程满足以下条件,该线程就会处于运行队列中:

  • 没有处于I/O等待状态
  • 没有主动进入等待状态,也就是没有调用wait操作
  • 没有被终止当然load计算的算法较为复杂,因此,这种情况也不是绝对的。

load值越大,也就意味着系统的CPU越繁忙,这样线程运行完以后等待操作系统分配下一个时间片段的时间也就越长。假设:

  • CPU1分钟内最多处理100个线程任务,load值为0.2,意味着这1分钟内CPU处理了20个任务
  • CPU1分钟内最多处理100个线程任务,load值为1,意味着这1分钟内CPU刚好将这100个任务处理完
  • CPU1分钟内最多处理100个线程任务,load值为1.7,意味着这1分钟内CPU除了处理了这100个任务外,还有70个任务等待处理

当然,load的计算算法较为复杂,并不像上面说的这么简单,这么打比方只是为了简单说明问题。假设一般来说,只要load值不大于3,我们认为它的负载是正常的(考虑到多核CPU的系统),如果load值大于5,则表示当前系统的负载已经非常高了,需要采取相应的措施来降低系统的负载。

w、top、uptime这三个命令都可以用来查看系统的load值,下面演示一下使用uptime命令查看系统的load:

image.png

load average后面跟的三个值分别表示在过去1分钟、5分钟、15分钟内系统的load值。

CPU利用率:反映CPU的使用和消耗情况

在Linux系统中,CPU的时间消耗主要在这几个方面:用户进程、内核进程、中断处理、I/O等待、Nice时间、丢失时间、空闲等几个部分,而CPU的利用率则为这些时间所占用的总时间的百分比。通过CPU的利用率,能够反映出CPU的使用和消耗情况。

可以通过top命令来查看Linux系统的CPU消耗情况:

image

上面一部分,也就是"%Cpu(s)"开头的内容是我们需要关注的,后面跟的列便是各种状态下CPU所消耗的时间比,看下每一列的意思:

  • 用户时间(User Time)即us所对应的列,表示CPU执行用户进程所占用的时间,通常情况下希望us的占比越高越好
  • 系统时间(System Time)即sy所对应该的列,表示CPU自内核态所花费的时间,sy占比比较高通常意味着系统在某些方面设计得不合理,比如频繁的系统调用导致的用户态和内核态的频繁切换
  • Nice时间(Nice Time)即ni所对应的列,表示系统在调整进程优先级的时候所花费的时间
  • 空闲时间(Idle Time)即id所对应的列,表示系统处于空闲期,等待进程运行,这个过程所占用的时间。当然,我们希望id的占比越低越好
  • 等待时间(Waiting Time)即wa所对应的列,表示CPU在等待I/O操作所花费的时间,系统不应该花费大量的时间来进行等待,否则便表示可能有某个地方设计不合理
  • 硬件中断处理时间(Hard Irq Time)即hi对应的列,表示系统处理硬件中断所占用的时间
  • 软件中断处理时间(Soft Irq Time)即si对应的列,表示系统处理软件中断所占用的时间
  • 丢失时间(Steal Time)即st对应的列,实在硬件虚拟化开始流行后操作系统新增的一列,表示被强制等待虚拟CPU的时间

对于多个或多核CPU的情况,常常需要查看每个CPU的利用情况,此时可以按1,便可以查看到每个核的CPU利用率:

image.png

看到上面出现了"%Cpu0"而不是"%Cpu(s)",因为只有一个CPU,所以只展示Cpu0的CPU利用率

磁盘剩余空间

磁盘剩余空间也是一个非常关键的指标,如果磁盘没有足够的剩余空间,正常的日志写入以及系统I/O都将无法进行。

通过df命令可以查看磁盘的剩余空间:

image

-h表示按单位格式化输出。该命令显示sda1一共有19GB的空间,使用了4.3GB,剩余14GB可用。

如果要查看具体目录所占用的内存空间,分析大文件所处位置,可以使用du命令来进行查看:

image.png

-d指定了递归深度为1层,表示只列出指定目录的下一级目录文件大小,-h用来表示格式化输出。

磁盘I/O

磁盘I/O的繁忙程度也是一个重要的系统指标,对于I/O密集型的应用来说,比如数据库应用和分布式文件系统,I/O的繁忙程度也一定程度上反映了系统的负载情况,容易成为应用程序性能的瓶颈。可以使用iostat来查看系统的I/O状况:

image.png

看到报错,这也很正常。Linux环境下每个命令就和Windows环境下的软件一样,必须先安装再使用,按照报错的提示来看,iostat当前并没有安装。所以我们按照提示的来安装一下sysstat就可以了:

image

安装完毕后,再使用iostat:

image.png

-d表示查看磁盘使用状况,-k表示以KB为单位显示。各个列中,Device表示设备名称、tps表示每秒处理的I/O请求数、kB_read/s表示每秒从设备读取的数据量、kB_wrtn/s表示美标向设备写入的数据量、kB_read表示读取的数据总量、kB_wrtn表示写入的数据总量。

内存使用

程序运行时的数据加载、线程并发、I/O缓冲等,都依赖于内存,可用内存的大小决定了程序是否能正常运行以及运行的性能。

通过free命令能够查看到系统的内存使用情况,加上-m参数表示以MB为单位:

image.png

Linux的内存包括物理内存Mem和虚拟内存Swap,下面介绍每一列的含义:

  • total----内存总共的大小
  • used----已使用的内存大小
  • free----可使用的内存大小
  • shared----多个进程共享的内存大小
  • buffers----缓冲区的大小
  • cached----缓存的大小

Linux系统的内存管理机制与Windows系统有所不同,其中有一个思想便是内存利用率最大化,内核会将剩余的内存申请为cached,而cached不属于free范畴。因此,当系统运行时间较长时,会发现cached这块区域比较大,对于有频繁文件读/写操作的系统,这种现象更为明显。

但是,free的内存小,并不代表可用小,当程序需要申请更大的内存时,如果free内存不够,系统会将剩余部分cached会buffers内存回收,回收的内存再分配给应用程序。因此,Linux可用于分配的内存不仅仅只有free的内存。可看free命令显示的第三行,也就是"-/+ buffers/cache"对应的行,这一行将内存进行了重新计算,used减去buffers和cached占用的内存,而free则加上了buffers和cached对应的内存。

对于应用来说,更值得关注的应该是虚拟内存Swap的消耗,Swap内存使用过多,表示物理内存已经不够用了,操作系统将本应该物理内存存储的一部分内存页调度到磁盘上,以腾出足够的空间给当前的进程使用。当其他进程需要运行时,再从磁盘将内存的页调度到物理内存当中,以恢复进程的运行。而这个调度的过程中,会产生Swap I/O,如果Swap I/O较为频繁,将严重地影响系统的性能。

通过vmstat命令,可以查看到Swap I/O的情况:

image.png

其中,swap列的si表示每秒从磁盘交换到内存的数据量,单位是KB/s,so表示每秒从内存交换到磁盘的数据量,单位也是KB/s。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342