分享

RRD使用手记

 todaytomo 2007-07-18
今天完整的利用了RRD来进行数据源采集、RRD数据库生成、RRD数据更新、RRD画图。
1、数据源一般用Shell脚本或者其他语言来生成,最终都要得到类似如下格式的数据源:
    $time:$val1:val2:val3:val4...
    其中,time变量表示该数据源的时间戳;val表示对应的数据源。
    注意,这些变量所代表的数据不能有空格,比如val1= 34,这里“=”和“34”之间有空格,那么改数据源就是不完整的,将会出现诸如:
      expected 3 data sources(get 1)...表示我们定义了3个数据源,但现在只取到了1个,原因就是空格,这是把要输入的数据源打印出来就看出问题了。
2、RRD数据根据需要记录的数据源来生成,具体的格式和选项就参考http://www.360doc.com/showWeb/0/0/382048.aspx 。
    大致的是 rrdtool create test.rrd --start=`date --date="1 day ago" +%s` DS:val1:GAUGE:600:U:U RRA:AVERAGE:0.5:1:600
3、RRD数据库更新,这个也比较简单:
    rrdtool update test.rrd DS, 这里的数据源来自于第一步;可以是类似于第一步中的变量形式,或者把实际数据放到文件中,而用cat来显示;
4、RRD画图,
    rrdtool gragh test.gif --start `date --date="4 hours ago" +%s` --vertical-label "Hello world" --title="test"
    DEF:val1=test.rrd:val1:AVERAGE
    DEF:val2=test.rrd:val2:AVERAGE
    "CDEF:val3=val1,val2,+,100,*"
    COMMENT:"This is a example"
    GPRINT:val1:MAX:"12.0%lf"
    这里,需要注意CDEF表达式后面要跟逆波兰式(RPN,Reverse Poland Notation),也就是后序遍历二叉树(先后序左子树;然后后序右子树;最后根)。而且如果里面含有数的话要用引号括起来,否则就会出现"can‘t find function 100"的错误。
    还是比较有意思的,这些东西都是很规律的,是1就是1,不会含糊,所以关键是要把原理搞清楚

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多