- 安装:yum install -y dstat
- dstat命令是一个用来替换vmstat、iostat、netstat、nfsstat和ifstat这些命令的工具,是一个全能系统信息统计工具。与sysstat相比,dstat拥有一个彩色的界面,在手动观察性能状况时,数据比较显眼容易观察;而且dstat支持即时刷新,譬如输入
dstat 3
即每三秒收集一次,但最新的数据都会每秒刷新显示。和sysstat相同的是,dstat也可以收集指定的性能资源,譬如dstat -c
即显示CPU的使用情况。 - dstat使用python写的,原理是读取linux本身的资源文件,计算资源使用情况,源码:https://github.com/dagwieers/dstat
- dstat只能统计每秒的均值,你如果需要统计n秒的均值,那只能自己计算了,方法dstat -n 1 5会显示6行数据,去掉第一行数据,另外5行数据相加求均值,就是5秒的均值,但是最坑的是,数值后面的单位会变。所以对于有单位的,就不能使用这种方法计算n秒的均值。
- 使用awk求和:awk '{for(n=1;n<=NF;n++)t[n]+=$n}END{for(n=1;n<=NF;n++)printf t[n]" ";print" "}'
效果:从图可以看出,net网络in/out、dsk硬盘rw输出的单位不是固定的。这对于脚本处理增添了很多麻烦
关于问题:
“如果有200毫秒的CPU瞬时高峰,会被抓住么?”
“我再加上这个监控项,或者我让采样间隔再密一点,会影响性能么”
请查看参考3
dstat可以扩展,可以使用插件,可以自己开发插件
其中最后两个参数表示,每隔 delay 秒显示一行,总计 count 行,默认值是 1s 和空 (无限)。如果 delay 大于 1 ,默认该行还是每隔 1s 更新一次,当超过 delay 秒后,换行。
需要注意的是,当 delay > 1 时,每秒的更新值是显示的之前统计的均值,如 delay=10 ,则会显示 1 秒的均值,2 秒的均值,…,也就是最终结果仍然是秒级的均值。
如果同时设置了 --noupdate ,则确实是每隔 delay 秒更新一次,而不会每秒更新一次。
参考:
1、http://man.linuxde.net/dstat
2、https://jin-yang.github.io/post/details-about-dstat.html
3、http://jackyrong.iteye.com/blog/2314909