rrdtool 绘图仅需 10 小时
rrdtool graphing only 10 hours
我在绘制 rrdtool 时遇到了一个问题,但并非总是如此。
我会尽力解释。
我有 2 个数据库(data1.rrd 和 data2.rrd),我绘制了 1h、12h、24h、1w、1m 和 1y 的图表,但由于某些原因,有时图表只显示 10 小时的时间流逝。
我初始化数据库如下:
${rrdtool} create ${rrd_dir}/temperatures.rrd \
--step ${step} \
DS:temp_cpd:GAUGE:120:0:U \
DS:temp_cpd_pecera:GAUGE:120:0:U \
DS:temp_cmts_catv:GAUGE:120:0:U \
RRA:AVERAGE:0.5:1:600
轮询器:
$rrdtool update ${rrd_file} --template temp_cpd:temp_cpd_pecera:temp_cmts_catv N:${temp_cpd}:${temp_cpd_pecera}:${temp_cmts_catv}
图表:
$rrdtool graph ${graph_dir}/temperatures-${start}.png \
--height=120 \
--width=500 \
--rigid \
--start -${start} \
--end now \
--watermark "`date +'%Y-%m-%d %H:%M - Radu Radu'`" \
--imgformat=PNG \
--title="${graph_desc}" \
-w 600 -h 200 \
--alt-autoscale-max \
--lower-limit 18 \
--vertical-label "Temperatura (ºC)" \
TEXTALIGN:left \
DEF:temp_cpd=${rrd_file}:temp_cpd:AVERAGE \
DEF:temp_cpd_pecera=${rrd_file}:temp_cpd_pecera:AVERAGE \
DEF:temp_cmts_catv=${rrd_file}:temp_cmts_catv:AVERAGE \
CDEF:ok_cpd=temp_cpd,100,/ \
CDEF:ok_cpd_pecera=temp_cpd_pecera,100,/ \
CDEF:ok_cmts_catv=temp_cmts_catv,100,/ \
LINE1:ok_cpd#ff0000:'CPD\t\t\t' \
GPRINT:ok_cpd:LAST:'Actual\:%6.2lf ºC' \
GPRINT:ok_cpd:AVERAGE:'Promedio\:%6.2lf ºC' \
GPRINT:ok_cpd:MAX:'Máximo\:%6.2lf ºC\n' \
LINE1:ok_cpd_pecera#00ff00:'CPD Pecera\t\t' \
GPRINT:ok_cpd_pecera:LAST:'Actual\:%6.2lf ºC' \
GPRINT:ok_cpd_pecera:AVERAGE:'Promedio\:%6.2lf ºC' \
GPRINT:ok_cpd_pecera:MAX:'Máximo\:%6.2lf ºC\n' \
LINE1:ok_cmts_catv#0000ff:'CMTS CATV\t\t' \
GPRINT:ok_cmts_catv:LAST:'Actual\:%6.2lf ºC' \
GPRINT:ok_cmts_catv:AVERAGE:'Promedio\:%6.2lf ºC' \
GPRINT:ok_cmts_catv:MAX:'Máximo\:%6.2lf ºC\n' \
轮询器运行每分钟执行一次温度采集命令。
另一个问题,我可以将图形轮询器的输出重定向到标准输出,然后在 php 循环中打印内容吗?因为现在我将 *.png 保存在 /graficas/FREQUENCY/HOST_NAME-GRAPH_NAME-INDEX.png 中,然后按如下方式访问它:
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "
<div class= 'graphSize' style='float:left'>
<a href='?page=GraphDetail&graph_id=".$row['graph_id']."&graph_desc=".$row['graph_desc']."'><img style='width:100%' src='/graficas/".$freq."/".$row['graph_name']."' onload='refreshIt(this)'></img></a>
</div>";
}
}
else {
echo "<p>No hay ninguna gráfica para mostrar</p>"; }
但我不喜欢这种方法,因为如果有人 "know" 我的路径可以访问图表。
PD:我是 rrdtool 的新手,我只是按照 oetiker 网站上的文档制作了图表。
解决方案是在初始化数据库时添加以下参数:
RRA:AVERAGE:0.5:1:600 \
RRA:AVERAGE:0.5:6:700 \
RRA:AVERAGE:0.5:24:775 \
RRA:AVERAGE:0.5:288:797 \
RRA:MAX:0.5:1:600 \
RRA:MAX:0.5:6:700 \
RRA:MAX:0.5:24:775 \
RRA:MAX:0.5:288:797
我在绘制 rrdtool 时遇到了一个问题,但并非总是如此。
我会尽力解释。 我有 2 个数据库(data1.rrd 和 data2.rrd),我绘制了 1h、12h、24h、1w、1m 和 1y 的图表,但由于某些原因,有时图表只显示 10 小时的时间流逝。
我初始化数据库如下:
${rrdtool} create ${rrd_dir}/temperatures.rrd \
--step ${step} \
DS:temp_cpd:GAUGE:120:0:U \
DS:temp_cpd_pecera:GAUGE:120:0:U \
DS:temp_cmts_catv:GAUGE:120:0:U \
RRA:AVERAGE:0.5:1:600
轮询器:
$rrdtool update ${rrd_file} --template temp_cpd:temp_cpd_pecera:temp_cmts_catv N:${temp_cpd}:${temp_cpd_pecera}:${temp_cmts_catv}
图表:
$rrdtool graph ${graph_dir}/temperatures-${start}.png \
--height=120 \
--width=500 \
--rigid \
--start -${start} \
--end now \
--watermark "`date +'%Y-%m-%d %H:%M - Radu Radu'`" \
--imgformat=PNG \
--title="${graph_desc}" \
-w 600 -h 200 \
--alt-autoscale-max \
--lower-limit 18 \
--vertical-label "Temperatura (ºC)" \
TEXTALIGN:left \
DEF:temp_cpd=${rrd_file}:temp_cpd:AVERAGE \
DEF:temp_cpd_pecera=${rrd_file}:temp_cpd_pecera:AVERAGE \
DEF:temp_cmts_catv=${rrd_file}:temp_cmts_catv:AVERAGE \
CDEF:ok_cpd=temp_cpd,100,/ \
CDEF:ok_cpd_pecera=temp_cpd_pecera,100,/ \
CDEF:ok_cmts_catv=temp_cmts_catv,100,/ \
LINE1:ok_cpd#ff0000:'CPD\t\t\t' \
GPRINT:ok_cpd:LAST:'Actual\:%6.2lf ºC' \
GPRINT:ok_cpd:AVERAGE:'Promedio\:%6.2lf ºC' \
GPRINT:ok_cpd:MAX:'Máximo\:%6.2lf ºC\n' \
LINE1:ok_cpd_pecera#00ff00:'CPD Pecera\t\t' \
GPRINT:ok_cpd_pecera:LAST:'Actual\:%6.2lf ºC' \
GPRINT:ok_cpd_pecera:AVERAGE:'Promedio\:%6.2lf ºC' \
GPRINT:ok_cpd_pecera:MAX:'Máximo\:%6.2lf ºC\n' \
LINE1:ok_cmts_catv#0000ff:'CMTS CATV\t\t' \
GPRINT:ok_cmts_catv:LAST:'Actual\:%6.2lf ºC' \
GPRINT:ok_cmts_catv:AVERAGE:'Promedio\:%6.2lf ºC' \
GPRINT:ok_cmts_catv:MAX:'Máximo\:%6.2lf ºC\n' \
轮询器运行每分钟执行一次温度采集命令。
另一个问题,我可以将图形轮询器的输出重定向到标准输出,然后在 php 循环中打印内容吗?因为现在我将 *.png 保存在 /graficas/FREQUENCY/HOST_NAME-GRAPH_NAME-INDEX.png 中,然后按如下方式访问它:
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "
<div class= 'graphSize' style='float:left'>
<a href='?page=GraphDetail&graph_id=".$row['graph_id']."&graph_desc=".$row['graph_desc']."'><img style='width:100%' src='/graficas/".$freq."/".$row['graph_name']."' onload='refreshIt(this)'></img></a>
</div>";
}
}
else {
echo "<p>No hay ninguna gráfica para mostrar</p>"; }
但我不喜欢这种方法,因为如果有人 "know" 我的路径可以访问图表。
PD:我是 rrdtool 的新手,我只是按照 oetiker 网站上的文档制作了图表。
解决方案是在初始化数据库时添加以下参数:
RRA:AVERAGE:0.5:1:600 \
RRA:AVERAGE:0.5:6:700 \
RRA:AVERAGE:0.5:24:775 \
RRA:AVERAGE:0.5:288:797 \
RRA:MAX:0.5:1:600 \
RRA:MAX:0.5:6:700 \
RRA:MAX:0.5:24:775 \
RRA:MAX:0.5:288:797