Graph RRDTool给我一张空白图表

Graph RRDTool给我一张空白图表,graph,rrdtool,rrd,Graph,Rrdtool,Rrd,我一直试图通过反复试验和研究来实现这一目标 rrdtool create attempt_db.rrd --start 1435125034 --step=10 DS:attempts:GAUGE:600:0:1000 RRA:AVERAGE:0.5:1:24 rrdtool update attempt_db.rrd <time unixtime>:<number> rrdtool graph latency.png -a PNG -w 7850 -h 240

我一直试图通过反复试验和研究来实现这一目标

rrdtool create attempt_db.rrd --start  1435125034 --step=10 DS:attempts:GAUGE:600:0:1000 RRA:AVERAGE:0.5:1:24

rrdtool update attempt_db.rrd  <time unixtime>:<number>

rrdtool graph latency.png -a PNG -w 7850 -h 240 --slope-mode -u 2000
--vertical-label "attempts" DEF:attempts=attempt_db.rrd:attempts:MAX LINE1:attempts
必须将1、2等相加才能得到小时费率。它们表示恰好在该时间发生的事件数

我有一个700k记录的mysql数据库。平均流量为每小时35。 我希望将每小时的事件汇总为一个数据点并绘制图表。有时每秒会发生多个事件,因此必须对事件总数进行合计

我也希望能够图形作为一个单独的线和图形上的颜色每个月

尽管尝试了数百次,我得到的只是一张空白的图表

更新:

rrdtool create attempt_db.rrd --step=60  --start   1435727683 DS:attempts:ABSOLUTE:600:0:1000     RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:60:2000

rrdtool graph latency.png -a PNG -w 7850 -h 240 --slope-mode -u 200 --vertical-label "attempts" DEF:attempts=attempt_db.rrd:attempts:MAX LINE1:attempts
插入数据:

mysql -u user -ppassword db -e "select concat(oob_time_sec,\":\",count(*)) from ulog2 where oob_time_sec between unix_timestamp(\"2015-07-01 00:00:00\") and unix_timestamp(\"2015-07-14 23:59:59\") group by oob_time_sec  order by oob_time_sec  " |xargs -n1  rrdtool update attempt_db.rrd
这里是访问价值两周的数据。
这里有几个问题

首先,您的RRD创建肯定是错误的。看起来您保存数据的时间不够长,并且没有定义任何摘要RRA

其次,您没有告诉我们数据样本,因此我们无法验证它们是否在正确的范围内。(更新:现在我有了数据样本)

第三,graph命令没有指定时间窗口,因此没有显示包含数据的时间窗口。您的直线指令中也没有指定颜色,因此不会绘制直线

最后,从提供实际数据的后期更新中,我看到样本间隔通常大于心跳,因此数据被拒绝。您将需要增加心跳(DS定义中的600),并且可能还需要在稍后的RRA定义中增加XFF设置(0.5可能会增加到0.9)

所以,RRD的定义。您的定义指定了10秒的步长,数据上有600秒的心跳。然后,定义了一个RRA,设置为1cdp=1pdp,只有24行,这意味着它只有4分钟长。是的,您将在4分钟后丢弃所有数据,因此将永远无法获得足够的数据进行一个小时的汇总

注:

  • cdp==合并数据点。在RRA中的一次争吵
  • pdp==主要数据点。来自DS的时间标准化样本
  • DS==数据源,实际样本
  • RRA==循环存档;存储标准化、合并数据的位置
  • XFF==在CDP变为未知之前,哪些数据部分是未知的
  • Heartbeat==样本变为未知之前样本之间的间隔时间
因为你说你每小时(平均)有35个样本,这意味着它们大约每2分钟一次。因此,10秒的步长太小了,1分钟就可以了。10分钟的心跳可能太大了-5分钟应该可以-但是现在让我们坚持10分钟,因为您没有指定数据样本的计时有多不规则

然后,您需要每小时汇总一次,因此您需要额外的1cdp=60pdp RRA,其中有足够的行用于一个图形——比方说200行,这将覆盖一周,但您可能需要更多。这是因为1ppp=1step=1分钟,所以我们需要60pdp为cdp留出一小时

那么,试试这个:

rrdtool创建尝试\u db.rrd--步骤=60秒:尝试次数:仪表:600:0:1000\
RRA:平均值:0.5:1:1440 RRA:平均值:0.5:60:200

这设置了2个RRA-第一个是1天的RRA,将数值保持在1分钟的精度;第二个是一周,滚动到每小时的平均值。我们有10分钟的心跳,所以只要您的数据至少经常到达,就不会有任何间隔

接下来要记住的是,您的数据需要以递增的时间顺序添加到RRD中,并且您需要输入至少62分钟的连续样本,然后才能看到每小时摘要RRA中的任何内容

要显示该行,请使用
LINE1:attempts#ff0000:attempts
获得漂亮的红线和图例

处理好所有这些,您应该开始看到一些图形出现——前提是在graph命令中使用
--start
--end
来指定包含数据的同一时间窗口

现在,在同一张图上得到不同的月份有点复杂。首先,您需要大大扩展第二个RRA的规模——从200(约一周)扩展到4500(约6个月)。接下来,在调用“RRD Graph”函数以-n*28*24*3600秒的时间偏移量定义多行时,需要使用时间偏移量(为了更好地进行比较,我建议使用周的倍数,而不是日历月的倍数,但您可以使用任何您想要的)。您将使用额外的
DEF
:start
:end
选项来执行此操作。然后将它们作为单独的线绘制在图表上。有关更多信息,请参阅

因此,作为最后一个总结,基于原始命令:

rrdtool create attempt_db.rrd --step=60  --start   1435727683 \
  DS:attempts:ABSOLUTE:3600:0:1000     \
  RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.9:60:2000

rrdtool graph latency.png -a PNG -w 7850 -h 240 --slope-mode -u 200 \
  --start 1435727683 --end 1438404606 \
  --vertical-label "attempts" \
  DEF:attemptrate=attempt_db.rrd:attempts:MAX \
  "CDEF:attempts=attemptrate,STEPWIDTH,*" LINE1:attempts#ff0000:Attempts

我这样做了,并提供了数千条记录,而我的图表仍然是空白的。我添加了您想要的数据样本。要允许输入较早的记录,还需要从1435125030开始。您正在以大约2015年6月的日期启动RRD。。。然后输入2017年5月19日的数据。好的,很公平,虽然不能在更新中使用十进制时间,但必须使用整数。但是,图形命令没有指定--start或--end,因此默认情况下它将使用
--end=now
--start='end-1day'
。当然,在这个时间窗口中没有数据。尝试使用
--start=1495170017--end='start+1day'
,然后图形时间窗口应与数据时间窗口相对应。哦,您现在还说希望将样本相加以获得小时费率,而不是平均值。这是一个完全不同的事情,因为RRDTool使用每秒的速率。您不应该使用仪表类型,而应该使用绝对值,并且在显示时,将存储的值乘以显示前的步长。我将开始时间更新为1435727683或2015-07-01 00:14:43,并将数据集更改为匹配。将值合并为整秒。没有c
rrdtool create attempt_db.rrd --step=60  --start   1435727683 \
  DS:attempts:ABSOLUTE:3600:0:1000     \
  RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.9:60:2000

rrdtool graph latency.png -a PNG -w 7850 -h 240 --slope-mode -u 200 \
  --start 1435727683 --end 1438404606 \
  --vertical-label "attempts" \
  DEF:attemptrate=attempt_db.rrd:attempts:MAX \
  "CDEF:attempts=attemptrate,STEPWIDTH,*" LINE1:attempts#ff0000:Attempts