[prev in list] [next in list] [prev in thread] [next in thread] 

List:       rrd-users
Subject:    Re: [rrd-users] why are there holes in my graphs?
From:       Ryan Kubica <kubicaryan () yahoo ! com>
Date:       2013-04-04 14:26:01
Message-ID: 1365085561.52704.YahooMailNeo () web122606 ! mail ! ne1 ! yahoo ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]




Hi Alan,

Your step size and minimal heartbeat are equal; which means you must insert data no \
longer than exactly 1800 seconds apart.

Double the minimal heartbeat and you should be fine.



________________________________
 From: Alan McKay <alan.mckay@gmail.com>
To: rrd-users <rrd-users@lists.oetiker.ch> 
Sent: Thursday, April 4, 2013 4:04 AM
Subject: Re: [rrd-users] why are there holes in my graphs?
 
Anyone, anyone, Buehler?

On Tue, Apr 2, 2013 at 6:09 PM, Alan McKay <alan.mckay@gmail.com> wrote:
> So I am getting holes, and at first I figured it out why and then I
> tuned the RRD file to fix it but I'm still getting holes.
> This is my graph for my internet speed, and originally I set the upper
> limit on the values to 35 since my connection is a 28Mbit one.   But
> then I had to bump it up to 55 because there were values higher than
> 35, and finally I noticed a few higher than 55 so I bumped it to 100.
> And still getting holes.    So then I set it to U and still got holes,
> so now I put it back to 100 just because.    All using "rrdtool tune"
> and verifying with a data dump.
> 
> http://108.162.170.186/speedtest/
> 
> If I do rrdtool fetch I see this - with a bunch of -nan rows that I
> can't explain
> 
> 1364925600: -nan -nan -nan -nan -nan -nan -nan -nan -nan
> 1364927400: 1.2800000000e+01 2.2320000000e+01 2.7120000000e+01
> 3.3520000000e+01 3.1040000000e+01 4.0240000000e+01 2.6960000000e+01
> 2.7280000000e+01 1.6726000000e+01
> 1364929200: 1.2640088889e+01 2.2160088889e+01 1.5686355556e+01
> 2.2805955556e+01 1.9846222222e+01 3.3523733333e+01 3.5035511111e+01
> 2.4961288889e+01 1.5946433333e+01
> 1364931000: 1.2320177778e+01 5.2143333333e+01 1.4080888889e+01
> 2.3119822222e+01 1.7041555556e+01 3.7837600000e+01 2.5445333333e+01
> 2.9677377778e+01 1.6516682778e+01
> 1364932800: 1.3519333333e+01 1.2102266667e+01 1.7678000000e+01
> 1.0247155556e+01 2.4555822222e+01 1.5452444444e+01 3.6873644444e+01
> 1.2729422222e+01 1.6100231667e+01
> 1364934600: 1.5838711111e+01 2.3273777778e+01 1.1283555556e+01
> 2.3832444444e+01 1.5684933333e+01 3.5428888889e+01 1.2413600000e+01
> 3.5427377778e+01 1.5219489444e+01
> 1364936400: 1.3041555556e+01 6.4493555556e+00 1.3678666667e+01
> 7.5090777778e+00 2.7433466667e+01 9.2945333333e+00 9.7614666667e+00
> 3.4400577778e+01 1.6411337222e+01
> 1364938200: -nan -nan -nan -nan -nan -nan -nan -nan -nan
> 1364940000: -nan -nan -nan -nan -nan -nan -nan -nan -nan
> 1364941800: -nan -nan -nan -nan -nan -nan -nan -nan -nan
> 
> If I take a few of those rows I can grep for them in the log file I
> create which saves a copy of the commands I use to insert into the RRD
> 
> root@userver:~# grep 13649256 /var/log/speedtest/bash/rrdupdate
> 2013-04-02 14:00:02 2013-04-02 14:00:39 rrdtool update
> /var/log/speedtest/speedtest.rrd -t
> ping:500:1000:1500:2000:2500:3000:3500:4000
> 1364925602:16.217:13.84:21.68:16.80:30.08:18.88:41.36:29.52:27.92
> root@userver:~# grep 13649382 !$
> grep 13649382 /var/log/speedtest/bash/rrdupdate
> 2013-04-02 17:30:02 2013-04-02 17:31:26 rrdtool update
> /var/log/speedtest/speedtest.rrd -t
> ping:500:1000:1500:2000:2500:3000:3500:4000
> 1364938202:15.986:8.00:7.34:12.56:9.68:21.36:8.10:24.32:7.14
> root@userver:~# grep 13649400 !$
> grep 13649400 /var/log/speedtest/bash/rrdupdate
> 2013-04-02 18:00:01 2013-04-02 18:01:18 rrdtool update
> /var/log/speedtest/speedtest.rrd -t
> ping:500:1000:1500:2000:2500:3000:3500:4000
> 1364940001:16.857:6.47:14.48:6.97:22.40:6.88:23.28:6.87:21.60
> 
> And I don't see any values there that should be a problem.
> 
> filename = "/var/log/speedtest/speedtest.rrd"
> rrd_version = "0003"
> step = 1800
> last_update = 1364940001
> header_size = 3080
> ds[500].index = 0
> ds[500].type = "GAUGE"
> ds[500].minimal_heartbeat = 1800
> ds[500].min = 0.0000000000e+00
> ds[500].max = 1.0000000000e+02
> ds[500].last_ds = "6.47"
> ds[500].value = 6.4700000000e+00
> ds[500].unknown_sec = 0
> ds[1000].index = 1
> ds[1000].type = "GAUGE"
> ds[1000].minimal_heartbeat = 1800
> ds[1000].min = 0.0000000000e+00
> ds[1000].max = 1.0000000000e+02
> ds[1000].last_ds = "14.48"
> ds[1000].value = 1.4480000000e+01
> ds[1000].unknown_sec = 0
> ds[1500].index = 2
> ds[1500].type = "GAUGE"
> ds[1500].minimal_heartbeat = 1800
> ds[1500].min = 0.0000000000e+00
> ds[1500].max = 1.0000000000e+02
> ds[1500].last_ds = "6.97"
> ds[1500].value = 6.9700000000e+00
> ds[1500].unknown_sec = 0
> ds[2000].index = 3
> ds[2000].type = "GAUGE"
> ds[2000].minimal_heartbeat = 1800
> ds[2000].min = 0.0000000000e+00
> ds[2000].max = 1.0000000000e+02
> ds[2000].last_ds = "22.40"
> ds[2000].value = 2.2400000000e+01
> ds[2000].unknown_sec = 0
> ds[2500].index = 4
> ds[2500].type = "GAUGE"
> ds[2500].minimal_heartbeat = 1800
> ds[2500].min = 0.0000000000e+00
> ds[2500].max = 1.0000000000e+02
> ds[2500].last_ds = "6.88"
> ds[2500].value = 6.8800000000e+00
> ds[2500].unknown_sec = 0
> ds[3000].index = 5
> ds[3000].type = "GAUGE"
> ds[3000].minimal_heartbeat = 1800
> ds[3000].min = 0.0000000000e+00
> ds[3000].max = 1.0000000000e+02
> ds[3000].last_ds = "23.28"
> ds[3000].value = 2.3280000000e+01
> ds[3000].unknown_sec = 0
> ds[3500].index = 6
> ds[3500].type = "GAUGE"
> ds[3500].minimal_heartbeat = 1800
> ds[3500].min = 0.0000000000e+00
> ds[3500].max = 1.0000000000e+02
> ds[3500].last_ds = "6.87"
> ds[3500].value = 6.8700000000e+00
> ds[3500].unknown_sec = 0
> ds[4000].index = 7
> ds[4000].type = "GAUGE"
> ds[4000].minimal_heartbeat = 1800
> ds[4000].min = 0.0000000000e+00
> ds[4000].max = 1.0000000000e+02
> ds[4000].last_ds = "21.60"
> ds[4000].value = 2.1600000000e+01
> ds[4000].unknown_sec = 0
> ds[ping].index = 8
> ds[ping].type = "GAUGE"
> ds[ping].minimal_heartbeat = 1800
> ds[ping].min = 1.0000000000e+00
> ds[ping].max = 1.0000000000e+03
> ds[ping].last_ds = "16.857"
> ds[ping].value = 1.6857000000e+01
> ds[ping].unknown_sec = 0
> 
> --
> "Don't eat anything you've ever seen advertised on TV"
> - Michael Pollan, author of "In Defense of Food"



-- 
"Don't eat anything you've ever seen advertised on TV"
             - Michael Pollan, author of "In Defense of Food"

_______________________________________________
rrd-users mailing list
rrd-users@lists.oetiker.ch
https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users


[Attachment #5 (text/html)]

<html><body><div style="color:#000; background-color:#fff; font-family:arial, \
helvetica, sans-serif;font-size:10pt"><div style="font-family: arial, helvetica, \
sans-serif; font-size: 10pt;"><span><br></span></div><div style="font-family: arial, \
helvetica, sans-serif; font-size: 13px; color: rgb(0, 0, 0); background-color: \
transparent; font-style: normal;">Hi Alan,</div><div style="font-family: arial, \
helvetica, sans-serif; font-size: 13px; color: rgb(0, 0, 0); background-color: \
transparent; font-style: normal;"><br></div><div style="font-family: arial, \
helvetica, sans-serif; font-size: 13px; color: rgb(0, 0, 0); background-color: \
transparent; font-style: normal;">Your step size and minimal heartbeat are equal; \
which means you must insert data no longer than exactly 1800 seconds apart.</div><div \
style="font-family: arial, helvetica, sans-serif; font-size: 13px; color: rgb(0, 0, \
0); background-color: transparent; font-style: normal;"><br></div><div  \
style="font-family: arial, helvetica, sans-serif; font-size: 13px; color: rgb(0, 0, \
0); background-color: transparent; font-style: normal;">Double the minimal heartbeat \
and you should be fine.</div><div style="font-family: arial, helvetica, sans-serif; \
font-size: 13px; color: rgb(0, 0, 0); background-color: transparent; font-style: \
normal;"><br></div><div style="font-family: arial, helvetica, sans-serif; font-size: \
13px; color: rgb(0, 0, 0); background-color: transparent; font-style: \
normal;"><br></div>  <div style="font-family: arial, helvetica, sans-serif; \
font-size: 10pt;"> <div style="font-family: 'times new roman', 'new york', times, \
serif; font-size: 12pt;"> <div dir="ltr"> <font size="2" face="Arial"> <hr size="1">  \
<b><span style="font-weight:bold;">From:</span></b> Alan McKay \
&lt;alan.mckay@gmail.com&gt;<br> <b><span style="font-weight: bold;">To:</span></b> \
rrd-users &lt;rrd-users@lists.oetiker.ch&gt; <br> <b><span style="font-weight:  \
bold;">Sent:</span></b> Thursday, April 4, 2013 4:04 AM<br> <b><span \
style="font-weight: bold;">Subject:</span></b> Re: [rrd-users] why are there holes in \
my graphs?<br> </font> </div> <br> Anyone, anyone, Buehler?<br><br>On Tue, Apr 2, \
2013 at 6:09 PM, Alan McKay &lt;<a ymailto="mailto:alan.mckay@gmail.com" \
href="mailto:alan.mckay@gmail.com">alan.mckay@gmail.com</a>&gt; wrote:<br>&gt; So I \
am getting holes, and at first I figured it out why and then I<br>&gt; tuned the RRD \
file to fix it but I'm still getting holes.<br>&gt; This is my graph for my internet \
speed, and originally I set the upper<br>&gt; limit on the values to 35 since my \
connection is a 28Mbit one.&nbsp; But<br>&gt; then I had to bump it up to 55 because \
there were values higher than<br>&gt; 35, and finally I noticed a few higher than 55 \
so I bumped it to 100.<br>&gt; And still getting holes.&nbsp;  So then I set it to U \
and still got holes,<br>&gt; so now I put it back to 100 just because.&nbsp;  All \
using "rrdtool tune"<br>&gt; and verifying with a data dump.<br>&gt;<br>&gt; \
http://108.162.170.186/speedtest/<br>&gt;<br>&gt; If I do rrdtool fetch I see this - \
with a bunch  of -nan rows that I<br>&gt; can't explain<br>&gt;<br>&gt; 1364925600: \
-nan -nan -nan -nan -nan -nan -nan -nan -nan<br>&gt; 1364927400: 1.2800000000e+01 \
2.2320000000e+01 2.7120000000e+01<br>&gt; 3.3520000000e+01 3.1040000000e+01 \
4.0240000000e+01 2.6960000000e+01<br>&gt; 2.7280000000e+01 1.6726000000e+01<br>&gt; \
1364929200: 1.2640088889e+01 2.2160088889e+01 1.5686355556e+01<br>&gt; \
2.2805955556e+01 1.9846222222e+01 3.3523733333e+01 3.5035511111e+01<br>&gt; \
2.4961288889e+01 1.5946433333e+01<br>&gt; 1364931000: 1.2320177778e+01 \
5.2143333333e+01 1.4080888889e+01<br>&gt; 2.3119822222e+01 1.7041555556e+01 \
3.7837600000e+01 2.5445333333e+01<br>&gt; 2.9677377778e+01 1.6516682778e+01<br>&gt; \
1364932800: 1.3519333333e+01 1.2102266667e+01 1.7678000000e+01<br>&gt; \
1.0247155556e+01 2.4555822222e+01 1.5452444444e+01 3.6873644444e+01<br>&gt; \
1.2729422222e+01 1.6100231667e+01<br>&gt; 1364934600: 1.5838711111e+01 \
2.3273777778e+01 1.1283555556e+01<br>&gt; 2.3832444444e+01  1.5684933333e+01 \
3.5428888889e+01 1.2413600000e+01<br>&gt; 3.5427377778e+01 1.5219489444e+01<br>&gt; \
1364936400: 1.3041555556e+01 6.4493555556e+00 1.3678666667e+01<br>&gt; \
7.5090777778e+00 2.7433466667e+01 9.2945333333e+00 9.7614666667e+00<br>&gt; \
3.4400577778e+01 1.6411337222e+01<br>&gt; 1364938200: -nan -nan -nan -nan -nan -nan \
-nan -nan -nan<br>&gt; 1364940000: -nan -nan -nan -nan -nan -nan -nan -nan \
-nan<br>&gt; 1364941800: -nan -nan -nan -nan -nan -nan -nan -nan -nan<br>&gt;<br>&gt; \
If I take a few of those rows I can grep for them in the log file I<br>&gt; create \
which saves a copy of the commands I use to insert into the RRD<br>&gt;<br>&gt; \
root@userver:~# grep 13649256 /var/log/speedtest/bash/rrdupdate<br>&gt; 2013-04-02 \
14:00:02 2013-04-02 14:00:39 rrdtool update<br>&gt; /var/log/speedtest/speedtest.rrd \
-t<br>&gt; ping:500:1000:1500:2000:2500:3000:3500:4000<br>&gt; \
1364925602:16.217:13.84:21.68:16.80:30.08:18.88:41.36:29.52:27.92<br>&gt;  \
root@userver:~# grep 13649382 !$<br>&gt; grep 13649382 \
/var/log/speedtest/bash/rrdupdate<br>&gt; 2013-04-02 17:30:02 2013-04-02 17:31:26 \
rrdtool update<br>&gt; /var/log/speedtest/speedtest.rrd -t<br>&gt; \
ping:500:1000:1500:2000:2500:3000:3500:4000<br>&gt; \
1364938202:15.986:8.00:7.34:12.56:9.68:21.36:8.10:24.32:7.14<br>&gt; root@userver:~# \
grep 13649400 !$<br>&gt; grep 13649400 /var/log/speedtest/bash/rrdupdate<br>&gt; \
2013-04-02 18:00:01 2013-04-02 18:01:18 rrdtool update<br>&gt; \
/var/log/speedtest/speedtest.rrd -t<br>&gt; \
ping:500:1000:1500:2000:2500:3000:3500:4000<br>&gt; \
1364940001:16.857:6.47:14.48:6.97:22.40:6.88:23.28:6.87:21.60<br>&gt;<br>&gt; And I \
don't see any values there that should be a problem.<br>&gt;<br>&gt; filename = \
"/var/log/speedtest/speedtest.rrd"<br>&gt; rrd_version = "0003"<br>&gt; step = \
1800<br>&gt; last_update = 1364940001<br>&gt; header_size = 3080<br>&gt; \
ds[500].index = 0<br>&gt; ds[500].type = "GAUGE"<br>&gt;  ds[500].minimal_heartbeat = \
1800<br>&gt; ds[500].min = 0.0000000000e+00<br>&gt; ds[500].max = \
1.0000000000e+02<br>&gt; ds[500].last_ds = "6.47"<br>&gt; ds[500].value = \
6.4700000000e+00<br>&gt; ds[500].unknown_sec = 0<br>&gt; ds[1000].index = 1<br>&gt; \
ds[1000].type = "GAUGE"<br>&gt; ds[1000].minimal_heartbeat = 1800<br>&gt; \
ds[1000].min = 0.0000000000e+00<br>&gt; ds[1000].max = 1.0000000000e+02<br>&gt; \
ds[1000].last_ds = "14.48"<br>&gt; ds[1000].value = 1.4480000000e+01<br>&gt; \
ds[1000].unknown_sec = 0<br>&gt; ds[1500].index = 2<br>&gt; ds[1500].type = \
"GAUGE"<br>&gt; ds[1500].minimal_heartbeat = 1800<br>&gt; ds[1500].min = \
0.0000000000e+00<br>&gt; ds[1500].max = 1.0000000000e+02<br>&gt; ds[1500].last_ds = \
"6.97"<br>&gt; ds[1500].value = 6.9700000000e+00<br>&gt; ds[1500].unknown_sec = \
0<br>&gt; ds[2000].index = 3<br>&gt; ds[2000].type = "GAUGE"<br>&gt; \
ds[2000].minimal_heartbeat = 1800<br>&gt; ds[2000].min = 0.0000000000e+00<br>&gt; \
ds[2000].max =  1.0000000000e+02<br>&gt; ds[2000].last_ds = "22.40"<br>&gt; \
ds[2000].value = 2.2400000000e+01<br>&gt; ds[2000].unknown_sec = 0<br>&gt; \
ds[2500].index = 4<br>&gt; ds[2500].type = "GAUGE"<br>&gt; ds[2500].minimal_heartbeat \
= 1800<br>&gt; ds[2500].min = 0.0000000000e+00<br>&gt; ds[2500].max = \
1.0000000000e+02<br>&gt; ds[2500].last_ds = "6.88"<br>&gt; ds[2500].value = \
6.8800000000e+00<br>&gt; ds[2500].unknown_sec = 0<br>&gt; ds[3000].index = 5<br>&gt; \
ds[3000].type = "GAUGE"<br>&gt; ds[3000].minimal_heartbeat = 1800<br>&gt; \
ds[3000].min = 0.0000000000e+00<br>&gt; ds[3000].max = 1.0000000000e+02<br>&gt; \
ds[3000].last_ds = "23.28"<br>&gt; ds[3000].value = 2.3280000000e+01<br>&gt; \
ds[3000].unknown_sec = 0<br>&gt; ds[3500].index = 6<br>&gt; ds[3500].type = \
"GAUGE"<br>&gt; ds[3500].minimal_heartbeat = 1800<br>&gt; ds[3500].min = \
0.0000000000e+00<br>&gt; ds[3500].max = 1.0000000000e+02<br>&gt; ds[3500].last_ds = \
"6.87"<br>&gt; ds[3500].value =  6.8700000000e+00<br>&gt; ds[3500].unknown_sec = \
0<br>&gt; ds[4000].index = 7<br>&gt; ds[4000].type = "GAUGE"<br>&gt; \
ds[4000].minimal_heartbeat = 1800<br>&gt; ds[4000].min = 0.0000000000e+00<br>&gt; \
ds[4000].max = 1.0000000000e+02<br>&gt; ds[4000].last_ds = "21.60"<br>&gt; \
ds[4000].value = 2.1600000000e+01<br>&gt; ds[4000].unknown_sec = 0<br>&gt; \
ds[ping].index = 8<br>&gt; ds[ping].type = "GAUGE"<br>&gt; ds[ping].minimal_heartbeat \
= 1800<br>&gt; ds[ping].min = 1.0000000000e+00<br>&gt; ds[ping].max = \
1.0000000000e+03<br>&gt; ds[ping].last_ds = "16.857"<br>&gt; ds[ping].value = \
1.6857000000e+01<br>&gt; ds[ping].unknown_sec = 0<br>&gt;<br>&gt; --<br>&gt; "Don't \
eat anything you've ever seen advertised on TV"<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; - Michael Pollan, author of "In Defense of Food"<br><br><br><br>-- <br>"Don't \
eat anything you've ever seen advertised on TV"<br>&nbsp; &nbsp; &nbsp; &nbsp;  - \
Michael Pollan, author of "In Defense of  \
Food"<br><br>_______________________________________________<br>rrd-users mailing \
list<br><a ymailto="mailto:rrd-users@lists.oetiker.ch" \
href="mailto:rrd-users@lists.oetiker.ch">rrd-users@lists.oetiker.ch</a><br><a \
href="https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users" \
target="_blank">https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users</a><br><br><br> \
</div> </div>  </div></body></html>



_______________________________________________
rrd-users mailing list
rrd-users@lists.oetiker.ch
https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic