24-hour heatmap / histogram of n Days (data source- graphite / Whisper DB)

Hi, (running grafana v7.0.3)
I have data, every 2 minutes of “% disk busy” for a few HDDs, going into Whisper DB.
(link pastebin of raw data exported as csv:)
(0% = idle 100%= full load)

Im trying to get a heatmap (or histogram) that shows me which hours of the day, on average, have the most activity , across a 30d timeframe (30days for example).

A visualization similar to this is what im aiming for:
(ie this would help me answer, at 6am average disk busy is 9%, over the prior 30 days- so that would be a good time to run a disk intensive cron job)

Everything i find on the web about this uses functions from InfluxDB or Promethius, however im using WhisperDB , so is this not possible in my case?

(i thought that Summarize() or maybe Timestack() + avgseries could do it for me, but it does not appear to)

any ideas on how i can get this? (or is this even possible w grafana + whisperDB as the datasource?) thanks!

Have you looked at the Carpet plot plugin. It puts the hour of the day on the Y axis, and the date on the X axis, while averaging values in each hour.

I should note that the carpet plot has been unmaintained for the last three years (though still very popular). I’ve been working on migrating the carpet plot plugin to the new plugin platform in Grafana 7.0. You can check it out here: https://github.com/marcusolsson/grafana-hourly-heatmap-panel

1 Like

Thanks for your reply marcus, and i very much appreciate your efforts on migration of carpet plot to v7 (its a very useful plugin, and i will follow your github!).

I actually have been using the carpet plot plugin, and it almost does what im looking for, however it does not show “only 1x days worth of hourly averages” across any “interval/time-frame”.

What i mean is if i set the grafana interval to 7 days, carpet plot’s X-axis will show all 7 days, when what im looking for is the X-axis to always show 1 day , and each hour would be an average of that hour over the prior 7 days (or whatever number of days the interval is set to).

for example, if i set the grafana interval/timeframe to 3x days, the carpet plot’s X-axis should still just be one day, but each of the 24x 1-hour “bins” would be an average of that hour for the past 3 days.

Here is an example
(assume grafana interval= may3 to may6 , so 72 hours total) on the carpet plot viz:
1am would be the average of 1am on may3, 1am on may4, 1am on may6
2am would be the average of 2am on may3, 2am on may4, 2am on may6

11pm would be the average of 11pm on may3, 11pm on may4, 11pm on may6

I hope im explaining that well, if not let me know and i can give more examples.

(i have found others asking my same question but with no answer, or no replies). thanks again

I see! Indeed that’s not supported by either the carpet plot or the hourly heatmap plugin. I think it’s a cool idea for a panel. I might consider adding it as a feature to the hourly heatmap if more people would be interested.


ok thanks for confirming that. (i had been thinking that its not possible to do as is).

just so you know, my usecase is trying to see what time of day disk IO is at its least (lowest) on some SANs / Storage Arrays (so can better know when to schedule disk IO intensive jobs).

(and there are other use cases but thats the main one for me) . thanks

1 Like

So has anything come out of this ?
Could really need that feature to show nuber of occurences over hour of day. :slight_smile:
Something like this would be perfect Average per hour - #14 by MarioG - influxdb - InfluxData Community