JRobin Rrd 操作的笔记
仲孙鸿畴
2023-12-01
最近在一个网络服务器监控的项目中使用到rrd这个文件型数据库,借此做个记录以便自己备查,顺便与其他人分享下,让别人少走点弯路 :lol:,关于Rrd的介绍我这里就不罗嗦了,不清楚的,欢迎去GOOGLE。
一、rrd时间问题:在Java里面的Date都精确都毫秒,rrd里面保存的时间是秒,所以平时要把date.getTime()/1000 转化成秒,刚开始的时候经常会犯这个错误。我在项目里用的是jrobin这个纯java的rrdTool,里面有个方法org.jrobin.core.Util.getTime(),可以取当前时间,即单位为秒。不管是取图片还是存值,时间单位一定要转化为秒,这个要牢记。
二、rrd存值的问题:用Jrobin的存值的方法我发现一点,就是'GAUGE'类型的值,在某一个时间点开始存值,而且这个时间点之前一个步长时间点的值为空,这个值不会存下来。
举个例子说,
11点开始探测,11点之前没值, 11:00 探测值 a, 11:05 探测值 b,11:10 探测值 c,我的Rrd步长是300。这种情况下b,c的值会保存下来。
还有一种情况:
11点开始探测,11点之前没值, 11:00 探测值 a, 11:05 探测值 b,11:11 探测值 c,11:16 探测值d,我的Rrd步长是300。这种情况下a,d 的值会保存下来。
小结一下:就是存的值时间间隔一定要一个步长,至于具体原因还需要研究下jrobin的源代码。
三、rrd类型的问题:'GAUGE'保存当前值,'COUNTER'类型保存的值为前一个值见去当前值再除以步长,对应到是那种累加型的值。
四、rrd可以取某一个时间点的值?回答是可以。