用gnuplot给采集数据绘图

    最近做了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秒过后,Killnload进程。

 

产生大量数据,要对这些数据绘图还是要有些技巧。

    一幅图上画多条曲线,可以用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

 

 

你可能感兴趣的:(用gnuplot给采集数据绘图)