摘要:通过程序采集服务器的性能指标,并以此数据为基础构造监控系统,是运维的常见需求。本文阐述各种主要性能指标的具体采集方法和技术。原文系统性能指标的采集方法篇的采样指标分为总体指标和单核指标,通过读取文件,可以得到总体数据和每个的数据。
通过程序采集服务器的性能指标,并以此数据为基础构造监控系统,是运维的常见需求。本文阐述各种主要性能指标的具体采集方法和技术。
原文:系统性能指标的采集方法(Linux篇)
CPUCPU的采样指标分为总体指标和单核(core)指标,通过读取/proc/stat文件,可以得到总体数据和每个core的数据。
user nice sys idle wait irq soft_irq steal cpu 263 0 800 2121043 184 71 25 0 0 cpu0 117 0 436 1060548 113 71 7 0 0 cpu1 146 0 364 1060494 71 0 17 0 0 ...
这里每一列表示的是cpu在某一方面的时间片占用ticks,见上图。在具体计算使用率的时候,我们可以将前后两次采值相减,然后除以前后两次total ticks的差值,就可以计算出cpu在不同方面的使用率。
CPU还有一个指标较loadavg,可通过/proc/loadavg文件获得:
0.00 0.01 0.05 1/105 2126
这表示,CPU总体上在1分钟,5分钟,15分钟平均任务队列中的任务数量。在单核CPU的情况下,这个数字如果超过1,说明CPU有等待的任务,CPU资源不够。如果在多核的CPU下,需要将这些数字除以core的数量,再和1比较。
内存内存的总体使用信息,可以通过/proc/meminfo获得:
MemTotal: 1922052 kB MemFree: 1679456 kB Buffers: 67560 kB Cached: 61752 kB
linux中内存管理有些特殊性。当读写文件时,内核会使用一些内存,将文件缓存在这部分内存中,以便下次更快速的IO。而当系统内存不足时,内核会释放这部分内存。IO缓冲和其他缓冲共同构成了上面的Buffers和Cached。换句话说,我们在计算系统实际物理内存剩余量时,应当将Buffers和Cached加上。否则随着系统的运行,可用内存可能会始终很少,但这并不意味着系统内存不足。
Swapswap分区是一种特殊的分区,Unix系统用于在物理内存告急的时候,将内存数据换出(page out),以腾出更多物理内存。系统支持1个或多个swap分区。通过mkswap可以将一个分区设置为swap分区。在fstab中,swap分区可以这么挂载:
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
一般来说,我们关心每个swap分区的使用率和总体swap的使用率(总体使用率其实是单个之和)。总体使用率可以通过如下方法获得:
cat /proc/meminfo | grep Swap
对于某个swap实例的使用率,通过/proc/swaps文件获得
有时,我们还需要知道总共有多少个page被换入和换出,这可以通过如下方式获得
cat /proc/vmstat | grep pswp文件系统
运维一般比较关心文件系统的使用率。在linux下,有两种主要的方法来获取文件系统列表。一种是读取/etc/mtab,不过这个文件所展示的内容可能过多,通常我们可以过滤掉总大小为0的文件系统。另外,有些时候,可能出现重复的挂在条目,例如:
rootfs / rootfs rw 0 0 /dev/mapper/centos-root / ext4 rw,seclabel,relatime,data=ordered 0 0
上面两项都是指向/的挂载。而其实通过df出来的结果确只有/dev/mapper/centos-root。过滤的规则是,设备所在目录有/的优先。因此/dev/mapper/centos-root比rootfs具有更高的优先级。
另一种获取文件系统的方法是调用setmntent(MOUNTED, "r"),getmntent_r和endmntent函数。
获取到文件系统列表后,需要获取目录的使用率。可以直接stat这个目录,或者调用statvfs。
磁盘IO磁盘IO统计一般通过iostat工具来观察。不过作为采集器而言,需要从几个文件系统中获取:
对于内核>2.6,可以读取/proc/diskstats
对于内核>2.4,可读取/proc/partitions
对于文件中的各个字段的含义,详见I/O statistics fields。由于其中的数据时累加值,所以跟CPU一样,需要将连续的两次采样值,进行某些计算来得到相应的指标。这块的计算方法主要参考iostat的源码,也可以参考Linux内核源码详解——命令篇之iostat。这篇文章iostat来对linux硬盘IO性能进行了解 对计算出来的各个指标进行的实际的解释。
每次IO,可能是读可能是写(每秒多少次IOr/s w/s)。IO请求会消耗时间,这个时间(总等待时间await)分为在队列中等待的时间,以及IO本身的时间消耗(服务时间svctm)。服务时间的长短取决于IO请求本身需要读取的数据的大小(每次IO的数据大小avgrq-sz)。如果当前IO无法立刻得到处理,那么就会排队(单位时间IO队列的平均长度avgqu-sz)。为了优化IO,驱动程序可能会将前后多次IO合并为一次进行,这样可以减少实际的IO次数,提升效率(每秒合并读写次数rrqm/s wrqm/s)。IO操作本身会占用CPU,IO操作占用CPU时间片的占比(IO繁忙busy),决定了IO是否繁忙。
网络流量读取网口状态相对简单,只需要周期性的读取/proc/net/dev文件即可,其中包含每一个网卡的数据:
Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed lo: 672 7 0 0 0 0 0 0 672 7 0 0 0 0 0 0 eth0: 15025028 106459 0 0 0 0 0 0 67776375 80642 0 0 0 0 0 0 eth1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/9839.html
摘要:指标虚拟内存已使用的大小,如果大于,表示你的机器物理内存不足了每秒从磁盘读入虚拟内存的大小,如果这个值大于,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。每秒虚拟内存写入磁盘的大小,如果这个值大于,同上,单位为。 原理剖析(第 013 篇)应用系统性能调优 - 一、大致介绍 1. 本人接手的一个打车系统,因为出现了一次响应十分缓慢的情况,因此才有了应用调优的篇章; 2、由于...
据云智慧统计,APM从客户端采集的性能数据可能占到业务数据的50%,而企业要做到从Request到Response整个链路中涉及到的所有数据的准确采集,并进行有效串接,进而实现真正的端到端,绝非一件易事。那么云智慧是如何进行APM数据采样的,又是如何在端到端应用性能管理中满足用户对业务数据的高性能分析的呢?在2016年9月全球运维大会的APM专场上,云智慧首席架构师高驰涛先生为你揭晓APM背后的大...
摘要:大数据运维更偏向于大数据生态的大数据应用运维。后面我们会上大数据开发课程,其实大数据开发和大数据运维课程很多跟运维课程是重叠的,只是掌握的着重点不同。因材施教,重点会针对每个小伙伴的情况,基本水平,确立职业规划,基于职业规划定制学习计划。 一.大数据运维相关答疑与概述 1.0 课程与老师介绍...
摘要:性能测试中,经常要对服务器性能指标比如内存磁盘及网络等等进行监测,从而分析出软件的性能瓶颈,方便后续优化。 性能测试中,经常要对服务器性能指标(比如CPU、内存、磁盘IO及网络IO等等)进行监测,从而分析出软件的性能瓶颈,方便后续优化。经过资料收集,找到一款比较比较好用的Linux系统服务...
摘要:每秒实时处理超过万项监控指标,让异常无所遁形。此外,对于复杂数据库故障事后排查故障根源现场还原历史事件追踪也迫使我们建设一个覆盖线上所有环境数据库实例事件的监控系统,做到覆盖阿里全球子公司所有机房。所有性能指标做到秒级连续不间断监控。 摘要: 2017双11再次创下了32.5万笔/秒交易创建的纪录,在这个数字后面,更是每秒多达几千万次的数据库写入,如何大规模进行自动化操作、保证数据库的...
阅读 991·2021-11-23 10:10
阅读 1258·2021-09-30 09:47
阅读 1238·2021-09-30 09:47
阅读 701·2021-09-27 14:02
阅读 2848·2019-08-30 15:45
阅读 2909·2019-08-30 14:11
阅读 3460·2019-08-29 14:05
阅读 1695·2019-08-29 13:51