像大部分项目一样涉及到了linux 设备的资源监控问题,故而总结如下!
一般而言 root# top
就显示了当前的所有设备资源信息,但是我们要想在程序中获取并处理还是不便的
一, linux cpu使用率计算
从前往后数字的意义分别是:
//CPU指标:user,nice, system, idle, iowait, irq, softirq
cpu 3510242 11471 238410 755073368 9581 133818 93993 0 0 0
user: 用户态时间
nice: 用户态时间(低优先级,nice>0)
system: 内核态时间
idle: 空闲时间
iowait: I/O等待时间
irq: 硬中断
softirq: 软中断
%us:表示用户空间程序的cpu使用率(没有通过nice调度)
%ni:表示用户空间且通过nice调度过的程序的cpu使用率。
%sy:表示系统空间的cpu使用率,主要是内核程序。
%id:空闲cpu
%wa:cpu运行时在等待io的时间
%hi:cpu处理硬中断的数量
%si:cpu处理软中断的数量
%st:被虚拟机偷走的cpu
注:99.0 id,表示空闲CPU,即CPU未使用率,100%-99.0%=1%,即系统的cpu使用率为1%。
每秒采集一次 也可以按需求采集
1、记录某个时刻cpu的使用情况
2、等上一个时间段
3、再记录此刻的cpu使用情况
4、计算总的时间片
把第一次的所有cpu使用情况求和,得到start.totalTime,把第二次的所有cpu使用情况求和,得到end.totalTime,end.totalTime - start.totalTimt() 得到这个时间段的所有时间片。
5、计算use时间
对应前三列的数据,用第二次的减去第一次的即可
root# cat /proc/stat
CPU 使用率计算:
(end.usedTime() - start.usedTime())/end.totalTime - start.totalTimt()
二,Linux 内存使用率计算
root# cat /proc/meminfo
内存使用率计算:
(总内存-可用内存) / 总内存
三,Linux 磁盘使用率计算
root# df -B 1
磁盘使用率的计算:
看到的就是了 37%
四,linux 系统运行时间计算
root# cat /proc/uptime
第一个就是linux自开机到目前为止的时间
获取监控数据命令
1.系统相关信息
OS内核版本
#uname -a
OS版本
#cat /etc/redhat-release
OS平台
#arch
采集OS类型
#uname -o
2. CPU相关信息
数量
#grep 'physical id' /proc/cpuinfo | sort -u |wc -l
线程
#grep 'processor' /proc/cpuinfo | sort -u | wc -l
核数
#grep 'core id' /proc/cpuinfo |wc -l
缓存
#cat /proc/cpuinfo |grep -i "cache size"
主频
#cat /proc/cpuinfo | grep MHz | uniq | head -n 1
型号
#cat /proc/cpuinfo |grep -i "model name"
3.硬盘相关信息
#yum install lshw
容量
#lshw -class disk |grep size: |awk '{print $3}'| awk -F"(" '{print $2}'|awk -F"TB" '{print $1}'
名字
#lshw -class disk |grep "logical name"
fw修订版本
#lshw -class disk |grep "version:"
厂商
#lshw -class disk |grep "product"
型号
#lshw -class disk |grep "product"