RH442攻略之gnuplot

gnuplot用于根据已有的数据生成二维图表

1、安装

[root@server7 ~]# yum -y install gnuplot
...
...
Dependencies Resolved
=========================================================================================
 Package                  Arch             Version                  Repository      Size
=========================================================================================
Installing:
 gnuplot                  x86_64           4.2.6-2.el6              base           473 k
Installing for dependencies:
 gd                       x86_64           2.0.35-10.el6            base           142 k
 gnuplot-common           x86_64           4.2.6-2.el6              base           555 k
 libXpm                   x86_64           3.5.8-2.el6              base            59 k
Transaction Summary
=========================================================================================
Install       4 Package(s)
Total download size: 1.2 M
Installed size: 3.1 M
...
...
Complete!


2、运行

因为需要打开图片,所以需要在runlevel5下,或者将图片生成到http或ftp中,在其他图形界面的主机上打开。

用gnuplot生成系统运行状态图表钱,需要整理出以时间维度排序的数据表,

sar -d -p |grep vgsrv-root| awk '/^[0-2]/ {print $1,$4}' > diskdata
#生成磁盘数据读取的信息(单位:扇区/每秒,每扇区512字节,除以2即为KB/s)

有了原始数据之后就可以通过gnuplot来生成图表了

gnuplot
    #进入gnuplot编辑界面
gnuplot> set xdata time
    #设置x轴为时间
gnuplot> set timefmt "%H:%M:%S"
    #设置时间的格式,记得加引号(单双均可),并且和数据源中的时间格式匹配。
    #可以通过help命令输入timefmt来查询时间格式的字母定义。
gnuplot> set format x "%H:%M"
    #设置x轴显示格式为%H:%M,否则时间跨度过长可能自动变为日期格式
gnuplot> set xlabel "Time"
    #设置x轴标签
gnuplot> set ylabel "Read_Rate"
    #设置y轴标签
gnuplot> plot "/root/diskdata" using 1:2 title "rd_sec" with line
    #生成图表,数据来源为"/root/diskdata"
    #using 1:2 对应数据来源中的第1、2列,冒号左边为x轴,右边为y轴
    #title 为数据标签可省略可自定义,加引号(单双均可)
    #with line 表示在数据点间用直线连接起来

注意,如果需要生成多条数据曲线,请在plot成图的一条命令后面追加,除了前面plot不用重复写之后,后面的部分都是一样的格式。每条曲线的命令之间用逗号分隔它们。


效果如下图,(因为是测试数据,起伏比较大且比较规律,请无视之)

wKioL1MlxDHgVSEZAAGFczywUJo566.jpg


当然,每次这么输命令生成图表肯定是不方便,也不实用,所以,脚本化它

[root@server7 ~]# vim disk.gnuplot
[root@server7 ~]# cat disk.gnuplot
set xdata time
set timefmt "%H:%M:%S"
set format x "%H:%M"
plot "/root/diskdata" using 1:2 title "rd_sec" with line
#还是前面的那几条命令

脚本有了之后,执行命令

gnuplot -persist disk.gnuplot

记得参数 -persist (这个和其他linux命令的参数相比显得有点异类,非单字符参数却用的单-号),此参数使gnuplot生成的图表在gnuplot执行完毕后仍然保留在屏幕上,否则生成的图表将一闪即逝。


如果还需要进一步脚本化,将获取数据的命令和gnuplot生成图表的命令(此时不需要-persist参数)一并脚本化,然后crond执行,生成的图片放在web页面上,就可以通过web浏览器查看最新的监控数据了。

这里,生成图片到指定目录,需要在gnuplot的脚本中定义,以下是一个较完整gnuplot脚本示例

set xdata time
set timefmt '%H:%M:%S'
set xlabel 'Time'
set ylabel 'Load'
set yrange [0:4]
#y轴的取值范围,根据实际情况进行设置,方括号内是最小值和最大值,可以只设置其中一个,比如[0:]
set term png size 1024,768 font '/usr/share/fonts/liberation/LiberationsSans-Regular.ttf'
#暂时不知道如何修改可以直接使用字体名字而不用绝对路径
set output "/var/www/html/stat/`data +%F`.png"
plot '/tmp/cpuload.data' using 1:2 title '1 Min' with line, \
'/tmp/cpuload.data' using 1:3 title '5 Min' with line, \
'/tmp/cpuload.data' using 1:4 title '15 Min' with line


当然,这只是最基础的监控,数量级上和专业的监控工具肯定没得比了,但大概原理就是这么的一个过程。



你可能感兴趣的:(gnuplot,rh442)