最近做了KVM&SPICE的性能测试,对大量的性能参数进行采集,主要用到vmstat 和nload工具来统计,监控脚本如下:
dr=/tmp/test/test_1 && type=click && mkdir -p ${dr} && echo "vmstat 1 300 >
${dr}/vmstat_${type}.txt && " |/bin/bash && echo "nload -t 1000 -U k -u k > ${dr}/nload_${type}.txt &" |/bin/bash && sleep 300 && ps aux |grep nload |awk '{print $2}' | xargs kill -9 || echo "Done"
其中:
dr=/tmp/test/test_1 表示监控数据文件放置的文件夹
type=click 表示点击操作
echo "vmstat 1 300 > ${dr}/vmstat_${type}.txt & " |/bin/bash 每一秒监控一次,一共监控300秒,(来自于最大时间窗口5分钟)并放置在后台执行。
echo "nload -t 1000 -U k -u k > ${dr}/nload_${type}.txt &" |/bin/bash 表示间隔1000毫秒采集一次数据, -U k -u k 表示单位为kBit/s
sleep 300 && ps aux |grep nload |awk '{print $2}' | xargs kill -9 这个表示300秒过后,Kill掉nload进程。
产生大量数据,要对这些数据绘图还是要有些技巧。
一幅图上画多条曲线,可以用plot 后面跟几个曲线定义,也可以用replot,但是replot并不能读取原来已经绘制的图片,所以还需要重新set output '${path}' 这样连同前面的曲线和replot的曲线会绘制到后面的文件中。这点要切记。
多幅图画在同一屏上,主要利用了multiplot模式来绘制,但是对于几个大量数据拼成一屏幕,还是要有点技巧的。同时要处理坐标系统,X,Y轴。
分享两个脚本,可以在上面做些修改,描出来的图更显专业。
--------------------------------------------------------------------------------------------------------------------------
root@kvm gnuplot_script]# cat test_1_click_load.plot
set terminal png
set output '/tmp/test/test_1/deal_with/images/test_1_click_load.png'
set size 1,1
set origin 0,0
set multiplot
set size 1,0.5
set origin 0,0.5
set yrange[0:5]
set title 'Load'
set xlabel 'Time(second)'
set ylabel 'Load number'
plot '/tmp/test/test_1/deal_with/vmstat_click.txt' using 1:2 with linespoints
set size 1,0.5
set origin 0,0
set yrange[0:5]
set title 'Blocked Processes'
set xlabel 'Time(second)'
set ylabel 'Bolcked Processes Number'
plot '/tmp/test/test_1/deal_with/vmstat_click.txt' using 1:3 with linespoints
unset multiplot
reset
--------------------------------------------------------------------------------------------------------------------------
set terminal png
set size 1,1
set origin 0,0
set output '/tmp/test/test_1/deal_with/images/test_1_click_io.png'
set multiplot
set size 0.5,0.5
set origin 0,0.5
plot '/tmp/test/test_1/deal_with/vmstat_click.txt' using 1:8 with lines title 'swap_in'
set size 0.5,0.5
set origin 0,0
plot '/tmp/test/test_1/deal_with/vmstat_click.txt' using 1:9 with lines title 'swap_out'
set size 0.5,0.5
set origin 0.5,0.5
plot '/tmp/test/test_1/deal_with/vmstat_click.txt' using 1:10 with lines title 'block_in'
set size 0.5,0.5
set origin 0.5,0
plot '/tmp/test/test_1/deal_with/vmstat_click.txt' using 1:11 with lines title 'block_out'
unset multiplot
reset